Mein Programm automatisiert eine Radiostation. Es gibt viel Kommunikation zwischen iTunes und iTunes. Ich habe es mit Scripting Bridge programmiert. Scripting Bridge leidet unter Speicherlecks. Jeder Aufruf der Skriptbrücke führt zu einer geringen Speicherauslastung. Fügen Sie viele Aufrufe zu einem Programm hinzu, das rund um die Uhr läuft, und ich habe eine Software, die für weniger als 24 Stunden läuft und dann beendet wird.ITLibrary gibt mir nichts als (null)
Mein erster Versuch einer Lösung bestand darin, meine Aufrufe zur Skript-Bridge zu minimieren. Bei der Recherche zu diesem Ziel stieß ich auf ItunesLibrary. Es funktioniert nicht für mich.
NSError *error = nil;
ITLibrary *library = [ITLibrary libraryWithAPIVersion:@"1.0" error:&error];
if (library)
{
NSArray *playlists = [[NSArray alloc]init];
playlists = library.allPlaylists;
NSArray *tracks = [[NSArray alloc]init];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"mediaKind == %d", ITLibMediaItemMediaKindSong];
tracks = [library.allMediaItems filteredArrayUsingPredicate:predicate];
NSLog(@"Playlists - %@",playlists);
NSLog(@"Tracks - %@",tracks);
}
Dieser Code ist ziemlich genau aus Apples Dokumentation. Es sollte funktionieren - denke ich.
Bevor ich das Prädikat hinzugefügt habe, habe ich einige Informationen zu jedem der Podcasts in meiner iTunes-Bibliothek erhalten. In der nslog-Ausgabe erzeugt jede meiner Playlists einen ähnlichen Eintrag wie "". Jeder meiner Songs zeigt nichts mehr als (null).
Alle Informationen sind in iTunes. Ich kann es mit Scripting Bridge lesen. Ich kann es mit AVAsset lesen
Mit AVAsset bekomme ich nur den Song-Namen, Album-Namen und Künstlername. Ich muss auf die restlichen ID3-Tags von iTune zugreifen.
Was habe ich, um ItunesLibrary zu brechen?