Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 08-02-2005, 18:38   #1 (permalink)
Flash-holic
 
Benutzerbild von DeMoehn
 
Registriert seit: Nov 2003
Ort: Neunkirchen(Saar)
Beiträge: 988
ERWEITERUNG zu: MP3-Player mit XML-Fütterungszeit (Dynamisches auslesen von Ordnern)

Inhalt
0. Einleitung
1. PHP(Ordner erstellen+XML)
2. Flash code
2.1 Erweiterungen
3. Schluss

0. Einleitung
Zunächst sag ich erstmal "Guten Tag" an alle User.
Dieser Zusatz ist dazu da, Benutzern des Tutorials MP3-Player mit XML-Fütterungszeit (Part I-II) von Pape, den Umgang mit vielen oder immer wechselnden Lieder zu vereinfachen. Ich möchte einfach an das Tutorials von Pape anknüpfen und mit der erstellung des PHP-Files anfangen.
1. Ordner auslesen
In dem Tutorials von Pape hat man bereits den Ordner songs angelegt, diesen möchten wir auch beibehalten, deswegen schreiben wir nun schonmal der Variable $path den Namen des Ordners (sollte der Ordner bei euch anders heißen, dann müsst ihr natürlich auch den entsprechenden Namen nehmen). Wir beginnen nun das Script mit
PHP-Code:
<?php
$path 
"songs/";
Nun öffnen wir den Ordner mit der Funktion opendir(Ordner).
PHP-Code:
$handle opendir ($path); 
Nun speichern wir den Kopf des XMLs in der Variable xml.
Dazu kommt noch die Gliederung <songs> wie es auch Pape getan hat, damit es keinerlei Probleme gibt.
PHP-Code:
$xml = '<?xml version="1.0" encoding="UTF-8" ?>';
$xml .= '<songs>'; //Der String wird $xml hinzugefügt auffällig dabei, nicht
//wie in Flash += sondern .= zum verbinden mehrerer Strings
Nun lesen wir das Verzeichniss aus.
Dazu benutzen wir eine while-Schleife.
PHP-Code:
while($file readdir($handle)) { 
Da PHP immer zu erst ". .." ausgibt sollten wir eine Abfrage machen.
PHP-Code:
if ($file != "." && $file != "..") { 
Nun gibt es das Problem mit dem Titel, den Pape im XML definiert, dies ist natürlich direkt in PHP nicht möglich. Ich dachte mir es wäre sinnvoll das MP3-File nach dem Titel zu benennen und .mp3 abzutrennen.
Ich weiß, diese Methode ist nicht die beste, da ein File im Netz nicht z.B "Die perfekte Welle.mp3" heißen sollte, trozdem wäre es eine Methode für "Welle.mp3" oder "Perfekte_Welle.mp3" wo man auch nach _ suchen und durch " " ersätzen könnte. Aber ich beschreibe später unter Punkt 2 die möglichkeit in Flash ID3-Tags auszulesen...
PHP-Code:
$exploded explode(".",$file); 
Diese Funktion, arbeitet so wie split() in Flash. Wir haben nun ein Array $exploded dessen Wert 0 unser Titel ist. Die Variable $file beinhaltet unsere Mp3, also schreiben wir doch einfach im XML weiter
PHP-Code:
$xml .= '<song name="'.$exploded[0].'" file="'.$path.$file.'" />';
 }
//If-Abfrage beendet
}//While-Schleife beendet 
So, das war auch schon alles was wir zum auslesen mit PHP brauchen, jetzt nur noch die XML-Datei beenden und "Abschicken".
PHP-Code:
$xml .= '</songs>';//XML-Gliederung beendet
echo utf8_encode($xml);//$xml verschickt
?>//PHP beendet 
weiter geht es nun mit Flash, hier nocheinmal das ganze Script
PHP-Code:
<?php
$path 
"songs/";//Pfadangabe des Musikordners
$handle opendir ($path);//oeffnen des Ordners
$xml '<?xml version="1.0" encoding="UTF-8" ?>';//XML-Kopf
$xml .= '<songs>';//XML-Gliederung
while($file readdir($handle)) {
 if (
$file != "." && $file != "..") {
$exploded explode(".",$file);//Trennen nach "."
$xml .= '<song name="'.$exploded[0].'" file="'.$path.$file.'" />';
 }
}
$xml .= '</songs>';//beenden der XMl-Gliederung
echo utf8_encode($xml);//versenden des XML
?>
__________________
Wer Großes versucht, ist bewunderswert, auch wenn er fällt.
Lucius Annaeus Seneca
(ca. 4 v. Chr - 65 n. Chr.)



Geändert von DeMoehn (08-02-2005 um 19:32 Uhr)
DeMoehn ist offline   Mit Zitat antworten
Alt 08-02-2005, 18:53   #2 (permalink)
Flash-holic
 
Benutzerbild von DeMoehn
 
Registriert seit: Nov 2003
Ort: Neunkirchen(Saar)
Beiträge: 988
2. Flash code
Nehmen wir nun diesen Ausschnitt aus dem Code von Pape.
ActionScript:
  1. stop();
  2. songliste = new XML();
  3. songliste.ignoreWhite = true;
Wir fügen einfach ein load() hinzu.
ActionScript:
  1. stop();
  2. songliste = new XML();
  3. songliste.load("readTest.php");//hinzugefügtes
  4. songliste.ignoreWhite = true;
Dabei dürfen wir nicht vergessen das load() am ende des Scriptes, welches von Pape hinzugefügt wurde, zu löschen.
Das war es auch schon mit dem nötigsten.
Leider kann ich das Versprechen aus Teil 1. nicht einhalten, da ich es momentan nicht hinbekomme die ID3 Funktion an Papes Script anzuknüpfen. Da wäre ein Pape fragen vllt. ganz angebracht... Wenn nicht dann schaut zu einem späteren zeitpunkt noch einmal vorbei, ich werde es weiter versuchen.
2.1 Erweiterungen
So, nach längerem Testen, bin ich zu dem Ergebnis gekommen das die ID3-Tags erst angezeigt werden wenn der Song komplett geladen ist, das sieht man etwa HIER, jaja ich weiß, GEMA... ich lösch das auch gleichw ieder, hab nur nix andres. Das ist ne abgespeckte ältere version meines Players an dem ich immerzu bastle wenn ich nix zu tun habe, hier sieht man das Problem ganz gut. Ich habe nun einige Songs gespeichert mit namen wie "The Burn.mp3" oder "Die perfekte Welle.mp3" und es gab keine Probleme. Also könnte man das so machen. Vllt. auch nur bis einer mit einer besseren Idee kommt.
3. Schluss
So.
Zum downloadern gibts diesma nix, da das PHP Script ja auch gut zum abschreiben ist und gelernt wird dabei sowieso viel mehr!
Ich möchte Pape noch loben für das 1a Tutorials und ich hoffe das auch ich mit meinem kleinen Tutorials ein paar Leuten helfen konnte, auch wenn ich bestimmt wieder 1000 Rechtschreibfehler hab
Bis dann, BAd
__________________
Wer Großes versucht, ist bewunderswert, auch wenn er fällt.
Lucius Annaeus Seneca
(ca. 4 v. Chr - 65 n. Chr.)



Geändert von DeMoehn (08-02-2005 um 19:32 Uhr)
DeMoehn ist offline   Mit Zitat antworten
Alt 08-02-2005, 21:57   #3 (permalink)
-
 
Benutzerbild von pape
 
Registriert seit: Jan 2004
Beiträge: 3.002
Hey, coole sache

Ich guck grad auch noch mal nach den ID3 Tags...
In Flash ist es so, dass du auf diese erst zufgreifen kannst, wenn die Mp3 fertig geladen wurde. Das hast du ja bereits erkannt (auch wenn ich das in der o.g. swf net sehe^^.. aber latte .. is jedenfalls so!)!

Ich denke, dass man es dann über PHP lösen müsste!

to be continued...

pape

und thx
pape ist offline   Mit Zitat antworten
Alt 09-11-2005, 12:15   #4 (permalink)
Neuer User
 
Registriert seit: Jun 2005
Beiträge: 11
Lightbulb MP3's mit PHP Auslesen

Ich habe micvh ein wenig mit dem Aufbau der MP3 Datein Beschäftigt und Festgestellt das es eigendlich kein Problem ist die IDv1 Tags mit PHP auszulesen.

Ich poste mal einfach den überarbeiteten Quellcode für PHP:

PHP-Code:
<?php 
$path 
"songs/";//Pfadangabe des Musikordners 
$handle opendir ($path);//oeffnen des Ordners 
$xml '<?xml version="1.0" encoding="UTF-8" ?>';//XML-Kopf 
$xml .= '<songs>';//XML-Gliederung 
while($file readdir($handle)) { 
  if (
$file != "." && $file != "..") { 
    
$idinfo id3($path.$file);
    
$xml .= '<song name="'.$idinfo["song"].'" file="'.$path.$file.'" />'
  } 

$xml .= '</songs>';//beenden der XMl-Gliederung 
echo utf8_encode($xml);//versenden des XML 



function id3($filename//  Die Funktion zum ermitteln der ID Tags
{
  global 
$genre;
  if (!
is_file($filename) or filesize($filename) < 128)
  {
    
    return 
false;
    break;
  }
  
$fp fopen($filename"r");
  
fseek($fpfilesize($filename) - 128);
  
$id3 fread($fp128);
  
$arr = array();
  if (
strtoupper(substr($id303)) == "TAG")
  {
    
$arr["song"] = trim(substr($id3330));
    
$arr["artist"] = trim(substr($id33330));
    
$arr["album"] = trim(substr($id36330));
    
$arr["year"] = trim(substr($id3934));
    
$arr["comment"] = trim(substr($id39730));
    
$arr["genre"] = $genre[ord($id3[127])];
    return 
$arr;
  }
  else
    return 
false;
  
fclose($fp);
}
?>
Und Schon Sollte die PHP Datei, die Songtitel in die xml schreiben,
optional kann man auch noch künstler kommentar etc Auslesen lasen
Als Genre gibt die MP3 eine Zahl wieder, wer eine auflistung haben möchte schreibt mir einfach.

P.S. Spreche niemals von Unmöglichkeit, wenn du nicht alles versucht hast

Mfg Real_Thunder

Geändert von Real_Thunder (09-11-2005 um 16:15 Uhr)
Real_Thunder ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 11:12 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele