NEWS
Vorhandene Unterordner auslesen
-
@mcu said in Vorhandene Unterordner auslesen:
const fs = require("fs"); const path = "/opt/iobroker/iobroker-data/files/vis.0/Slideshow/"; // Funktion: Alle Dateien auslesen function getFilesRecursive(directory) { let fileList = []; try { const entries = fs.readdirSync(directory, { withFileTypes: true }); entries.forEach(entry => { const fullPath = `${directory}/${entry.name}`; if (entry.isFile()) { // Datei hinzufügen fileList.push(fullPath); } else if (entry.isDirectory()) { // Rekursiv Unterordner durchsuchen fileList = fileList.concat(getFilesRecursive(fullPath)); } }); } catch (error) { console.error("Fehler beim Auslesen des Verzeichnisses: "+ error); } return fileList; } // Dateien auslesen let files = getFilesRecursive(path); // Ergebnis ausgeben console.log("Gefundene Dateien: "+ files);
Wie bekomme ich das denn in Blockly rein?
Wenn ich das richtig sehe, werden die Dateien ausgelesen.
Brauche nur die Unterordner. -
@triplex javascript-Funktion
-
@mcu Bei mir im Log wird nichts aufgelistet
-
@triplex Blockly Export
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="*q;iSs`Id_uTF|HmOp/9">source</variable> </variables> <block type="procedures_defcustomreturn" id="wKu17Ue=*dW2?C)*:xXk" x="63" y="63"> <mutation statements="false"> <arg name="source" varid="*q;iSs`Id_uTF|HmOp/9"></arg> </mutation> <field name="NAME">getDirectories</field> <field name="SCRIPT">Y29uc3QgZnMgPSByZXF1aXJlKCJmcyIpOw0KcmV0dXJuIGZzLnJlYWRkaXJTeW5jKHNvdXJjZSwgeyB3aXRoRmlsZVR5cGVzOiB0cnVlIH0pIC8vIFZlcnplaWNobmlzaW5oYWx0IGxlc2VuDQogICAgICAgIC5maWx0ZXIoZGlyZW50ID0+IGRpcmVudC5pc0RpcmVjdG9yeSgpKSAgICAgICAgICAgLy8gTnVyIFZlcnplaWNobmlzc2UgZmlsdGVybg0KICAgICAgICAubWFwKGRpcmVudCA9PiBkaXJlbnQubmFtZSk7ICAgIA==</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> </block> <block type="debug" id="R}c6u[;J@XF+b}wi;AXM" x="63" y="113"> <field name="Severity">info</field> <value name="TEXT"> <shadow type="text" id="`du$H!zBIJ2WI^Qfc{35"> <field name="TEXT">test</field> </shadow> <block type="procedures_callcustomreturn" id="=@|Gp=y[k+v#dp3y8ZpW"> <mutation name="getDirectories"> <arg name="source"></arg> </mutation> <value name="ARG0"> <block type="text" id="dc0u.yT2Fh]yCPy1Z7dr"> <field name="TEXT">/opt/iobroker/iobroker-data/files/0_userdata.0/jarvis/</field> </block> </value> </block> </value> </block> </xml>
-
@mcu Das muss ich dann hinter die andere Funktion hängen?
-
@triplex Ist eine neue Funktion, die alte kann gelöscht werden. Du möchtest ja keine Dateien.
Blockly importieren
-
@mcu Dann bekomme ich im Log folgendes angezeigt.
-
@triplex Dein Verzeichnis eintragen
/opt/iobroker/iobroker-data/files/vis.0/Slideshow/
-
@mcu Immer noch eine Fehlermeldung
-
@triplex Ist slideshow evtl klein geschrieben?
Hast du davor Leerzeichen drin? -
@mcu Nein
-
@triplex Leerzeichen
-
@mcu Wie kommt das denn dahin...LOL...jetzt gehts...danke Dir.
-
@mcu Wie kann ich die Funktion denn über einen Trigger auslösen in Blockly?
Finde da gerade nicht den passenden Block. -
@triplex Kommt darauf an, was ihn auslösen soll?
-
@mcu Im Idealfall wenn ich einen neuen Ordner angelegt habe oder alle x Minuten.
-
@triplex Wird erst ausgeführt, wenn eine Datei hinzugefügt wird. Ein Verzeichnis hinzufügen reicht nicht, ist aber auch nicht normal, da man ja dort auch Dateien einstellt.
Du musst bei Dir für VIS die vis-Dateien in ObjectID (meta) auswählen.
-
@mcu Hab das nicht so ganz verstanden.
Reagiert das Programm dann nicht auf alle Änderungen die unterhalb von von "Vis\0" passieren und nicht nur auf die Änderungen im Ordner "Slideshow"? -
@triplex Also doch verstanden.
statt * -> Slideshow/*