Seite 1 von 1
"untername" einer Datei rausfinden
Verfasst: 04.09.2006 20:54
von winduff
N'Abend,
wie kann ich - z.B bei einer Datei auf einer Musik-CD den richtigen Namen rausfinden?
So heist z.B die Datei "Track1", aber im WindowsMedia Player erscheint der Titel als "Ich liebe Es" ^^
Wie finde ich den Titel raus? Hab in der PB Hilfe keinen Befehl dafür gefunden....
Thanks
Chris
Verfasst: 04.09.2006 20:57
von a14xerus
Das sind bei MP3 die "ID3TAGS"
Dieser code sollte dir helfen:
Code: Alles auswählen
;PB 4.0
Procedure.l GetID3v2Tag(FileName.s)
If FileName = ""
ProcedureReturn #False
EndIf
ReadFile(1, FileName)
ID3.s = Space(3)
ReadData(1,@ID3, 3)
; must be ID3v2.3.x
If ID3 = "ID3" And ReadByte(1) = $03
ID3Exists = #True
; skip revision and flag bytes
ReadWord(1)
; get tag size
ID3Size.l = 0
For Byte.l = 3 To 0 Step -1
ID3Size + (ReadByte(1) << (7*Byte))
Next
Else
; no ID3v2.3.x tag present
CloseFile(1)
ProcedureReturn #False
EndIf
; clear tag contents
TagID3v2\Album = ""
TagID3v2\Artist = ""
TagID3v2\Comment = ""
TagID3v2\Composer = ""
TagID3v2\Copyright = ""
TagID3v2\EncodedBy = ""
TagID3v2\Encoder = ""
TagID3v2\Genre = ""
TagID3v2\OrgArtist = ""
TagID3v2\Title = ""
TagID3v2\track = ""
TagID3v2\URL = ""
TagID3v2\Year = ""
Size.l = 0
Repeat
; get frames until no more
FrameID.s = Space(4)
ReadData(1,@FrameID, 4)
If Asc(Left(FrameID, 1)) = 0
; no more frames
CloseFile(1)
ProcedureReturn #True
EndIf
; get frame size
FrameSize.l = 0
For Byte.l = 3 To 0 Step -1
FrameSize + (ReadByte(1) << (7*Byte))
Next
; add frame size to total size
Size + FrameSize
; skip flag and language bytes
ReadWord(1)
ReadByte(1)
; get frame contents
; subtract one for language byte
FrameSize - 1
If FrameSize < 0 : ProcedureReturn #False : EndIf
Contents.s = Space(FrameSize)
ReadData(1,@Contents, FrameSize)
; put frame contents into structure
Select FrameID
Case "TALB"
TagID3v2\Album = Contents
Case "TCOM"
TagID3v2\Composer = Contents
Case "TCON"
TagID3v2\Genre = Contents
Case "TCOP"
TagID3v2\Copyright = Contents
Case "TENC"
TagID3v2\EncodedBy = Contents
Case "TIT2"
TagID3v2\Title = Contents
Case "TOPE"
TagID3v2\OrgArtist = Contents
Case "TPE1"
TagID3v2\Artist = Contents
Case "TRCK"
TagID3v2\track = Contents
Case "TSSE"
TagID3v2\Encoder = Contents
Case "TYER"
TagID3v2\Year = Contents
Case "COMM"
TagID3v2\Comment = Contents
Case "WXXX"
TagID3v2\URL = Contents
EndSelect
If TagID3v2\Artist = "" Or TagID3v2\Artist = " "
TagID3v2\Artist = "Unbekannt"
EndIf
Until Size >= ID3Size ; stop if tag size reached/exceeded
CloseFile(1)
ProcedureReturn #True
EndProcedure
//EDIT: Ausschnitt aus "Media Player 3 by Alexander N",
release end of september 06

Verfasst: 04.09.2006 21:03
von winduff
Muco Gratias
Oder einfach:
Danke
Nicht meckern ich kann kein Spanisch oder Italienisch, ich glaub aber so wirds geschrieben
Verfasst: 04.09.2006 21:13
von PBZecke
Bei normalen Musik CD's sind das aber keine ID3 Tags! Die Infos holt sich
der Mediaplayer aus dem Internet.
Verfasst: 04.09.2006 21:56
von Thorium
PBZecke hat geschrieben:Bei normalen Musik CD's sind das aber keine ID3 Tags! Die Infos holt sich
der Mediaplayer aus dem Internet.
Wobei intressant zu wissen währe wo man sich dazu connecten muss und wie man die Titellisten dort abfragt.
Verfasst: 04.09.2006 22:04
von ts-soft
> Wobei intressant zu wissen währe wo man sich dazu connecten muss und wie man die Titellisten dort abfragt.
http://de.wikipedia.org/wiki/CDDB
http://www.freedb.org/
Verfasst: 04.09.2006 22:16
von Thorium
Thx.
