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
:wink:

Verfasst: 04.09.2006 21:03
von winduff
Muco Gratias :)

Oder einfach:

Danke :allright:

Nicht meckern ich kann kein Spanisch oder Italienisch, ich glaub aber so wirds geschrieben :mrgreen:

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
ts-soft hat geschrieben:> 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/
Thx. :allright: