SWiSH Forum
Forum użytkowników programów SWiSH

SWiSH Max - [Prośba] Skrypt wyswietlajacy zmienne z xml

DJ WOLF - Wto 29 Sty, 2008 14:40
Temat postu: [Prośba] Skrypt wyswietlajacy zmienne z xml
Witam,

Jestem z deczka noobem w dziedzinie flasha i dlatego chcialem sie zapytac czy nie pomogl by mi ktos ze skryptem, ktory wyswietlal by na mp3 playerku dane o mp3-ujce (artyste i tytul). Niby powinien wyswietlac ID3 Tagi ale tego nie robi.


Skrypt w playerku:

onFrame (2) {
if (_root.song.duration) {
duration = _root.song.duration / (_root.song.getBytesLoaded() / _root.song.getBytesTotal());
_root.progressbar_progress._xscale = _root.song.position * 100 / duration;
_root.progressbar_loaded._xscale = _root.song.getBytesLoaded() * 100 / _root.song.getBytesTotal();
if (length(_root.song.id3.artist) == 0) {
artist = "unkown";
} else {
artist = _root.song.id3.artist;
}
if (length(_root.song.id3.tit2) == 0) {
title = "unkown";
} else {
title = _root.song.id3.tit2;
}
_root.name_label.text = artist + " - " + title;
x = Math.round(_root.song.position / 1000);
if ((x % 60) < 10) {
s = "0" + x % 60;
} else {
s = x % 60;
}
_root.duration_label.text = Math.floor(x / 60) + ":" + s;
_root.volume_label.text = _root.volume;
_root.panning_label.text = _root.panning;
gotoAndPlay(1);
} else {
_root.name_label.text = "";
}
}


i podczas gdy gra muza to pisze: unkown - unkown :/ a ja chce aby pobieralo informacje o utworku z playlisty :D



Skrypt playlisty:

<?xml version="1.0"?>
<playlist>
<file src="" />
<file src="" />
</playlist>



Chcial bym zeby wygladalo to mniej wiecej tak:

<?xml version="1.0"?>
<playlist>
<file src="" artist="" title=""/>
<file src="" artist="" title=""/>
</playlist>

eden - Sro 30 Sty, 2008 10:37

czesc,

słow kilka o id3 ...

informacji id3 które posiada mp3 jest kilka wersji (własciwie 2) mamy ID3v1.x oraz ID3v2.x zasadnicza roznica między nimi to taka ze v2 umieszcza informacje o mp3 na początku mp3 zaś v1 na samym końcu, i tutaj pierwsze odmniemanie dlaczego Twoj skrypt niedziała,
Kod:
onFrame (2) {
if (length(_root.song.id3.artist) == 0) {
artist = "unkown";
} else {
artist = _root.song.id3.artist;
}

starasz się wydobyc taga na klatce 2, jesli mp3 zawiera ID3v1 dane artist mogą jeszcze byc niedostepne, bedą dopiero kiedy cała mp3 się załaduje. Sproboj umiescic kod w bloku onEnterFrame() {
}

nastepna kwestia z ID3 to wersja playera. FlashPlayer6 suportuje tylko IDv1 (i 1.1) dopiero dalsze wersje suportują IDv2.x - powiesz:'ja mam najnowszego playera oczywiscie' i bardzo prawdopodobne ze masz skoro tworzysz flashe, ale przeciętny user może niemieć i znowu klops.
co więcej do tagów IDv2.x odwołujemy się inaczej.
W kodzie ktory napisałes, zakładasz ze mp3 ma taga IDv1 song.id3.artist w ID2 to samo daje .id3.TPE1, lista odpowiedników ponizej
Kod:
COMM  Sound.id3.comment 
TALB  Sound.id3.album 
TCON  Sound.id3.genre 
TIT2  Sound.id3.songname 
TPE1  Sound.id3.artist 
TRCK  Sound.id3.track 
TYER  Sound.id3.year 

(wogole ID3v2 ma trochę więcej tagów)

Morał z tego taki ze trzeba by zrobić suportowanie dla obu versji ID3 i dodatkowo poinformowac goscia ze by updatował playera (zakładając ze mp3 ma ID3v2 i zrobiłeś obsługe ID3v2 to nadal niezadziała jak ktos ma flashplayer6 >_<)

Na koniec dochodzi jeszcze jedno, plik mp3 wcale niemusi miec danych ID3 w zadnej wersji, albo mieć je ale puste a takze mieć obie wersje naraz to juz zalezy od softa ktory je konwertował.

Mowisz ze wyswietla 'unkown - unkown ' a to juz nietak zle, bo to znaczy ze Twoj if (length(_root.song.id3.tit2) == 0) {
title = "unkown";
zadziałał , inaczej rezultat powinien być raczej undefined - undefined.

jesli sam bedziesz dodawał mp3 gdzies na stronę to mozesz skorzystac z softu edytującego tagi ID3 by przystosowac mp3 do Twojego swf'u. Jezeli zas zrezygnujesz z ID3 to xml'a proponuje takiego:
Kod:
<?xml version="1.0" encoding="UTF-8"?>
<playlist>
    <mp3file>
        <src>blahblah.mp3</src>
        <artist>blahblah</artist>
                                <title>blahblah</title>
                                <pozycja na liscie ...
                                <inne bitraty itd itd ...</>
    </mp3file>
    <mp3file>
        <src>blahblah.mp3</src>
        <artist>blahblah</artist>
                                <title>blahblah</title>
                                <pozycja na liscie ...
                                <inne bitraty itd itd ...</>
    </mp3file>
</playlist>


Mam nadzieje ze cus pomogłem.

DJ WOLF - Sro 30 Sty, 2008 16:42

Zastosowale pierwsze rozwiazanie tj. zmiana na IDv2 i tez nie smiga tylko wyswietla te unknow czy jakos tak :P , a po zastosowaniu Twojego skrypta tez nie smiga jak powinno, nawet edytowalem go pozniej tez nie smigal. A co do mp3 to mam na swoim serwerze jak by to bylo wazne :) No ale checi sie licza i widze ze chcesz pomoc, wiec jak mozna to licze na Ciebie.
eden - Sro 30 Sty, 2008 23:25

no to zapodaj swi razem z mp3 na ktorej testujesz - policzymy razem :)

Powered by phpBB modified by Przemo © 2003 phpBB Group