[MySQL] ITunes Titelliste exportieren

RuL3R

Commodore
Registriert
Dez. 2004
Beiträge
4.577
Hi ich möchte gerne eine kleine Datenbank schreiben, in die eine Titelliste von iTunes eingelesen werden kann. Dabei wollte ich ein LOAD DATA IN FILE benutzen. Jetzt weiß ich nur nicht wie ich die Datei einlesen soll.

Titelname Interpret Komponist Album Werk Musikrichtung Größe Dauer CD-Nummer Zähler Titelnummer Zähler Jahr Geändert Hinzugefügt Datenrate Abtastrate Lautstärkeanpassung Art Equalizer Kommentar Zähler Zuletzt gespielt Meine Wertung Ort
Chiquitita ABBA Björn Ulvaeus Gold Pop 6528634 326 1 1 11 19 1979 27.02.2006 01:06 27.02.2006 00:12 160 44100 MPEG-Audiodatei C:\Pfad\...\Abba - Chiquitita.mp3

Ich hoffe mir kann da jemand helfen.
 
Zuletzt bearbeitet:
Sind das Tabs zwischen den Feldern?

Falls ja - im Excel oder OpenOffice importieren - die gewünschten Felder im CSV-Format exportieren - die tabellen erstellen und die csv datei importiern (mysql administrator, mysql query browser oder phpmyadmin)
 
Ne ich das sind nur Leerzeilen. Sonst wär das ja kein Problem. :(
 
Mit PHP arbeiten ist ja kein Problem. Das große Problem besteht nur darin, dass Lieder oder Gruppen manchmal aus mehreren Wörtern bestehen und deswegen auch Leerzeichen entstehen.
 
Exportier die Liste als XML, damit kannste komfortabler arbeiten (wenn du PHP5 nutzen kannst bzw. benutzt).
 
Nunja irgendein eindeutiges Trennzeichen sollte schon vorhanden sein zum Unterscheiden.
Kann auch ein Zeilenwechselzeichen sein.

Und bzgl. der Flexibilität und Leerzeichenproblematik bieten sich RegEx an
also ereg, pregmatch usw. ;)

einlesen kann man die Datei mit fopen, fread, oder halt mit file
Schau einfach mal auf php.net
 
Ja mit XML kann ich das auch nochmal ausprobieren. Da muss ich mich dann nur noch mal ein bisschen einlesen. Damit habe ich mich bisher noch nicht beschäftigt.

@Relict: Wie funktioniert das mit dem RegEx? Wie weiß PHP denn ob das Leerzeichen jetzt ein neues Feld ist oder noch zum alten gehört?
 
Doch das Schema / Reihenfolge ist ja immer wieder gleich, nur die Inhalte unterschiedlich

Titelname Interpret Komponist Album Werk Musikrichtung Größe Dauer CD-Nummer Zähler Titelnummer Zähler Jahr Geändert Hinzugefügt Datenrate Abtastrate Lautstärkeanpassung Art Equalizer Kommentar Zähler Zuletzt gespielt Meine Wertung Ort

und hier gehts eigentlich los mit verwertbaren Inhalt

Chiquitita ABBA Björn Ulvaeus Gold Pop 6528634 326 1 1 11 19 1979 27.02.2006 01:06 27.02.2006 00:12 160 44100 MPEG-Audiodatei C:\Pfad\...\Abba - Chiquitita.mp3

Das wird natürlich eine etwas aufwendigere und knifflige regex, die man ohne probieren aus dem Stehgreif sicher nicht auf Anhieb hinbekommt. ;)

Möglich ists aber definitiv damit, wenns dich tröstet, nur seeeeeehr knifflig. ;)
 
Zuletzt bearbeitet:
Ich habe ja ein Beispiel gepostet, wie die Datei aufgebaut ist. Aber wie du siehst befinden sich dort ja leider keine Sonderzeichen oder so, an denen man sich orientieren könnte. Nichtmal doppelte Leerzeichen oder Tabs... :(

EDIT: Also irgendwie versteh ich das nicht so ganz. Wenn das Lied jetzt zum Beispiel "Chiquita Test" heißen würde dann würde sich doch alles verschieben, weil es gibt doch nirgendwo einen sichtbaren Unterschied ob das jetzt 1, 2 oder 3 Wörter im Titel sind.

z.B wenn der Titel aus 3 Wörten besteht, die Band aus 2 Wörtern, dann könnte das doch auch so gelesen werden, dass der Titel aus 2 Wörtern und der Interpret aus 3 Wörtern besteht.
 
Zuletzt bearbeitet:
Das Beispiel nützt niemandem was, weil hier alle Formatierungen der Datei verloren gehen.
Wenn dann müsstest Du eine etwas gekürzte Datei mal anhängen, um die Struktur genauer zu analysieren. bzgl .Zeilenumbruch, versteckte Sonderzeichen usw.

Denn itunes wird diese Datei ja sicher auch korrekt einlesen können und zaubern kann auch iTunes mit Sicherheit nicht ?
 
Ok werd ich heute abend mal machen. Hier auf der Arbeit geht das schlecht. ;)
 
Also ich glaube, mit XML wirds schneller gehen :) Hab selber erst einmal mit PHP und XML gearbeitet, ging aber ganz gut :)
 
Was wäre denn bei XML anders, das ganze Dateiformat von vornherein oder wie ?
Weil ansonsten wüsste ich jetzt nicht, warum es mit XML schneller gehen sollte ?

Doch wenn es so wäre, dann könnte man ja zb. auch viel einfahcer die erzeugte xml file per php und regex in die mysql importieren, statt dieser unformatierten Shice hier. :)

PS:
Ich habe kein iTunes, aber wenn es noch andere Exportformate gibt, dann auf jedenfall eher diese.
Denn das hier ist mit Sicherheit das Ungeeignetste für solche Sachen, ausser man kann vorher explizit auch eigene Trennzeichen angeben.
 
Zuletzt bearbeitet:
Mir gings mehr oder weniger um die angeboten Schnittstellen/ Exportformate von diesem iTunes.
Denn das ist in jedem Falle Vorraussetzung. Denn glaube kaum das man mit obigem Beispiel sinnvoll mit XML weiterkommt. ;)
 
iTunes bietet den Export der Listen als XML Datei. Somit kann man mit dem Beispiel was anfangen.
 
So sieht das ganze in XML aus:
Code:
		<key>44</key>
		<dict>
			<key>Track ID</key><integer>44</integer>
			<key>Name</key><string>Ride of the Valkyries</string>
			<key>Artist</key><string>Wagner</string>
			<key>Genre</key><string>Classical</string>
			<key>Kind</key><string>MPEG-Audiodatei</string>
			<key>Size</key><integer>9723582</integer>
			<key>Total Time</key><integer>607712</integer>
			<key>Date Modified</key><date>2005-12-05T20:33:07Z</date>
			<key>Date Added</key><date>2006-01-04T13:31:13Z</date>
			<key>Bit Rate</key><integer>128</integer>
			<key>Sample Rate</key><integer>44100</integer>
			<key>Normalization</key><integer>1448</integer>
			<key>Persistent ID</key><string>BFF44B4074DD8FA1</string>
			<key>Track Type</key><string>File</string>
			<key>Location</key><string>file://localhost/C:/Pfad/.../Wagner%20-%20Ride%20of%20the%20Valkyries.mp3</string>
			<key>File Folder Count</key><integer>-1</integer>
			<key>Library Folder Count</key><integer>-1</integer>
		</dict>


Die .txt Datei für die andere Ausgabe hänge ich mal hinten an.
 

Anhänge

Jaha das sieht doch schon ganz anders aus. :D

1. Mit der XML gehts recht easy mit explode befehlen.

2. In der angehängten Datei sind jede Menge nichtdruckbare Zeichen (Tabstopps) zwischen den einzelnen Rubriken (die aber das script sehen würde) , die auch analog zu handlen wären.

Gingen also schonmal beide Möglichkeiten
 
Hmm - also das ist definitiv möglich das .txt file zu parsen.
Das erste Problem wird leider der Zeichensatz sein. Ich weis leider nicht welcher vertreter von Unicode diese Datei kodiert hat - aber es sieht nach UTF16 aus.
Ab Offset 0x1D7 kommt: 0x00 0D 00 0A also in waschechter \r\n. Zwischen den einzelnen feldern sind auch Tabs: z.B: an Offset 0x1EF: 0x00 09

Wenn ich mal kurz in PHP weiterdenken darf:
PHP:
$dateiInhalt = file_get_contents("Abba.txt");
$zeilen = explode(0x000D000A, $dateiInhalt);

$spaltenNamen = array();

foreach($zeilen as $zeilenNummer => $zeile) {
    if($zeilenNummer == 0)  {
        $spaltenNamen = explode(0x0009, $zeile);
        continue;
    }
    echo "<ul>";
    $spalten = explode(0x0009, $zeile);
    foreach($spalten as $spaltenNummer => $spaltenInhalt) {
        echo "<li>" . $spaltenNamen[$spaltenNummer] . ": ". $spaltenInhalt . "</li>";
    }
    echo "</ul>";
}

Edit:
Hast du ne Linux-Shell zur hand? Falls ja, lass dir die Textdatei erzeugen. Dekodier die Textdatei mit dem programm recode von UTF16 nach UTF8 und die hälfte deiner Probleme sind weg :) Dann kannste so weit ich weis die CSV wieder mit excel usw öffnen.
 
Zuletzt bearbeitet:
Zurück
Oben