Tags aus mp3-Dateien auslesen

  • ...so! Vollbracht!


    Das Aufschalten auf den neuen Webspace hat über eine Stunde gedauert.


    Jetzt habe ich php 5.6 (eingestellt). Ich kann auch php 5.4 einstellen.


    -----


    Ich habe eine Test-Datei jetzt hier hochgeladen: http://www.lpk.rocks/sides/Test-Songs01.php


    ...und erhalte leider immer noch eine Fehlermeldung...


    Code
    Notice: Undefined index: tags in /webspace/xx/xxxxxxxx/lpk.rocks/sides/Test-Songs01.php on line 19


    ...und der Screenshot sieht so aus:


    html-seminar.de/woltlab/attachment/1067/


    ...in dem mp3-Ordner sind vier mp3-Dateien mit Tags hinterlegt. Alle kann man durch klick auf die entsprechende Leiste im List-Player abspielen, aber leider kann man den Titel nicht lesen und die mp3-Tags werden nach wie vor nicht ausgelesen.


    Hier die entsprechende txt-Datei: http://www.lpk.rocks/sides/Test-Songs01.txt

  • ...booo äihhh!!!


    Da staune ich nicht schlecht...


    Code
    array(7) { ["GETID3_VERSION"]=> string(19) "1.9.12-201602240818" ["filesize"]=> int(4724396) ["filepath"]=> string(33) "/webspace/xx/xxxxxx/lpk.rocks/mp3" ["filename"]=> string(55) "Here And Now And There And Then - Lenni Paul Klimek.mp3" ["filenamepath"]=> string(89) "/webspace/xx/xxxxxx/lpk.rocks/mp3/Here And Now And There And Then - Lenni Paul Klimek.mp3" ["encoding"]=> string(5) "UTF-8" ["error"]=> array(1) { [0]=> string(59) "Caught exception: Required module.tag.id3v2.php is missing." } }
    Notice: Undefined index: tags in /webspace/xx/xxxxxx/lpk.rocks/sides/Test-Songs01.php on line 20
    array(7) { ["GETID3_VERSION"]=> string(19) "1.9.12-201602240818" ["filesize"]=> int(4037078) ["filepath"]=> string(33) "/webspace/xx/xxxxxx/lpk.rocks/mp3" ["filename"]=> string(28) "Let Our Love Still Shine.mp3" ["filenamepath"]=> string(62) "/webspace/xx/xxxxxx/lpk.rocks/mp3/Let Our Love Still Shine.mp3" ["encoding"]=> string(5) "UTF-8" ["error"]=> array(1) { [0]=> string(59) "Caught exception: Required module.tag.id3v2.php is missing." } } array(7) { ["GETID3_VERSION"]=> string(19) "1.9.12-201602240818" ["filesize"]=> int(422870) ["filepath"]=> string(33) "/webspace/xx/xxxxxx/lpk.rocks/mp3" ["filename"]=> string(21) "MB-Trailer-Idee01.mp3" ["filenamepath"]=> string(55) "/webspace/xx/xxxxxx/lpk.rocks/mp3/MB-Trailer-Idee01.mp3" ["encoding"]=> string(5) "UTF-8" ["error"]=> array(1) { [0]=> string(59) "Caught exception: Required module.tag.id3v2.php is missing." } } array(7) { ["GETID3_VERSION"]=> string(19) "1.9.12-201602240818" ["filesize"]=> int(437498) ["filepath"]=> string(33) "/webspace/xx/xxxxxx/lpk.rocks/mp3" ["filename"]=> string(21) "MB-Trailer-Idee02.mp3" ["filenamepath"]=> string(55) "/webspace/xx/xxxxxx/lpk.rocks/mp3/MB-Trailer-Idee02.mp3" ["encoding"]=> string(5) "UTF-8" ["error"]=> array(1) { [0]=> string(59) "Caught exception: Required module.tag.id3v2.php is missing." } } array(7) { ["GETID3_VERSION"]=> string(19) "1.9.12-201602240818" ["filesize"]=> int(3615555) ["filepath"]=> string(33) "/webspace/xx/xxxxxx/lpk.rocks/mp3" ["filename"]=> string(32) "Miss You - Lenni Paul Klimek.mp3" ["filenamepath"]=> string(66) "/webspace/xx/xxxxxx/lpk.rocks/mp3/Miss You - Lenni Paul Klimek.mp3" ["encoding"]=> string(5) "UTF-8" ["error"]=> array(1) { [0]=> string(59) "Caught exception: Required module.tag.id3v2.php is missing." } }


    ...ich habe mir erlaubt den Webspace-Bezug mit xx/xxxxx zu ersetzen... ...ist aber - so glaube ich - albern. Oder?! Kann doch da stehen bleiben. Oder?! Ist/Wäre doch kein Sicherheitsrisiko... ...oder?!


    Bin gespannt, welche Analyse Du jetzt daraus "ziehst" sempervivum!

  • Dieses ist wohl das entscheidende:
    "Caught exception: Required module.tag.id3v2.php is missing."


    Anscheinend ist die Datei getid3.php wohl doch nicht ausreichend, sondern er braucht weitere Dateien aus diesem Verzeichnis. Versuche, alle wieder hochzuladen, dann müsste es sich verbessern. Das sind ca. 1,7 MB und diese müssen ja nicht herunter geladen werden, wie bei js-Dateien, sondern sie werden nur auf dem Server gebraucht.

  • Guten Morgen aus dem heute trüben hohen Norden! Moin moin sempervivum!


    So! ...habe nun ALLE Dateien des Ordners "getID3-1.9.12" übertragen und erhalte jetzt folgendes Ergebnis:


    html-seminar.de/woltlab/attachment/1068/


    1. Der Titel des Songs steht jetzt schon mal da! ...und zu jedem Song sieht man auch das Cover-Bild! ...aber die weiteren Tags sind nicht zu lesen :(


    Bitte nicht böse sein sempervivum, aber vom grundsätzlichen Layout hatte ich mir das auch so nicht vorgestellt. Ich möchte, das nur die Tags des aktuell abspielenden Songs zu sehen sind. Wird kein Song gespielt, dann kann immer der Tag des obersten Songs zu sehen sein.


    Hier meine "http://www.lpk.rocks/sides/Test-Songs01.php" noch mals als txt-Datei: http://www.lpk.rocks/sides/Test-Songs01.txt

  • Na, das ist doch ein großer Fortschritt, dass jetzt die Tags ausgelesen werden.
    Dann poste mal, welche Tags Du brauchst (wenn Du das var_dump() aktivierst, siehst Du, dass sehr viele vorhanden sind) und wo sie angezeigt werden sollen. Ich glaube, früher hattest Du geschrieben, dass z. B. das Bild über dem Player angezeigt werden soll. Also beschreibe genau welches Tag wo angezeigt werden soll, in der Liste unter dem Player für alle Titel oder/und in dem Anzeigefeld über dem Player für den aktuellen.

  • Hallo sempervivum!


    O.K.! ...ich habe mir mal erlaubt den "var_dump" nochmals zu aktivieren > es hat sehr lange gedauert bis sich die Testseite aufgebaut hat und dann sah sie so aus wie in dieser txt-Datei hinterlegt:


    http://www.lpk.rocks/sides/VarDumpAusgabe01.txt


    CAVE: Die Datei ist >2MB groß ;(


    Weiter habe ich mal in Photoshop ein wenig gebastelt:


    html-seminar.de/woltlab/attachment/1069/


    So würde ich das sehr schön finden. In dem Bild sind die Tags zu sehen, die ich gerne rechts neben dem Bild haben möchte.


    Es sollen immer nur die Tags über der Player-Leiste erscheinen von dem Titel, der gerade läuft. Läuft kein Titel, sollten die Tags des ersten Titels der Auswahl dort stehen.


    Der Player entspricht dem Layout, welches ich bereits in der Seite "Songs" layoutet habe.


    Danke Dir!

  • Zitat

    es hat sehr lange gedauert bis sich die Testseite aufgebaut hat

    Ich vermute, dass das nicht nur an dem var_dump liegt, sondern vor allem daran, dass ja die MP3s gelesen werden müssen, um die Tags zu ermitteln. Im Zusammenhang damit müssten wir zunächst eine Frage klären, bevor ich weiter mache:
    Wählt man aus der Liste einen anderen Titel aus, wird leider die Seite neu geladen. Das bedeutet, dass in diesem Fall wieder die ganze Zeit verstreicht, in der die Tags gelesen werden. Probiere das mal aus. Wenn es nicht akzeptabel ist, müssten wir uns von diesem Verfahren verabschieden und den ausgewählten Titel mit Javascript an den Player schicken, so dass er gespielt wird, ohne dass die Seite neu geladen wird.

  • Noch etwas: Der Player in deiner Grafik sieht ganz anders aus als der Player, der von der Testseite angezeigt wird. Dieser ist der Player von HTML5 und er sieht in jedem Browser anders aus - probiere es aus. Ich selber benutze den Mediaelement-Player:
    http://mediaelementjs.com/
    Dieser sieht annähernd so aus wie in deiner Grafik, bis auf den Lautstärkebalken. Überlege, ob wir beim HTML5-Player bleiben oder mediaelement nehmen.

  • Das mit dem lange dauernden Seitenaufbau habe ich auch darauf geschoben, dass alle Informationen gelesen werden.


    Lasse Dich nicht irritieren: Es ist exakt der html5-List-Player von dem Herrn Weisshart > erl ässt sich via CSS anders layouten! Das habe ich gemacht.


    Wählt man aus der Liste einen anderen Titel aus, wird leider die Seite neu geladen.


    ... ?( ...meinst Du meine Seite "Songs" (http://www.lpk.rocks/sides/songs01.php). Bis jetzt sind da nur 2 Songs hinterlegt, es werden aber mehr werden.


    Wenn ich da einen neuen Titel anklicke baut sich die Seite neu auf? ...also ich habe gerade mal auf die Statusmeldung unten links im FF-Browser geachtet. Du scheinst recht zu haben. Das ist mir bisher gar nicht aufgefallen, weil es bei mir wirklich rasend schnell geht - sozusagen in "Echtzeit" :D


    Bei mir sollen ja "nur" 8 Tags pro mp3 ausgelesen werden. Meinst Du, das dauert lange? Werden immer zunächst alle Daten ausgelesen und aus diesem diese 8 extrahiert?


    Hier noch mal alles zur "songs01.php" jeweils als txt-Datei:


    php > http://www.lpk.rocks/Test-txt/songs01.txt
    css > http://www.lpk.rocks/Test-txt/css-index01.txt
    css > http://www.lpk.rocks/Test-txt/audio01.txt

  • Zitat

    Bei mir sollen ja "nur" 8 Tags pro mp3 ausgelesen werden.

    Diese Zeile im PHP:

    PHP
    $ThisFileInfo = $getID3->analyze($filename);



    liest alle Tags aus. Welche man dann verwendet, spielt keine Rolle.

    Zitat

    Lasse Dich nicht irritieren: Es ist exakt der html5-List-Player von dem Herrn Weisshart > erl ässt sich via CSS anders layouten! Das habe ich gemacht.

    Man kann das Umfeld des Player layouten, aber der Player selbst mit seinen Controls sieht in jedem Browser anders aus. Das Layout in deiner Grafik ist das von Firefox. Probiere es mal mit einem anderen Browser!
    Aber wir können das erst Mal zurück stellen.


    Was das Laden betrifft, habe ich es gerade mit deiner Testseite ausprobiert und diese lädt wirklich sehr schnell. Wenn das so ist, können wir das Neuladen wahrscheinlich akzeptieren und ich werde jetzt mit dem Einfüge der Tags in den Kopf weiter machen.

  • Das der Player alleine sein Aussehen je nach Browser ändert, das weiß ich und finde ich auch gar nicht so schlimm.


    Wichtig war mir die Liste! ...und das der Herr Weisshart da noch ein responsives (!) CSS mit dazu gemacht hat, das entsprach genau dem, was ich wollte. Und so, wie ich den Player jetzt layoutet habe, gefällt er mir sehr! Vor allen Dingen passend zu meiner Seite 8o


    Was das Laden betrifft, habe ich es gerade mit deiner Testseite ausprobiert und diese lädt wirklich sehr schnell. Wenn das so ist, können wir das Neuladen wahrscheinlich akzeptieren und ich werde jetzt mit dem Einfüge der Tags in den Kopf weiter machen.


    Danke sempervivum!

  • So, mit dem Einfügen des Bildes und der Tags im Kopf bin ich fertig. Du kannst es ja noch nach deinen Vorstellungen stylen.

  • Das ist der Hammer!!!


    ...genau so und nicht anders habe ich mir das vorgestellt!!! Das Ganze muss ich jetzt nur noch in mein Layout überführen, die Bild-Datei nch links und die Tags rechts von dieser setzen (evtl. mit <div>?!)... ...ich muss mal schauen! Und es muss im responsiven Design sein.


    Ich werde das in Ruhe machen. Ich denke, morgen Vormittag werde ich damit beginnen.


    Also zumindestens meine Testseite (http://www.lpk.rocks/sides/Test-Songs02.php) baut sich rasend schnell auf. "Schwubs" ...und sie ist da!


    Sollten noch Probleme und/oder noch Fragen auftreten, werde ich mich hier noch mal melden!


    -----


    Ohne Deine Hilfe hätte ich dieses nie geschafft! Machst Du zufällig auch Musik? ...wenn ja und solltest Du mal bei einem Song eine Gitarre (Rhythmus und Solos) eingespielt haben wollen > schick mir eine PN: Das geht los!!!


    Danke Dir ganz ganz herzlich!!!

  • Moin nochmals sempervivum!


    Nun habe ich mich doch noch heute Abend an die Überführung in meine Homepage gemacht. Ich komme soweit ganz gut klar, nur fehlt mir so ein wenig das php-Feedback um die Elemete aus dem "$infofield" gezielt anzusprechen, um sie gezielt per "echo" im html/body zu positionieren.


    Du hast ja schon für das "infofield" eine <div id="mp3infos"><?php echo $infofield; ?></div> vorbereitet. Das hat mit sehr gefreut!


    Ich habe mich nun dazu entschlossen eine einfache Tabelle mit 2 Zellen nebeneinander in die "mp3infos"-div zu setzen. In die linke Zelle möchte ich per echo das Image setzen und in die rechte die anderen infofield-Elemente.


    Wie realisiere ich das?


    Danke Dir nochmals! Ich schaue morgen Vormittag hier wieder rein! Gute Nacht!

  • Tabellen für Layoutzwecke sind heutzutage stark verpönt. Ich empfehle, die Elemente mit CSS nebeneinander anzuordnen:

    CSS
    #infoimg {                float: left;
                }
                #infolis {
                    margin-left: 150px !important;             }


    Oder so:

    CSS
    #infolis {                display: inline-block;
                    width: calc(100% - 150px);
                }
                #mp3infos img {
                    vertical-align: top;             }
  • Moin sempervivum!!!!


    Danke nochmals für Deine tolle und sehr kompetente Hilfe!!!


    Das ist jetzt daraus geworden: http://www.lpk.rocks/sides/songs01.php


    So finde ich es schön!


    -----


    Ob Tabellen verpönt sind oder nicht... ...??? Ich lese da so viel widersprüchliches im Netz. Bei einigen ist im Responsive Design das "float" verpönt... ...???


    Frag mich jetzt nicht, wo ich das alles gelesen habe. Das weiß ich nicht mehr. Ich persönlich mag Tabellen immer sehr! Man kann damit so schön strukturiert arbeiten.


    Ich habe es jetzt aber auch mit "float" hinbekommen und wieder was dazu gelernt!!!


    Danke Dir nochmals ganz herzlich!


    -----


    P.S. ....nun lädt die Seite ja immer neu und springt dabei nach oben. Gibt es eine Funktion, dass die Seite "stehen bleibt" auch wenn sie neu lädt?

  • Zitat

    nun lädt die Seite ja immer neu und springt dabei nach oben. Gibt es eine Funktion, dass die Seite "stehen bleibt" auch wenn sie neu lädt?

    Ja, man kann die Scrollposition im Localstorage speichern und beim Neuladen die wieder herstellen. Mache ich dann ...


    Sehr gelungenes Design!

  • Um es browserübergreifend zum Laufen zu bringen, musste ich jquery verwenden. Binde es im head ein:


    HTML
    <script src="//code.jquery.com/jquery-1.10.2.js"></script>

    und füge dieses Javascript am Ende des body, vor dem schließenden </body> ein:

    JavaScript
    <script>            window.addEventListener("beforeunload", function () {                window.localStorage.setItem("scrollLeft", $(window).scrollLeft());                window.localStorage.setItem("scrollTop", $(window).scrollTop());            });            var leftPos = window.localStorage.getItem("scrollLeft");            var topPos = window.localStorage.getItem("scrollTop");            $(window).scrollLeft(leftPos);            $(window).scrollTop(topPos);         </script>


Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!