2014-01-23 3 views
2

У меня возникли проблемы с получением видеоролика для видео YouTube. Я могу получить элементы плейлиста с эскизом и заголовком, но я не могу получить фактический видеоролик.URL-адрес YouTube Objective-C API из плейлиста

GTLServiceYouTube *service = [[GTLServiceYouTube alloc] init]; 

service.APIKey = @"API Key"; 

GTLQueryYouTube *query = [GTLQueryYouTube queryForPlaylistItemsListWithPart:@"snippet,contentDetails"]; 
query.playlistId = @"playlist ID"; 
query.maxResults = 50; 

GTLServiceTicket *ticket = [service executeQuery:query 
           completionHandler:^(GTLServiceTicket *ticket, id object, NSError *error) { 
            // This callback block is run when the fetch completes 
            if (error == nil) 
            { 
             GTLYouTubeSearchListResponse *products = object; 
             for (GTLYouTubeSearchResult *item in products) 
             { 
              NSLog(@"%@", item.snippet); 
              NSString *dictionary = [item.snippet JSONValueForKey:@"videoId"]; 
              GTLYouTubeThumbnailDetails *thumbnails = item.snippet.thumbnails; 
              GTLYouTubeThumbnail *thumbnail = thumbnails.high; 
              NSString *thumbnailString = thumbnail.url; 
              if (thumbnailString != nil) 
              { 
               [self.thumbnailsArray addObject:thumbnailString]; 
               [self.thumbnailTitleArray addObject:item.snippet.title]; 
               //[self.videos addObject:video]; 
               NSLog(@"id: %@", dictionary); 
              } 

             } 
            } 
            else 
            { 
             NSLog(@"Error: %@", error.description); 
            } 
            [self.tableView reloadData]; 
           }]; 

Кто-нибудь знает, как получить видеоролик с помощью API YouTube?

ответ

2

Прежде всего, если вы хотите только видео в результате вашего поиска вы должны установить type = видео. В коде:

query.playlistId = @"playlist ID"; 
query.maxResults = 50; 
query.type = @"video"; 

Вам нужно добавить «идентификатор» в части. Ваш звонок запрос будет:

GTLQueryYouTube *query = [GTLQueryYouTube queryForPlaylistItemsListWithPart:@"id,snippet,contentDetails"]; 

и в ответ вы можете получить идентификатор видео с id.videoId. Так что в вашем коде будет:

NSString *videoId = item.identifier.videoId; 

После того, как у вас есть идентификатор, вы можете подключить его:

http://www.youtube.com/watch?v={VIDEO ID HERE} 
+0

Работал отлично! Мне просто нужно было изменить item.id.videoId на item.identifier.videoId. Спасибо за ваш ответ! : D –

0

video resource в API v3 не содержит URL-адреса. Вместо этого вы можете добавить идентификатор видео в строку. Играть страницу URL, как правило, в формате:

http://www.youtube.com/watch?v={VIDEO ID HERE} 
+0

Спасибо за ответ! : D У меня также возникают проблемы с получением видео. Он возвращает null. Я вижу видеоизображение внутри объекта resourceId JSON. –

Смежные вопросы