首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从iPodLibrary获取播客元数据

从iPodLibrary获取播客元数据
EN

Stack Overflow用户
提问于 2013-09-01 05:07:53
回答 2查看 1.4K关注 0票数 1

下面是在iOS设备的iPod库中获取项目的代码,我遇到的问题是如何获取正确的MPMediaItemProperty。按照我的理解,如果我想获得像图片,评论标题这样的数据,我必须在我的- (MPMediaItem *)mediaItemForRow: (NSInteger)row方法中获取MPMediaItemCollection类的一个媒体项。

这样做的问题是,我没有得到与苹果相同的信息-因为我已经检查了他们的播客应用程序。他们必须使用其他方式来获取数据,因为我只能从每个播客节目中获得评论。此外,我也只为某些播客获得艺术作品。而在播客应用中,他们都有艺术作品。

所以我一定是做错了什么?

代码语言:javascript
复制
@interface testclassViewController ()
@property (nonatomic, strong)       NSArray                         *audiobooks;
@end

@implementation testclassViewController


- (void)viewDidLoad
{
    [super viewDidLoad];
    MPMediaItem *mediaItem = [self mediaItemForRow:0];
    self.testText.text = [mediaItem valueForProperty:MPMediaItemPropertyComments];
    MPMediaItemArtwork *img = [mediaItem valueForProperty:MPMediaItemPropertyArtwork];
    UIImage *artworkUIImage = [img imageWithSize:CGSizeMake (128, 128)];
    self.testImage.image = artworkUIImage;



}


#pragma mark - query settings 

- (MPMediaPropertyPredicate *)mediaTypeToFetchFromiPodLibrary
{
    MPMediaPropertyPredicate *abPredicate =
    [MPMediaPropertyPredicate predicateWithValue:[NSNumber numberWithInt:MPMediaTypePodcast]
                                     forProperty:MPMediaItemPropertyMediaType];
    return abPredicate;
}


- (MPMediaQuery *)setMediaQueryOptions: (MPMediaQuery*)abQuery
                         withPredicate: (MPMediaPropertyPredicate*) abPredicate
{
    [abQuery addFilterPredicate:abPredicate];
    //[abQuery setGroupingType:MPMediaGroupingAlbum];
    [abQuery setGroupingType:MPMediaGroupingPodcastTitle];
    return abQuery;
}

#pragma mark -

- (MPMediaItem *)mediaItemForRow: (NSInteger)row
{
    NSArray *audiobooks = self.audiobooks;
    MPMediaItem *mediaItem = nil;

    id object = audiobooks[row];
    if ([object isKindOfClass:[MPMediaItemCollection class]]) {
        MPMediaItemCollection *book = (MPMediaItemCollection *)object;

        id item = [book items][0];
        if ([item isKindOfClass:[MPMediaItem class]]) {
            mediaItem = (MPMediaItem *)item;
        }
    }

    return mediaItem;
}


/* Get´s the sub items for Podcasts title */
- (NSArray *)subMediaItemsForPodcastTitle: (NSString *)podcastTitle
{
    NSMutableArray *subMediaItemsToReturn = [NSMutableArray array];
    for (id collections in self.audiobooks) {
        if ([collections isKindOfClass:[MPMediaItemCollection class]]) {
            MPMediaItemCollection *collection = (MPMediaItemCollection *)collections;
            for (id mediaItems in collection.items) {
                MPMediaItem *mediaitem = (MPMediaItem *)mediaItems;

                NSString *mediaItemTitle = [mediaitem valueForProperty:MPMediaItemPropertyPodcastTitle];
                if ([mediaItemTitle isEqual:podcastTitle]) {
                    //NSLog(@"found mediaItem belonging to title: %@",mediaItemTitle);
                    [subMediaItemsToReturn addObject:mediaitem];
                }
            }
        }
    }
    return  subMediaItemsToReturn;
}

// property getter
- (NSArray *)audiobooks
{
    MPMediaPropertyPredicate *abPredicate = [self mediaTypeToFetchFromiPodLibrary];
    MPMediaQuery *abQuery = [[MPMediaQuery alloc] init];
    abQuery = [self setMediaQueryOptions:abQuery withPredicate:abPredicate]; // Abstract
    NSArray *books = [abQuery collections];

    return books;
}

@end
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-16 01:00:53

如果用户使用播客应用程序下载播客节目,很多元数据都会丢失(评论等)。如果用户通过使用iTunes同步在设备上获取播客,则大部分数据都在那里。我本打算提交一个bug,但是没有。获取一些使用MPMediaPlayer框架可能无法显示的数据的一种方法是使用AVFoundation直接获取id3标记数据。

代码语言:javascript
复制
#import <AVFoundation/AVFoundation.h>
#import <MediaPlayer/MediaPlayer.h>


MPMediaItem *item;
AVURLAsset *itemAsset = [item valueForProperty:MPMediaItemPropertyAssetURL];
NSArray *mDatsForFormats = [itemAsset metadataForFormat:@"org.id3"];

for (AVMetadataItem *mDatItem in mDatsForFormats){
    if (mDatItem.stringValue) {
        NSLog(@"\nkey %@\nvalue %@",mDatItem.key,mDatItem.stringValue);
    }
    NSLog(@"%@",mDatItem);

}
票数 1
EN

Stack Overflow用户

发布于 2018-07-11 03:45:38

在iOS 10中,我发现播客插图只能用于使用iOS播客应用程序下载的剧集。从Mac上的iTunes同步的剧集不包含播客插图。希望这对其他人有帮助。(添加了这个作为答案,因为评论是不稳定的,不容易搜索)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18552844

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档