【问题标题】:Youtube GData Videos in a Playlist播放列表中的 Youtube GData 视频
【发布时间】:2012-09-24 06:56:56
【问题描述】:

美好的一天,我是这个 Youtube GData api 的新手,我无法访问特定播放列表的视频列表。

我首先做的是获取特定用户的播放列表列表。它返回了类似GDataEntryYouTubePlaylistLink 0x888ea20: {v:2.1 title:Playlist Title summary: contentSrc:https://gdata.youtube.com/feeds/api/playlists/PL5......92D127 etag:W/"D04N.....WhJVEU8." authors:1 categories:1 links:related,alternate,self id:tag:youtube.com,2008:user:MyYoutubeUser:playlist:PL5......92D127 countHint:7 unparsed:<media:group>}

我了解到 countHint 是该播放列表中的视频数量。现在,我想获取这些视频。

我尝试创建一个可以这样做的函数,但我不知道我将使用什么 FeedID:

    GDataServiceGoogleYouTube *service = [self youTubeService];

NSString *feedID = kGDataYouTubeUserFeedIDPlaylists; //this was the feedID i used to get the list of playlist of a user
NSURL *feedURL = [GDataServiceGoogleYouTube youTubeURLForUserID:@"MyYoutubeUser"
                                                        userFeedID:feedID];

[service fetchFeedWithURL:feedURL
                 delegate:self
        didFinishSelector:@selector(request:finishedLoading:error:)];

【问题讨论】:

  • 您在这里取得了成功吗?我也遇到过这个问题。
  • 是的,我之前能够解决这个问题。将查看我的代码。 :)

标签: objective-c ios5 youtube-api gdata-api


【解决方案1】:

我能够找到我的问题的解决方案。我希望它也能帮助到你。

在我的 viewDidLoad 中,我调用了 loadYoutube 和 loadYoutubePlaylist 函数。

  • loadYoutube -> 为我们提供给定用户的 URL 和 feedID。在我的例子中,feedID 是 kGDataYouTubeUserFeedIDUploads,因为我只想获取用户上传的播放列表和视频。
  • loadYoutubePlaylist -> 为我们提供了用户播放列表的 URL。 feedID 是 kGDataYouTubeUserFeedIDPlaylists
  • loadYoutubeVideosPerPlaylist -> 为我们提供每个播放列表的视频 URL。

代码如下所示:

- (void)loadYoutube
{
    GDataServiceGoogleYouTube *service = [self youTubeService];

    NSString *uploadsID = kGDataYouTubeUserFeedIDUploads;
    NSURL *feedURL = [GDataServiceGoogleYouTube youTubeURLForUserID:@"USERNAME"
                                                         userFeedID:uploadsID];
    NSLog(@"loadYoutube URL: %@", feedURL);
    [service fetchFeedWithURL:feedURL
                     delegate:self
            didFinishSelector:@selector(request:finishedLoadingYoutubeWithFeed:error:)];
}

- (void)loadYoutubePlaylist
{
    GDataServiceGoogleYouTube *service = [self youTubeService];

    NSString *feedID = kGDataYouTubeUserFeedIDPlaylists;
    NSURL *feedURL = [GDataServiceGoogleYouTube youTubeURLForUserID:@"USERNAME"
                                                            userFeedID:feedID];
    NSLog(@"loadYoutubePlaylist URL: %@", feedURL);
    [service fetchFeedWithURL:feedURL
                     delegate:self
            didFinishSelector:@selector(request:finishedLoadingPlaylistWithFeed:error:)];
}

- (void)loadYoutubeVideosPerPlaylist:(NSString *)urlString
{
    GDataServiceGoogleYouTube *service = [self youTubeService];
    NSURL *feedURL = [NSURL URLWithString:urlString];

    NSLog(@"loadYoutubeVideosPerPlaylist URL: %@", feedURL);

    [service fetchFeedWithURL:feedURL
                     delegate:self
            didFinishSelector:@selector(request:finishedLoadingYoutubeVideosPerPlaylistWithFeed:error:)];
}

这里是 Youtube 请求..

#pragma mark - Youtube Requests

- (void)request:(GDataServiceTicket *)ticket finishedLoadingYoutubeWithFeed:(GDataFeedBase *)aFeed error:(NSError *)error
{

}

- (void)request:(GDataServiceTicket *)ticket finishedLoadingPlaylistWithFeed:(GDataFeedBase *)aFeed error:(NSError *)error
{
    if (kGDataYouTubeUserFeedIDPlaylists) {
        self.playlistFeed = (GDataFeedYouTubeVideo *)aFeed;

        NSArray *feedArray = [self.playlistFeed entries];
        for (int i = 0; i < [feedArray count]; i++) {
            GDataEntryBase *entry = [[self.playlistFeed entries] objectAtIndex:i];
            NSString *title = [[entry title] stringValue];
            [playlist addObject:NSLocalizedString(title, @"playlistTitle")];
            NSLog(@"%@", [[entry content] sourceURI]);
            [videoPlaylistURLArray addObject:[[entry content] sourceURI]];
        }
    }
    if (!error) {
        [self addMenuButtons];
        [self setPlaylistIndex:0];
        [SVProgressHUD showSuccessWithStatus:@"Success!"];
    }else{
        [SVProgressHUD showErrorWithStatus:@"Failed Fetching Playlist."];
    }
}

- (void)request:(GDataServiceTicket *)ticket finishedLoadingYoutubeVideosPerPlaylistWithFeed:(GDataFeedBase *)aFeed error:(NSError *)error
{
    self.feed = (GDataFeedYouTubeVideo *)aFeed;
    [self.youtubeTable reloadData];
}

【讨论】:

  • 太棒了,谢谢。现在设法获取我的播放列表视频列表!诀窍是传递正确的 URL。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-18
  • 1970-01-01
  • 2016-07-01
  • 1970-01-01
  • 2011-04-05
  • 2014-09-24
  • 1970-01-01
相关资源
最近更新 更多