Daar kunnen, aan het eind van het bestand, 128 bytes extra in, om informatie op te slaan over de artiest, de naam van het liedje, etc. http://www.id3.org/ (staat nu ID3 v2.2 ofzo, de nieuwere)
En ik heb daar, met een beetje afkijken van dit script: http://rasher.dk/source/mp3/id3.php Een stel functies voor gemaakt, zodat je ook in PHP die tags kunt lezen / schrijven en verwijderen.
Best logische aanroep:
set: De bestandsnaam en een array met daarin de tags. De keys voor de naam ervan, de value voor de waarde. De key kan bestaan uit de volgende strings:
sTitle = Titel van het liedje.
sArtist = Degene die het liedje heeft gemaakt.
sAlbum = Het album waar het liedje vandaan komt.
sComment = Een stukje commentaar over de MP3.
iYear = Het jaar waarin het nummer is gemaakt.
iGenreID = Het nummer van het genre (komt misschien nog een functie voor).
iTrackNumber = Het nummer op de CD. Hoeft niet persé meegegeven te worden.
Voorbeeld:
<?php
if(mp3_set_id3_v1('bestand.mp3', array('sTitle' => 'Bakske Vol Met Stro', 'sArtist' => 'Urbanus', 'iYear' => 1995, 'sAlbum' => 'N/A', 'sComment' => 'Keivet liedje.', 'iGenreID' => 2))
{
// het is gelukt, YES
}
else
{
// het is niet gelukt, NO
}
?>
Nu zal het een ID3 V1 tag worden, omdat de track niet wordt meegegeven.
<?php
if(mp3_set_id3_v1('bestand.mp3', array('sTitle' => 'Bakske Vol Met Stro', 'sArtist' => 'Urbanus', 'iYear' => 1995, 'sAlbum' => 'N/A', 'sComment' => 'Keivet liedje.', 'iGenreID' => 2, 'iTrackNumber' => 4))
{
// het is gelukt, YES
}
else
{
// het is niet gelukt, NO
}
?>
Nu wordt het een ID3 V1.1 tag, omdat ook de tracknumber wordt meegegeven.
Check je MP3 nu in WinAmp en je ziet het: De tags zijn geschreven.
get: De bestandsnaam, niks meer. Je krijgt de array met daarin de info terug als het is gelukt, anders false en een error.
<?php
if($aX = mp3_get_id3_v1('mp3.mp3'))
{
echo $aX['sArtist'] . ' - ' . $aX['sTitle'];
}
else
{
echo 'Bestand bevat geen ID3 tag.';
}
?>
unset: De bestandsnaam. Je krijgt true terug als de tag is verwijderd, anders false + een warning.
<?php
if(mp3_unset_id3_v1('x.mp3'))
{
// tag verwijderd, YES
}
else
{
// tag niet verwijderd, NO
}
?>
Natuurlijk kan de manier waarop ik errors maak beter, maar dit is maar een alpha, dus eh..... Dat verandert nog wel.
Nogmaals: Ik heb een paar dingetjes uit die class gehaald, dus ik neem niet de volledige eer voor dit script op me.