2012-09-24 31 views
1

好日子,我是新Youtube GData api和我無法訪問特定播放列表的視頻列表。Youtube在播放列表中的GData視頻

我最先做的是獲取特定用戶播放列表的列表。它返回像這樣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:)]; 
+0

你有任何的成功嗎?我也遇到過這個問題。 –

+0

是的,我可以在此之前解決此問題。將查看我的代碼。 :) –

回答

1

我能找到解決我的問題。我希望它也能幫助你。

在我的viewDidLoad中,我調用了loadYoutube和loadYoutubePlaylist函數。

  • loadYoutube - >給我們提供給用戶的URL和什麼feedID。在我的情況下,feedID是kGDataYouTubeUserFeedIDUploads,因爲我只想獲取用戶上傳的播放列表和視頻。
  • loadYoutubePlaylist - >向我們提供用戶播放列表的URL。 feedID爲kGDataYouTubeUserFeedID播放列表
  • loadYoutubeVideosPerPlaylist - >向我們提供每個播放列表的視頻網址。

這是怎樣的代碼看起來像:

- (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]; 
} 
+0

神奇,謝謝你。現在管理我的播放列表視頻列表!訣竅是傳遞正確的URL。 –

相關問題