"untername" einer Datei rausfinden

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
winduff
Beiträge: 879
Registriert: 10.02.2006 21:05
Wohnort: Gießen
Kontaktdaten:

"untername" einer Datei rausfinden

Beitrag 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
Bild
AND51 hat geschrieben:...und ich würde dein Programm aus Wut zwei mal installieren, um eines genüsslicher löschen zu können, als das andere...
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

Beitrag 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:
Benutzeravatar
winduff
Beiträge: 879
Registriert: 10.02.2006 21:05
Wohnort: Gießen
Kontaktdaten:

Beitrag von winduff »

Muco Gratias :)

Oder einfach:

Danke :allright:

Nicht meckern ich kann kein Spanisch oder Italienisch, ich glaub aber so wirds geschrieben :mrgreen:
Bild
AND51 hat geschrieben:...und ich würde dein Programm aus Wut zwei mal installieren, um eines genüsslicher löschen zu können, als das andere...
Benutzeravatar
PBZecke
Beiträge: 399
Registriert: 02.09.2004 17:34

Beitrag von PBZecke »

Bei normalen Musik CD's sind das aber keine ID3 Tags! Die Infos holt sich
der Mediaplayer aus dem Internet.
Nein, ich habe die Suche nicht benutzt, und deshalb auch nichts dazu gefunden... :lol:
Benutzeravatar
Thorium
Beiträge: 1722
Registriert: 12.06.2005 11:15
Wohnort: Germany
Kontaktdaten:

Beitrag 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.
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.

Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke! Bild
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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/
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Thorium
Beiträge: 1722
Registriert: 12.06.2005 11:15
Wohnort: Germany
Kontaktdaten:

Beitrag 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:
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.

Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke! Bild
Antworten