昨天还在说python x Scripting-Bridge 访问iTunes很方便,今天就被Naville告知可以用iTunesLibrary.framework。。。
那两篇post,
P.S,其实一开始让我用iTunesLibrary.framework的时候我是拒绝的,因为你不能让我用,我就马上用,第一我要试一下,因为我不愿意用完了以后再加一些特技上去,iTunes资料库“咣”一下,很全、很方便,这样程序[猿|媛]出来一定会骂我,根本没有这样的资料库,就证明上面那个是假的。后来我也经过证实它确实是好用的,我用了大概一个月左右,感觉还不错,后来我在用的时候也要求他们不要加特技,因为我要让程序[猿|媛]看到,我用完之后是这个样子,你们用完之后也会是这个样子!
要在项目里使用iTunesLibrary.framework,你得先把这个framework添加到build phases的link binary with libraries里。而这个framework并不在Xcode默认的framework列表里,它在/Library目录下。
添加好iTunesLibrary.framework,就可以在文件中import了。以下是一些简单的使用~
ITLibrary * lib = [[ITLibrary alloc] initWithAPIVersion:@"1.0" error:nil]; // initWithAPIVersion // 这个我也不知道具体该怎么写...找遍了头文件也没发现任何定义 // 总之我写的是@"1.0", 可以正常使用 [[lib allMediaItems] enumerateObjectsUsingBlock:^(ITLibMediaItem * obj, NSUInteger idx, BOOL *stop) { if ([obj mediaKind] & (ITLibMediaItemMediaKindSong | ITLibMediaItemMediaKindMovie | ITLibMediaItemMediaKindHomeVideo)) { NSLog(@"%@ is performed by %@",[obj title],[[obj artist] name]); switch ([[obj artwork] imageDataFormat]) { case ITLibArtworkFormatPNG: break; case ITLibArtworkFormatBMP: break; case ITLibArtworkFormatTIFF: break; default: break; } [[[[obj artwork] image] TIFFRepresentation] writeToFile:@"artwork.tiff" atomically:YES]; } }];
突然感觉没什么特别好讲的,ObjC的方法名特别清晰。
唯一要提的就是,在这里获取的都是readonly属性的。所以通过iTunesLibrary.framework来做一个filter类的应用还是很方便,但想更改对应的属性,添加播放列表等等的话,还是要通过Scripting Bridge的。