MP3 ID3.v1 Reader
Verfasst: 24.04.2009 23:29
Da die alten Originalcodes inzwischen in der Versenkung des BoardArchivs
verschwunden sind, ich diese sowieso für mein akt. Projekt aufarbeiten
mußte, werde ich das Ergebnis hier mal zur Verfügung stellen. Vielleicht
hat ja noch jemand brauchbare Schnippsel für andere Tag-Formate, dann
kann ich sogar von profitieren
verschwunden sind, ich diese sowieso für mein akt. Projekt aufarbeiten
mußte, werde ich das Ergebnis hier mal zur Verfügung stellen. Vielleicht
hat ja noch jemand brauchbare Schnippsel für andere Tag-Formate, dann
kann ich sogar von profitieren

Code: Alles auswählen
; MP3 ID3.v1 Reader
; basiert auf Code von folgenden Autoren:
; NicTheQuick und J-The-Grey
; Zusammengeführt, modifiziert und für PB 4.30 aktualisiert
; Thomas <ts-soft> Schulz
EnableExplicit
DataSection
genres:
Data.s "Blues", "Classic Rock", "Country", "Dance", "Disco", "Funk", "Grunge", "Hip-Hop", "Jazz", "Metal"
Data.s "New Age", "Oldies", "Other", "Pop", "R&B", "Rap", "Reggae", "Rock", "Techno", "Industrial"
Data.s "Alternative", "Ska", "Death Metal", "Pranks", "Soundtrack", "Euro-Techno", "Ambient", "Trip-Hop", "Vocal", "Jazz+Funk"
Data.s "Fusion", "Trance", "Classical", "Instrumental", "Acid", "House", "Game", "Sound Clip", "Gospel", "Noise"
Data.s "AlternRock", "Bass", "Soul", "Punk", "Space", "Meditative", "Instrumental Pop", "Instrumental Rock", "Ethnic", "Gothic"
Data.s "Darkwave", "Techno-Industrial", "Electronic", "Pop-Folk", "Eurodance", "Dream", "Southern Rock", "Comedy", "Cult", "Gangsta"
Data.s "Top 40", "Christian Rap", "Pop/Funk", "Jungle", "Native American", "Cabaret", "New Wave", "Psychadelic", "Rave", "Showtunes"
Data.s "Trailer", "Lo-Fi", "Tribal", "Acid Punk", "Acid Jazz", "Polka", "Retro", "Musical", "Rock & Roll", "Hard Rock"
Data.s "Folk", "Folk-Rock", "National Folk", "Swing", "Fast Fusion", "Bebob", "Latin", "Revival", "Celtic", "Bluegrass"
Data.s "Avantgarde", "Gothic Rock", "Progressive Rock", "Psychedelic Rock", "Symphonic Rock", "Slow Rock", "Big Band", "Chorus", "Easy Listening", "Acoustic"
Data.s "Humour", "Speech", "Chanson", "Opera", "Chamber Music", "Sonata", "Symphony", "Booty Bass", "Primus", "Porn Groove"
Data.s "Satire", "Slow Jam", "Club", "Tango", "Samba", "Folklore", "Ballad", "Power Ballad", "Rhythmic Soul", "Freestyle"
Data.s "Duet", "Punk Rock", "Drum Solo", "Acapella", "Euro-House", "Dance Hall", "Goa", "Drum & Bass", "Club-House", "Hardcore", "Terror", "indie", "Brit Pop", "Negerpunk"
Data.s "Polsk Punk", "Beat", "Christian Gangsta Rap", "Heavy Metal", "Black Metal", "Crossover", "Comteporary Christian"
Data.s "Christian Rock", "Merengue", "Salsa", "Trash Metal", "Anime", "JPop", "Synth Pop"
EndDataSection
Structure MP3Info
title.s
artist.s
album.s
year.s
comment.s
track.s
genre.s
EndStructure
Procedure MP3_TAG_Reader(file.s, *info.MP3Info)
Protected i, *mem, FF, result = #False
Dim genre.s(146)
Restore genres
For i = 0 To 146
Read.s genre(i)
Next
*mem = AllocateMemory(128)
If *mem
FF = ReadFile(#PB_Any, file)
If FF
FileSeek(FF, Lof(FF) - 128)
ReadData(FF, *mem, 128)
CloseFile(FF)
If PeekS(*mem, 3, #PB_Ascii) = "TAG"
With *info
\title = Trim(PeekS(*mem + 3, 30, #PB_Ascii))
\artist = Trim(PeekS(*mem + 33, 30, #PB_Ascii))
\year = Trim(PeekS(*mem + 93, 4, #PB_Ascii))
\comment = Trim(PeekS(*mem + 97, 29, #PB_Ascii))
\track = Str(PeekB(*mem + 126))
If PeekB(*mem + 127) >= 0 And PeekB(*mem + 127) < 147
\genre = genre(PeekB(*mem + 127))
EndIf
EndWith
result = #True
EndIf
EndIf
FreeMemory(*mem)
EndIf
ProcedureReturn result
EndProcedure