NEWS
Dateinamen in Ordner herausfinden und anzeigen
-
Moin,
habe leider nicht wirklich einen passenden Titel gefunden.
Kurz gesagt, ich möchte meine letzte Aufnahme in einen Ordner mit Telegram versenden. Wie das Senden mit Telegram funktioniert weiß ich. Mir geht es nun darum, die letzte Aufnahme zu identifizieren und den Dateinamen zu bekommen.Ich speichere meine Videos meiner Überwachungskamera mit MotionEye in einen Ordner mit Datum und Uhrzeit als Name.
/motioneye/camera/2019-09-30_17-15-35.mp4 /motioneye/camera/2019-09-30_17-20-01.mp4 /motioneye/camera/2019-09-30_17-33-49.mp4 ...
Ich möchte nun den Namen der letzten Datei in diesen Ordner herausfinden. Ich habe schon überlegt ein extra Bash Skript zu schreiben und mir den Dateinamen dann z.B. in einen Datenpunkt zu schreiben. Würde es aber schöner finden, dass direkt mit Blockly oder als JavaScript Funktion in Blockly einbauen zu können.
Da ich leider kein JS kann hoffe ich das mir jemand weiter helfen kann. -
So müsste das eigentlich funktionieren:
<block xmlns="http://www.w3.org/1999/xhtml" type="exec" id="Eu=H@X}Kfl%J?PfVmus|" x="-212" y="113"> <mutation with_statement="true"></mutation> <field name="WITH_STATEMENT">TRUE</field> <field name="LOG">log</field> <value name="COMMAND"> <shadow type="text" id="lP1U.!KJk|(.Q1te(#o`"> <field name="TEXT">ls /motioneye/camera/ -Art | tail -n 1</field> </shadow> </value> <statement name="STATEMENT"> <block type="debug" id="0pa{7q$$]X=63bq`hGdt"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="n|/o)@)D0*}(%ar_H9;^"> <field name="TEXT"></field> </shadow> <block type="variables_get" id="q[^Q`|m3pIt%jzAEI}qz"> <field name="VAR" id="=p=yxmg}GLf@8PKVjkuf" variabletype="">result</field> </block> </value> </block> </statement> </block>
Den Ordnerpfad noch auf den kompletten Pfad anpassen
result kannst du dann per Telegramm mitsenden.
Gibt aber halt nur die letzte Datei/Ordner aus der erstellt/modifziert wurde, auch wenn es unwahrscheinlich ist könnte es passieren das die Ausgabe nicht zu der Aufnahme passt die du dir per Telegramm zugesendet hast wenn zwischen der Code Abarbeitung eine neuere Datei erstellt worden ist.
Grüße
TeNNo2k5 -
@TeNNo2k5
Vielen Dank. Funktioniert so weit.
Kannst du mir die Argumente erklären? Hab bei Google leider nichts gefunden. Oder hast du eine Seite wo man sich die „erlesen“ kann?
Geht auch eine Auflistung aller files? -
coole art das neuste file zu finden - muss ich mir merken
-
@el_malto sagte in Dateinamen in Ordner herausfinden und anzeigen:
@TeNNo2k5
Vielen Dank. Funktioniert so weit.
Kannst du mir die Argumente erklären? Hab bei Google leider nichts gefunden. Oder hast du eine Seite wo man sich die „erlesen“ kann?
Geht auch eine Auflistung aller files?Die Befehlskombination musste ich auch selber googeln, generell gibt der Befehl
ls
(list directory) den Inhalt eines Ordners aus, das-Art
sind Argumente die Ausgabe anpassen/sortieren. Mit dem gepipten Befehltail -n 1
wird die Ausgabe auf eins begrenzt, also mittail -n 3
würden die letzten drei geänderten Dateien ausgegeben.Weitere Infos:
http://man7.org/linux/man-pages/man1/ls.1.html
http://man7.org/linux/man-pages/man1/tail.1.html -
Altes Thema, aber trotzdem passt hier meine Frage:
Wie kann ich der Telegram-Funktion mitteilen, dass es auf die Variable RESULT (selbstverständlich mit Dateipfad) zugreifen soll?
Der zuvor erstellte Dateiname wird mit dem oben genannten Befehl (ls /opt/iobroker/Cam/ -Art | tail -n 1) ermittelt und in die Debug-Info-Variable RESULT geschrieben. Ich möchte nun den Dateipfad + RESULT als String der Telgram-Funktion übermitteln, damit Telegram das neueste Foto verschickt. So habe ich es aktuell, aber es kommt nichts an:
Wo ist der Fehler?
-
@puls200 wieso diesen Thread wiederbeleben, wenn du doch bereits einen aktuellen Thread dazu aufgemacht hast?
-
@homoran Weil es ein anderes Thema war und die Antwort auf meine Frage hier viel besser gepasst hätte.