Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Dateiliste aus FTP Folder und Subfolder auslesen

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Dateiliste aus FTP Folder und Subfolder auslesen

    This topic has been deleted. Only users with topic management privileges can see it.
    • paul53
      paul53 @gcaruso last edited by paul53

      @gcaruso sagte:

      [{'type':'d','name':'video','sticky':false,'rights':{'user':'rwx','group':'rwx','other':'rwx'},'acl':false,'owner':'','group':'*','size':4096,'date'

      Die Variable list enthält ein Array of objects, wovon nur der Anfang zu sehen ist. Poste bitte das komplette Array (Tab "Log") und teile mit, welche Objekt-Eigenschaften Du angezeigt haben möchtest (name, size, date ?).
      Im gezeigten Log ist ein Directory "video" zu sehen. Du musst also noch einen Pfad mit übergeben, um die Dateien zu sehen. Was kommt bei ?

          c.list('video', function(err, list) {
      
      G 1 Reply Last reply Reply Quote 0
      • G
        gcaruso @paul53 last edited by 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'}]
        
        paul53 2 Replies Last reply Reply Quote 0
        • paul53
          paul53 @gcaruso last edited by

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

          G 1 Reply Last reply Reply Quote 0
          • G
            gcaruso @paul53 last edited by

            @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 Reply Last reply Reply Quote 0
            • paul53
              paul53 @gcaruso last edited by

              @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 1 Reply Last reply Reply Quote 0
              • G
                gcaruso @paul53 last edited by

                @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.

                paul53 1 Reply Last reply Reply Quote 0
                • paul53
                  paul53 @gcaruso last edited by

                  @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 2 Replies Last reply Reply Quote 0
                  • G
                    gcaruso @paul53 last edited by

                    @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 Reply Last reply Reply Quote 0
                    • G
                      gcaruso @paul53 last edited by 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

                      paul53 1 Reply Last reply Reply Quote 0
                      • paul53
                        paul53 @gcaruso last edited by

                        @gcaruso sagte:

                        Hast du eine Idee wie?

                        Nein, mit Vis kenne ich mich nicht aus.

                        G 1 Reply Last reply Reply Quote 0
                        • G
                          gcaruso @paul53 last edited by

                          @paul53
                          OK danke trotzdem

                          E 1 Reply Last reply Reply Quote 0
                          • E
                            Eisbaer721 @gcaruso last edited by

                            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 Reply Last reply Reply Quote 0
                            • First post
                              Last post

                            Support us

                            ioBroker
                            Community Adapters
                            Donate

                            813
                            Online

                            31.8k
                            Users

                            80.0k
                            Topics

                            1.3m
                            Posts

                            3
                            13
                            1168
                            Loading More Posts
                            • Oldest to Newest
                            • Newest to Oldest
                            • Most Votes
                            Reply
                            • Reply as topic
                            Log in to reply
                            Community
                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                            The ioBroker Community 2014-2023
                            logo