iTunes XML Playlist [erledigt]

Zugriff, Engines, Konvertierung. Von ADS über DBF bis zu SQL.

Moderator: Moderatoren

Antworten
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

iTunes XML Playlist [erledigt]

Beitrag von AUGE_OHR »

hi,

hat sich schon mal jemand an eine iTunes XML Playlist versucht ?

es geht mir dabei um die Keywörter die zwischen den Tags stehen

Code: Alles auswählen

<key>Keyword</key>
ich habe nun eine Liste erhalten und folgende ermittelt ( ohne Cover )

Code: Alles auswählen

FUNCTION GetTagArray()
LOCAL aArray := { ;
{">Track ID<","<integer>" ,"</integer>"             },;
{">Name<","<string>","</string>"                    },;
{">Artist<","<string>","</string>"                  },;
{">Composer<","<string>","</string>"                },;
{">Album<","<string>","</string>"                   },;
{">Genre<","<string>","</string>"                   },;
{">Kind<","<string>","</string>"                    },;
{">Size<","<integer>" ,"</integer>"                 },;
{">Total Time<","<integer>" ,"</integer>"           },;
{">Disc Number<","<integer>" ,"</integer>"          },;
{">Disc Count<","<integer>" ,"</integer>"           },;
{">Track Number<","<integer>" ,"</integer>"         },;
{">Track Count<","<integer>" ,"</integer>"          },;
{">Year<","<integer>" ,"</integer>"                 },;
{">Date Modified<","<date>","</date>"               },;
{">Date Added<","<date>","</date>"                  },;
{">Bit Rate<","<integer>" ,"</integer>"             },;
{">Sample Rate<","<integer>" ,"</integer>"          },;
{">Play Count<","<integer>" ,"</integer>"           },;
{">Play Date<","<integer>" ,"</integer>"            },;
{">Play Date UTC<","<date>" ,"</date>"              },;
{">Skip Count<","<integer>" ,"</integer>"           },;
{">Skip Date<","<date>" ,"</date>"                  },;
{">Compilation<",NIL,"<true/>"                      },;
{">Sort Album<","<string>","</string>"              },;
{">Sort Artist<","<string>","</string>"             },;
{">Sort Composer<","<string>","</string>"           },;
{">Sort Name<","<string>","</string>"               },;
{">Persistent ID<","<string>","</string>"           },;
{">Track Type<","<string>","</string>"              },;
{">File Type<","<integer>" ,"</integer>"            },;
{">Location<","<string>","</string>"                },;
{">File Folder Count<","<integer>" ,"</integer>"    },;
{">Library Folder Count<","<integer>" ,"</integer>" }}
RETURN aArray
da ich bei Apple nicht wirklich was gefunden habe wollte ich hier im Forum mal anfragen ob jemand noch mehr Tags kennt oder weiss wo man die findet ?

das ganze ist UTF-8 ... und ich habe auch so was
<key>Location</key><string>file://localhost/Volumes/music-wav/Absurd%20Minds/Phaenomenon/02%20Here%20&%20Now%20%5BRemixed%20By%20Zenter%5D.wav</string>
die %20 stehen wohl für Space ... und %5B oder %5D ? und dann hab ich da noch %CC% ... ( französisch Akzent ? )
Zuletzt geändert von AUGE_OHR am Sa, 25. Jan 2014 23:19, insgesamt 1-mal geändert.
gruss by OHR
Jimmy
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2934
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: iTunes XML Playlist

Beitrag von Wolfgang Ciriack »

Hallo Jimmy,
schaust du hier: http://ascii.cl/url-decoding.htm
Ergibt:

Code: Alles auswählen

//localhost/Volumes/music-wav/Absurd Minds/Phaenomenon/02 Here & Now [Remixed By Zenter].wav
Wenn man dann noch in die HTML-Code Seite http://www.ascii.cl/htmlcodes.htm schaut findet man:
& = & somit dann

Code: Alles auswählen

//localhost/Volumes/music-wav/Absurd Minds/Phaenomenon/02 Here & Now [Remixed By Zenter].wav
Viele Grüße
Wolfgang
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: iTunes XML Playlist

Beitrag von AUGE_OHR »

hi,

Danke für die Decodierungs Tips für die URL beim TAG "Location".

um genau diese TAGs geht es mir da mir nicht ganz klar ist :
1.) ob ich "alle" TAGs habe
2.) wie das mit der Reihenfolge der TAGs ist.

ich habe noch diese gefunden, die nicht in meiner "iTunes Library.xml" sind :

Code: Alles auswählen

  <key>Normalization</key><integer>6502</integer
  <key>Rating</key><integer>100</integer>
  <key>Artwork Count</key><integer>1</integer>
  <key>File Creator</key><integer>1752133483</integer>
Frage : ist es bei XML egal in welcher Reihenfolge die TAGs stehen ?

... und wie mache ich das dann mit meiner DBF wenn immer neue TAGs dazu kommen ?
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: iTunes XML Playlist

Beitrag von AUGE_OHR »

hier noch die Lösung wie ich alle "%" behandle

Code: Alles auswählen

#incude "ot4xb.ch"
PROCEDURE WegHex(cDummy)
LOCAL nPosi  := 0
LOCAL cWeg
LOCAL cHex

   DO WHILE .T.
      nPosi := AT("%",cDummy)
      IF nPosi > 0
         cWeg := SUBSTR(cDummy,nPosi,3)   // "%XY"
         cHex := SUBSTR(cWeg,2,2)         // "XY" 
         cDummy  := STRTRAN(cDummy,cWeg,CHR(nHex2Byte(cHex)))
      ELSE
         EXIT
      ENDIF
   ENDDO
   cDummy  := cUtf8ToAnsi(cDummy)

RETURN
die Procedure per Reference aufrufen

Code: Alles auswählen

WegHex( @cDummy )
gruss by OHR
Jimmy
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2934
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: iTunes XML Playlist

Beitrag von Wolfgang Ciriack »

Frage : ist es bei XML egal in welcher Reihenfolge die TAGs stehen ?
Ja.
... und wie mache ich das dann mit meiner DBF wenn immer neue TAGs dazu kommen ?
Alle Tags in Variablen, über Datenbankfeld - Variablen - Array prüfen, ob entsprechendes Feld vorhanden.
Wenn nicht, entweder Tag ignorieren oder in Datenbank neues Feld hinzufügen. DBF-Var-Array ändern und sichern.
Viele Grüße
Wolfgang
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: iTunes XML Playlist

Beitrag von AUGE_OHR »

Wolfgang Ciriack hat geschrieben:Alle Tags in Variablen, über Datenbankfeld - Variablen - Array prüfen, ob entsprechendes Feld vorhanden.
Wenn nicht, entweder Tag ignorieren oder in Datenbank neues Feld hinzufügen. DBF-Var-Array ändern und sichern.
hm ... das wäre dann dynamisch anpassen ?

um die Tags zu finden, wobei die Keywords zwischen

Code: Alles auswählen

<key>xxx</key>
stehen, müsste man also erst einmal einen kompletten Durchlauf machen.
die Keywords werden dann zu Feldern ... wobei die Keywords (eindeutige) auf 10 Stellen für Feldnamen gekürzt werden müssten.

ich beziehe mich hier nur auf die "iTunes Library.xml" , welche auf "iTunes Library.itl" basiert welches ein binäres Format haben soll.
( mit einer unbekannten definierten Struktur. )
ich verwende jetzt die 38 o.g. Keywords / Felder und fange weitere Keywords als Fehlermeldung ( "_BUG.TXT" ) ab.

wer eine "iTunes Library.xml" hat möge doch bitte mal eine Kopie mit dem Demo laufen lassen,Danke.
READXML.ZIP
liest "iTunes Library.xml" -> iTunes.DBF
benötigt ot4xb und DXE (enthalten)
v1.9.355 SL1
(727.38 KiB) 199-mal heruntergeladen
angelegt wird ITUNES.DBF (FOXPRO2X) sowie *.PLI (Playlist) Dateien.
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: iTunes XML Playlist [erledigt]

Beitrag von AUGE_OHR »

Sorry ... leider stürzt das Programm, auf einem 64bit OS() ab, wenn es < 100 Einträge in einer Playlist sind :(
der Fehler ist dann im DXE Progressbar wenn "nEvery = 0" ist ... Minimum ist 1

hier nun erst mal eine korrigierte Version mit Workaround

Code: Alles auswählen

IF(nEvery=0,1,nEvery)
ich muss das aber noch in der DXE Progressbar Class abfangen oder zumindest eine Error Meldung einbauen denn in der letzten Version kommt noch nicht mal ein XppError.LOG ... :banghead:
READXML.ZIP
nur das EXE. benötigt ot4xb.DLL und DXE.DLL ( siehe voherige Version )
(26.38 KiB) 215-mal heruntergeladen
gruss by OHR
Jimmy
Antworten