sdef /Applications/iTunes.app | sdp -fh --basename iTunes
- ( void ) ExportLibrary
{
Boolean shouldExportTrack = NO;
// iTunes
iTunesApplication *iTunes = [SBApplication applicationWithBundleIdentifier: @"com.apple.iTunes" ];
// iTunes ( , )
iTunesLibraryPlaylist *library = [[[[iTunes sources] objectAtIndex:0] playlists] objectAtIndex:0];
iTunesTrack *track;
// XML
NSXMLDocument *xmlNew = [[NSXMLDocument alloc] initWithXMLString: @"<?xml version=\"1.0\"?><LIBRARY/>" options:0 error:NULL];
NSXMLElement *rootNode = [xmlNew rootElement], *curNode;
//
NSInteger curLibTrack = 0, nLibTracks = [[library tracks] count];
NSLog( @"%i" , nLibTracks);
//
for (curLibTrack = 0; curLibTrack < nLibTracks; curLibTrack++)
{
track = [[library tracks] objectAtIndex:curLibTrack];
shouldExportTrack = (track.rating > 0 || track.playedCount > 0); //
if (shouldExportTrack)
{
// XML
curNode = [[NSXMLElement alloc] initWithXMLString: @"<TRACK n=\"\" name=\"\" played=\"\" rating=\"\" />" error:NULL];
[[curNode attributeForName: @"n" ] setStringValue:[NSString stringWithFormat: @"%i" , curLibTrack]];
// getTrackMetaName, ,
// , , ( Beyoncé Anggun)
[[curNode attributeForName: @"name" ] setStringValue:[self getTrackMetaName:track]];
[[curNode attributeForName: @"played" ] setStringValue:[NSString stringWithFormat: @"%i" , track.playedCount]];
[[curNode attributeForName: @"rating" ] setStringValue:[NSString stringWithFormat: @"%i" , track.rating]];
[rootNode addChild:curNode];
[curNode release];
}
}
//
[[xmlNew XMLData] writeToFile:( @"/Users/max/Desktop/old-library.xml" ) atomically:NO];
[xmlNew release];
}
* This source code was highlighted with Source Code Highlighter .
Source: https://habr.com/ru/post/52137/