Verzeichnisinhalt in ein Geschachteltes Array einlesen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Verzeichnisinhalt in ein Geschachteltes Array einlesen

    Hallo,

    ich habe ein Streamingsystem gefunden, welches auf Drupal 7 basiert. Es funktioniert problemlos. Jetzt möchte ich es ein wenig für meine Bedürfnisse erweitern. Da ich aber vom Programmieren mit PHP keinerlei Erfahrung habe, möchte ich Euch mal fragen. Vielleicht ist das für Euch das einfachste der Welt, für mich ist es alles ein Buch mit 7 Siegeln :-) (Fast zumindest)

    Ich habe in dem Streamingsystem einen Code gefunden, den ich evtl für meine Zwecke missbrauchen kann. Ich möchte den Inhalt eines Ordners hier in ein Array schreiben. Das schwierige daran ist, dass dieses Array ein ganz bestimmtes Format haben muss, damit Streamode damit was anfangen kann.

    Dies ist der bestehende Code :

    PHP-Code:
    <?php

    /**
     * implements hook_sm_main_menu
     */
    function sm_links_sm_main_menu($type 'content') {
        
      
    //main menu
      
    if ($type=='list') {
        return array(array(
    'description' => 'static video links'));
     

    }
     
      
    $out = array();
      
    $out['KIKA'] = array('url' => 'mms://85.239.122.162/mk3w-3faw-3rqf-enc0-kika?MSWMExt=.asf');
      
    $out['1LIVE diggi'] = array('url' => 'http://www.wdr.de/wdrlive/media/einslivedigi.m3u');
          
      
        return 
    $out;


    }

    function 
    sm_links_sm_get_url($selected) {
      return 
    $selected['url'];
    }

    ?>
    Wenn ich jetzt in dem Ordner mit den Files folgende Dateien liegen habe : 1.ts,2.ts,3.ts usw. Dann müsste ich diese Dateinamen irgendwie in das Array oben im Code bekommen. So dass es dann am Ende so aussieht.
    Der Rest vom Code muss unverändert bleiben.

    PHP-Code:
     $out = array();
      
    $out['1.ts'] = array('url' => 'c:\dbox\1.ts');
      
    $out['2.ts'] = array('url' => 'c:\dbox\2.ts');
      
    $out['3.ts'] = array('url' => 'c:\dbox\3.ts'); 
    Von Hand kann ich das natürlich ohne Probleme machen, aber das Problem ist, dass meine Dbox2 Filme in den Ordner Dbox aufnimmt. So müsste ich ständig die neuen Filme wieder in das Array eintragen.
    Ich nutze das ganze, um mir die Fussball EM in den Urlaub in den USA zu streamen.

    Es wäre echt super, wenn mir da jemand weiterhelfen könnte. Ich weis leider nicht, wie schwer oder einfach diese Anfrage hier ist...

    Lg

    Chris

  • #2
    Auf den ersten Blick sieht das nicht wie der relevante Code aus. Um ein Verzeichnis auszulesen benötigt man man zumindest ein readdir oder scandir oder was weiß ich nicht.

    Peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      Das ist mein Problem, ich weis nicht, welchen Code ich zum Einlesen verwenden muss. Ich kenne schon einige Versionen des Codes zum Einlesen eines Verzeichnisses, nur weis ich nicht, wie ich die eingelesenen Informationen in das Array bekomme.

      Ich habe diesen Code zum Einlesen verwendet

      PHP-Code:
         <?php
      // Öffnet ein Unterverzeichnis mit dem Namen "daten"
      $verzeichnis openDir("daten");
      // Verzeichnis lesen
      while ($file readDir($verzeichnis)) {
       
      // Höhere Verzeichnisse nicht anzeigen!
       
      if ($file != "." && $file != "..") {
       
      // Link erstellen
        
      echo "<a href=\"daten/$file\">$file</a><br>\n";
       }
      }
       
      // Verzeichnis schließen
      closeDir($verzeichnis);
      ?>
      Lg chris

      Kommentar


      • #4
        Drupal(PHP)-Code

        Hallo zusammen,

        ich wollte nur eine kleine Anmerkung machen: Drupal benutzt teilweise eigene Funktions Syntax, dabei werden oft mehrere PHP-Funktionen mit einer Drupal eigenen Funktion versorgt.
        Es ist dann auch zu beachten, dass der Code über das Template-System (Theme) ausgegeben werden muss. Am einfachsten fragst du dazu ausnahmsweise mal im Drupal Center | Deutschsprachige Community nach, ev. bekommst du eine weiterführende Antwort.

        Wenn du english beherrschst, so schau mal unter Drupal - Open Source CMS | drupal.org, da gibt es zu allen Modulen Dokumentationen.

        Hoffe du kriegst das hin ...

        Gruss

        mycat

        Kommentar


        • #5
          Naja, das würde aber nichts daran ändern, dass Drupal auch nur PHP ist und somit mit simplen PHP-Funktionen (Kropff hat schon welche genannt) erweitert werden kann. Grundlagenkenntnisse vorausgesetzt.

          Ohne erkennbaren Ansatz könne wir jedoch leider nur Code vorkauen, aber das wollen hier die wenigsten...

          Kommentar


          • #6
            Es ist nunmal leider so, dass sich nicht eben jeder mit PHP auskennt, und es auch nicht in kurzer Zeit lernen kann. Bin immer davon ausgegangen, dass Foren dafür da sind, damit sich die Leute gegenseitig helfen.

            Aber, das ist ja nicht das Problem, ich habe es einigermassen selber lösen können.

            PHP-Code:
            <?php
            $verzeichnis
            "C:/dbox/"// Pfad zum Verzeichnis Filme
            $filename "sites/all/modules/sm_vcr/sm_vcr.module";
            $handle2 fOpen($filename"w");
            fWrite($handle2"<?php\r\n\r\n/**\r\n * implements hook_sm_main_menu\r\n */\r\nfunction sm_vcr_sm_main_menu(\$type = 'content') {\r\n\r\n  //main menu\r\n");
            fWrite($handle2"  if (\$type=='list') {\r\n    return array(array('description' => 'static video links'));\r\n\r\n\r\n}\r\n\r\n\$out = array();\r\n");
            $handle openDir($verzeichnis); // Verzeichnis öffnen
            while ($datei readDir($handle)) // Verzeichnis auslesen
            {
            if (
            strstr($datei".avi") || strstr($datei".flv") || strstr($datei".mov") || strstr($datei".wmv") || strstr($datei".ts") || strstr($datei".mpg") || strstr($datei".mpeg") || strstr($datei".vob") || strstr($datei".divx") || strstr($datei".mp4") || strstr($datei".asx") || strstr($datei".m3u")) // Filme filtern
            {
            $verzeichnis_datei $verzeichnis $datei// Pfad zur aktuellen Datei
            fWrite($handle2"\$out['$datei'] = array('url' => '$verzeichnis_datei');\r\n"); // Link erstellen
            }
            }
            fWrite($handle2"return \$out;\r\n\r\n\r\n}\r\n"); // 
            fWrite($handle2"function sm_vcr_sm_get_url(\$selected) {\r\n  return \$selected['url'];\r\n}\r\n"); //Funktionen anängen
            fWrite($handle2"?>");
            closeDir($handle); // Verzeichnis schließen
            fClose($handle2);
            Damit erstelle ich einfach das Modul sm_vcr. Ist zwar nicht ganz "sauber" aber zumindest kann ich die Files so einlesen und streamen. Wenn ich auf ne bessere Lösung stosse, werde ich das dann ändern.

            Kommentar

            Lädt...
            X