Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. Dateiliste aus FTP Folder und Subfolder auslesen

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    1.6k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    848

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.1k

Dateiliste aus FTP Folder und Subfolder auslesen

Geplant Angeheftet Gesperrt Verschoben JavaScript
13 Beiträge 3 Kommentatoren 1.6k Aufrufe 3 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • G gcaruso

    @paul53
    Hallo Paul, erstmal danke für die schnelle Antwort.
    Wenn ich 'video' als Directory eingebe dann kommt die nächste Subdirectory als 'name': '2020'. Ich möchte aber nicht die Directorys auflisten sondern die mp4 Dateien.

    Ich erkläre die Hintergründe:

    Ich habe ein Reolink IP Kamera die Videodatein (mp4) auf mein FTP Server (proxmox VM) sichert. Jeden tag wird von der Kamera ein neue Subdirectory erzeugt (kann nicht über Einstellungen ändern) mit dem Tagen Zahl. Also die Directory Struktur sieht so aus:
    video-> 2020-> 08-> 10 (video->Jahr->Monat->Tag). Die mp4 werden bei erkannte Bewegung generient (Aufgenommen).
    Ich habe auf dem FTP Server ein crontab erstellt der täglich eine bash Datei startet und Dateien die älter als 21 Tage sind automatisch löscht sowie leere Directorys:

    #!/bin/bash
    #
    find /var/www/********/video -mtime +21 -type f  -exec rm -rf {} \;
    find /var/www/********/video -empty -type d -delete
    
    exit 0
    
    

    Also die mp4 Dateien von 21 Tage sind in verschiedene Subdirectorys verteilt und ich würde sie gerne in ein Datenpunkt in ioBroker aufgelistet haben. Da die ältere Dateien jeden Tag um Mitternacht gelöscht werden, sollte sich auch die liste um 01:00 Uhr Aktualisieren.
    Die Dateien werden mit JahrMonatTagStundenMinutenSekunden.mp4 gespeichert (z.Bs. 20200810172600.mp4).
    Am beste wäre eine Tabelle die ich dann missbrauchen kann und in VIS durch klicken auf die Dateiname den Video öffnen kann.

    Hier das komplette Array:

    2020-08-10 17:34:49.807 - info: javascript.1 (17797) Start javascript script.js.FTP_Auslesen
    2020-08-10 17:34:49.811 - info: javascript.1 (17797) script.js.FTP_Auslesen: registered 0 subscriptions and 0 schedules
    2020-08-10 17:34:49.842 - info: javascript.1 (17797) script.js.FTP_Auslesen: [{'type':'d','name':'2020','sticky':false,'rights':{'user':'rwx','group':'rx','other':'rx'},'acl':false,'owner':'******','group':'********','size':4096,'date':'2020-07-31T20:10:00.000Z'},{'type':'-','name':'folder_listing.txt','sticky':false,'rights':{'user':'rw','group':'r','other':'r'},'acl':false,'owner':'0','group':'0','size':1117492,'date':'2020-08-09T07:26:00.000Z'}]
    
    paul53P Offline
    paul53P Offline
    paul53
    schrieb am zuletzt editiert von
    #4

    @gcaruso
    Was enthält die Datei video/folder_listing.txt ?

    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
    Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

    G 1 Antwort Letzte Antwort
    0
    • paul53P paul53

      @gcaruso
      Was enthält die Datei video/folder_listing.txt ?

      G Offline
      G Offline
      gcaruso
      schrieb am zuletzt editiert von
      #5

      @paul53
      Keine Ahnung. Ich weiß nicht wo diese Datei gespeichert wird.
      Hier mein Script:

      var Client = require('ftp');
      var fs = require('fs');
       
        var c = new Client();
        c.on('ready', function() {
          c.list(function(err, list) {
            if (err) throw err;
            console.log(list);
            c.end();
          });
        });
        // connect to localhost:21
      c.connect({
        host: "192.168.***.***",
        user: "*************",
        password: "**************"
      });
      
      1 Antwort Letzte Antwort
      0
      • G gcaruso

        @paul53
        Hallo Paul, erstmal danke für die schnelle Antwort.
        Wenn ich 'video' als Directory eingebe dann kommt die nächste Subdirectory als 'name': '2020'. Ich möchte aber nicht die Directorys auflisten sondern die mp4 Dateien.

        Ich erkläre die Hintergründe:

        Ich habe ein Reolink IP Kamera die Videodatein (mp4) auf mein FTP Server (proxmox VM) sichert. Jeden tag wird von der Kamera ein neue Subdirectory erzeugt (kann nicht über Einstellungen ändern) mit dem Tagen Zahl. Also die Directory Struktur sieht so aus:
        video-> 2020-> 08-> 10 (video->Jahr->Monat->Tag). Die mp4 werden bei erkannte Bewegung generient (Aufgenommen).
        Ich habe auf dem FTP Server ein crontab erstellt der täglich eine bash Datei startet und Dateien die älter als 21 Tage sind automatisch löscht sowie leere Directorys:

        #!/bin/bash
        #
        find /var/www/********/video -mtime +21 -type f  -exec rm -rf {} \;
        find /var/www/********/video -empty -type d -delete
        
        exit 0
        
        

        Also die mp4 Dateien von 21 Tage sind in verschiedene Subdirectorys verteilt und ich würde sie gerne in ein Datenpunkt in ioBroker aufgelistet haben. Da die ältere Dateien jeden Tag um Mitternacht gelöscht werden, sollte sich auch die liste um 01:00 Uhr Aktualisieren.
        Die Dateien werden mit JahrMonatTagStundenMinutenSekunden.mp4 gespeichert (z.Bs. 20200810172600.mp4).
        Am beste wäre eine Tabelle die ich dann missbrauchen kann und in VIS durch klicken auf die Dateiname den Video öffnen kann.

        Hier das komplette Array:

        2020-08-10 17:34:49.807 - info: javascript.1 (17797) Start javascript script.js.FTP_Auslesen
        2020-08-10 17:34:49.811 - info: javascript.1 (17797) script.js.FTP_Auslesen: registered 0 subscriptions and 0 schedules
        2020-08-10 17:34:49.842 - info: javascript.1 (17797) script.js.FTP_Auslesen: [{'type':'d','name':'2020','sticky':false,'rights':{'user':'rwx','group':'rx','other':'rx'},'acl':false,'owner':'******','group':'********','size':4096,'date':'2020-07-31T20:10:00.000Z'},{'type':'-','name':'folder_listing.txt','sticky':false,'rights':{'user':'rw','group':'r','other':'r'},'acl':false,'owner':'0','group':'0','size':1117492,'date':'2020-08-09T07:26:00.000Z'}]
        
        paul53P Offline
        paul53P Offline
        paul53
        schrieb am zuletzt editiert von
        #6

        @gcaruso sagte:

        die Directory Struktur sieht so aus: video-> 2020-> 08-> 10 (video->Jahr->Monat->Tag).

        Daraus kann man doch eine Pfadangabe für die letzten 20 Tage konstruieren ? Dich interessieren nur die MP4-Dateien ?

        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
        Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

        G 1 Antwort Letzte Antwort
        0
        • paul53P paul53

          @gcaruso sagte:

          die Directory Struktur sieht so aus: video-> 2020-> 08-> 10 (video->Jahr->Monat->Tag).

          Daraus kann man doch eine Pfadangabe für die letzten 20 Tage konstruieren ? Dich interessieren nur die MP4-Dateien ?

          G Offline
          G Offline
          gcaruso
          schrieb am zuletzt editiert von
          #7

          @paul53
          Paul du bist ein Genie. Ich habe die txt Datei gefunden. Wird in den Ordner 'video' gespeichert.

          Hier den inhalt:
          folder_listing.txt

          Ja ich brauche nur die mp4 als liste die ich im VIS anzeigen kann und einzel auswehlen.

          paul53P 1 Antwort Letzte Antwort
          0
          • G gcaruso

            @paul53
            Paul du bist ein Genie. Ich habe die txt Datei gefunden. Wird in den Ordner 'video' gespeichert.

            Hier den inhalt:
            folder_listing.txt

            Ja ich brauche nur die mp4 als liste die ich im VIS anzeigen kann und einzel auswehlen.

            paul53P Offline
            paul53P Offline
            paul53
            schrieb am zuletzt editiert von
            #8

            @gcaruso sagte:

            Hier den inhalt:

            Bietet der Inhalt nicht das, was Du suchst ? Muss natürlich für eine Anzeige in Vis noch aufbereitet werden.

            Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
            Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

            G 2 Antworten Letzte Antwort
            0
            • paul53P paul53

              @gcaruso sagte:

              Hier den inhalt:

              Bietet der Inhalt nicht das, was Du suchst ? Muss natürlich für eine Anzeige in Vis noch aufbereitet werden.

              G Offline
              G Offline
              gcaruso
              schrieb am zuletzt editiert von
              #9

              @paul53
              Ja genau. Das ist was ich brauche. Ich werde jetzt versuchen die Datei aufzubereiten. Onkel google hilft bestimmt.
              Nochmal vielen vielen Dank für deine Hilfe Paul.

              1 Antwort Letzte Antwort
              0
              • paul53P paul53

                @gcaruso sagte:

                Hier den inhalt:

                Bietet der Inhalt nicht das, was Du suchst ? Muss natürlich für eine Anzeige in Vis noch aufbereitet werden.

                G Offline
                G Offline
                gcaruso
                schrieb am zuletzt editiert von gcaruso
                #10

                @paul53
                Hallo Paul, ich habe es soweit hinbekommen das ich die liste auf ein String objekt (liste als json format) in iobroker regelmäßig speichere und in VIS durch ein json table widjet zeigen lasse.
                Ich würde jetzt gerne haben das beim klicken auf eine Zeil den "Path String" vom gedruckte Zeil in eine String Objekt geschrieben wird. Hast du eine Idee wie?
                Danke für deine Hilfe.

                So sieht die Liste aus:

                [{"Path":"var/www/*****/video/2020/07/23/#####_01_20200723053600.mp4","Daum":"23.07.2020 05:36:00"},{"Path":"var/www/*****/video/2020/07/23/#####_01_20200723055209.mp4","Daum":"23.07.2020 05:52:09"},{"Path":"var/www/*****/video/2020/07/23/#####_01_20200723055825.mp4","Daum":"23.07.2020 05:58:25"},{"Path":"var/www/*****/video/2020/07/23/#####_01_20200723061428.mp4","Daum":"23.07.2020 06:14:28"},{"Path":"var/www/*****/video/2020/07/23/#####_01_20200723062306.mp4","Daum":"23.07.2020 06:23:06"},{"Path":"var/www/*****/video/2020/07/23/#####_01_20200723063638.mp4","Daum":"23.07.2020 06:36:38"},{"Path":"var/www/*****/video/2020/07/23/#####_01_20200723063730.mp4","Daum":"23.07.2020 06:37:30"},{"Path":"var/www/*****/video/2020/07/23/#####_01_20200723063804.mp4","Daum":"23.07.2020 06:38:04"},{"Path":"var/www/*****/video/2020/07/23/#####_01_20200723064410.mp4","Daum":"23.07.2020 06:44:10"},{"Path":"var/www/*****/video/2020/07/23/#####_01_20200723065834.mp4","Daum":"23.07.2020 06:58:34"},{"Path":"var/www/*****/video/2020/07/23/#####_01_20200723070022.mp4","Daum":"23.07.2020 07:00:22"},{"Path":"var/www/*****/video/2020/07/23/#####_01_20200723070458.mp4","Daum":"23.07.2020 07:04:58"},{"Path":"var/www/*****/video/2020/07/23/#####_01_20200723071824.mp4","Daum":"23.07.2020 07:18:24"},{"Path":"var/www/*****/video/2020/07/23/#####_01_20200723072833.mp4","Daum":"23.07.2020 07:28:33"},{"Path":"var/www/*****/video/2020/07/23/#####_01_20200723073011.mp4","Daum":"23.07.2020 07:30:11"},{"Path":"var/www/*****/video/2020/07/23/#####_01_20200723074134.mp4","Daum":"23.07.2020 07:41:34"},{"Path":"var/www/*****/video/2020/07/23/#####_01_20200723074207.mp4","Daum":"23.07.2020 07:42:07"},{"Path":"var/www/*****/video/2020/07/23/#####_01_20200723075437.mp4","Daum":"23.07.2020 07:54:37"},{"Path":"var/www/*****/video/2020/07/23/#####_01_20200723080158.mp4","Daum":"23.07.2020 08:01:58"},{"Path":"var/www/*****/video/2020/07/23/#####_01_20200723080340.mp4","Daum":"23.07.2020 08:03:40"},{"Path":"var/www/*****/video/2020/07/23/#####_01_20200723080432.mp4","Daum":"23.07.2020 08:04:32"},{"Path":"var/www/*****/video/2020/07/23/#####_01_20200723080626.mp4","Daum":"23.07.2020 08:06:26"},{"Path":"var/www/*****/video/2020/07/23/#####_01_20200723080714.mp4","Daum":"23.07.2020 08:07:14"},{"Path":"var/www/*****/video/2020/07/23/#####_01_20200723082433.mp4","Daum":"23.07.2020 08:24:33"},{"Path":"var/www/*****/video/2020/07/23/#####_01_20200723082849.mp4","Daum":"23.07.2020 08:28:49"},{"Path":"var/www/*****/video/2020/07/23/#####_01_20200723084243.mp4","Daum":"23.07.2020 08:42:43"},]
                

                und so wird angezeigt:
                json_table.PNG

                paul53P 1 Antwort Letzte Antwort
                0
                • G gcaruso

                  @paul53
                  Hallo Paul, ich habe es soweit hinbekommen das ich die liste auf ein String objekt (liste als json format) in iobroker regelmäßig speichere und in VIS durch ein json table widjet zeigen lasse.
                  Ich würde jetzt gerne haben das beim klicken auf eine Zeil den "Path String" vom gedruckte Zeil in eine String Objekt geschrieben wird. Hast du eine Idee wie?
                  Danke für deine Hilfe.

                  So sieht die Liste aus:

                  [{"Path":"var/www/*****/video/2020/07/23/#####_01_20200723053600.mp4","Daum":"23.07.2020 05:36:00"},{"Path":"var/www/*****/video/2020/07/23/#####_01_20200723055209.mp4","Daum":"23.07.2020 05:52:09"},{"Path":"var/www/*****/video/2020/07/23/#####_01_20200723055825.mp4","Daum":"23.07.2020 05:58:25"},{"Path":"var/www/*****/video/2020/07/23/#####_01_20200723061428.mp4","Daum":"23.07.2020 06:14:28"},{"Path":"var/www/*****/video/2020/07/23/#####_01_20200723062306.mp4","Daum":"23.07.2020 06:23:06"},{"Path":"var/www/*****/video/2020/07/23/#####_01_20200723063638.mp4","Daum":"23.07.2020 06:36:38"},{"Path":"var/www/*****/video/2020/07/23/#####_01_20200723063730.mp4","Daum":"23.07.2020 06:37:30"},{"Path":"var/www/*****/video/2020/07/23/#####_01_20200723063804.mp4","Daum":"23.07.2020 06:38:04"},{"Path":"var/www/*****/video/2020/07/23/#####_01_20200723064410.mp4","Daum":"23.07.2020 06:44:10"},{"Path":"var/www/*****/video/2020/07/23/#####_01_20200723065834.mp4","Daum":"23.07.2020 06:58:34"},{"Path":"var/www/*****/video/2020/07/23/#####_01_20200723070022.mp4","Daum":"23.07.2020 07:00:22"},{"Path":"var/www/*****/video/2020/07/23/#####_01_20200723070458.mp4","Daum":"23.07.2020 07:04:58"},{"Path":"var/www/*****/video/2020/07/23/#####_01_20200723071824.mp4","Daum":"23.07.2020 07:18:24"},{"Path":"var/www/*****/video/2020/07/23/#####_01_20200723072833.mp4","Daum":"23.07.2020 07:28:33"},{"Path":"var/www/*****/video/2020/07/23/#####_01_20200723073011.mp4","Daum":"23.07.2020 07:30:11"},{"Path":"var/www/*****/video/2020/07/23/#####_01_20200723074134.mp4","Daum":"23.07.2020 07:41:34"},{"Path":"var/www/*****/video/2020/07/23/#####_01_20200723074207.mp4","Daum":"23.07.2020 07:42:07"},{"Path":"var/www/*****/video/2020/07/23/#####_01_20200723075437.mp4","Daum":"23.07.2020 07:54:37"},{"Path":"var/www/*****/video/2020/07/23/#####_01_20200723080158.mp4","Daum":"23.07.2020 08:01:58"},{"Path":"var/www/*****/video/2020/07/23/#####_01_20200723080340.mp4","Daum":"23.07.2020 08:03:40"},{"Path":"var/www/*****/video/2020/07/23/#####_01_20200723080432.mp4","Daum":"23.07.2020 08:04:32"},{"Path":"var/www/*****/video/2020/07/23/#####_01_20200723080626.mp4","Daum":"23.07.2020 08:06:26"},{"Path":"var/www/*****/video/2020/07/23/#####_01_20200723080714.mp4","Daum":"23.07.2020 08:07:14"},{"Path":"var/www/*****/video/2020/07/23/#####_01_20200723082433.mp4","Daum":"23.07.2020 08:24:33"},{"Path":"var/www/*****/video/2020/07/23/#####_01_20200723082849.mp4","Daum":"23.07.2020 08:28:49"},{"Path":"var/www/*****/video/2020/07/23/#####_01_20200723084243.mp4","Daum":"23.07.2020 08:42:43"},]
                  

                  und so wird angezeigt:
                  json_table.PNG

                  paul53P Offline
                  paul53P Offline
                  paul53
                  schrieb am zuletzt editiert von
                  #11

                  @gcaruso sagte:

                  Hast du eine Idee wie?

                  Nein, mit Vis kenne ich mich nicht aus.

                  Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                  Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                  G 1 Antwort Letzte Antwort
                  0
                  • paul53P paul53

                    @gcaruso sagte:

                    Hast du eine Idee wie?

                    Nein, mit Vis kenne ich mich nicht aus.

                    G Offline
                    G Offline
                    gcaruso
                    schrieb am zuletzt editiert von
                    #12

                    @paul53
                    OK danke trotzdem

                    E 1 Antwort Letzte Antwort
                    0
                    • G gcaruso

                      @paul53
                      OK danke trotzdem

                      E Offline
                      E Offline
                      Eisbaer721
                      schrieb am zuletzt editiert von
                      #13

                      Hallo @gcaruso
                      Ich möchte das auch so ähnlich machen wie du.
                      Ich habe auch in ein FTP Verzeichnis meine .mp4 Dateien von der Kamera gespeichert.
                      Leider bin ich nicht so fit in der Programmierung. Das meiste habe ich bisher über Blockly geregelt. :)
                      Könntest du mal mal bitte dein Skript ganz zeigen?
                      Ist das alles?

                      var Client = require('ftp');
                      var fs = require('fs');
                       
                        var c = new Client();
                        c.on('ready', function() {
                          c.list(function(err, list) {
                            if (err) throw err;
                            console.log(list);
                            c.end();
                          });
                        });
                        // connect to localhost:21
                      c.connect({
                        host: "192.168.***.***",
                        user: "*************",
                        password: "**************"
                      });
                      

                      z.B: Wo wird dieser Befehl eingetragen?

                      javascript.1	2020-08-09 10:10:28.895	info	(29206) script.js.FTP_Auslesen: [{'type':'d','name':'video','sticky':false,'rights':{'user':'rwx','group':'rwx','other':'rwx'},'acl':false,'owner':'*********','group':'**********','size':4096,'date'
                      
                      
                      1 Antwort Letzte Antwort
                      0
                      Antworten
                      • In einem neuen Thema antworten
                      Anmelden zum Antworten
                      • Älteste zuerst
                      • Neuste zuerst
                      • Meiste Stimmen


                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      589

                      Online

                      32.6k

                      Benutzer

                      82.1k

                      Themen

                      1.3m

                      Beiträge
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                      ioBroker Community 2014-2025
                      logo
                      • Anmelden

                      • Du hast noch kein Konto? Registrieren

                      • Anmelden oder registrieren, um zu suchen
                      • Erster Beitrag
                        Letzter Beitrag
                      0
                      • Home
                      • Aktuell
                      • Tags
                      • Ungelesen 0
                      • Kategorien
                      • Unreplied
                      • Beliebt
                      • GitHub
                      • Docu
                      • Hilfe