2013-07-23 2 views

ответ

3

Вы можете извлечь идентификатор видео из URL, а затем сделать запрос HTTP GET:.

https://gdata.youtube.com/feeds/api/videos/dQw4w9WgXcQ?v=2&alt=json

где dQw4w9WgXcQ является идентификатором видео вы заинтересованы в этом возвращает ответ JSON, с имя канала в поле author (щелкните ссылку для примера).

Для получения дополнительной информации см. Retrieving Data for a Single Video и остальную документацию по API YouTube.

См., Например, How do I find all YouTube video ids in a string using a regex? для некоторых способов получить идентификатор видео с URL-адреса YouTube.

+0

+1 для того, чтобы помочь мне с моей подобной проблемой. Оно работает. Я не могу поверить, что у youtube API-3 нет более простого способа, но хорошо ... он работает .. – CashCow

5

Вы можете сделать это легко, используя YouTube Data API v3.

Последняя часть URL-адреса после «http://www.youtube.com/watch?v=» является вашим VIDEO_ID.

Просто сделайте videos->list с установочной частью = "фрагмент". Затем вы можете взять snippet.channelId в ответе.

Запрос будет:

GET https://www.googleapis.com/youtube/v3/videos?part=snippet&id=EhNWzcUqGbI&key= {YOUR_API_KEY}

для примера.

Вы всегда можете попробовать это, используя API explorer.

Great sample codes, для того чтобы вы начали.

1

Для всех новичков, которые потеряны: рассмотрите пример функции, которая поможет понять весь цикл извлечения, разбора, отображения и т. Д. И принести видео с каналом youtube прямо в ваш планшет. im не пишут часть стола здесь

-(void)initiateRequestToYoutubeApiAndGetChannelInfo 
{ 
NSString * urlYouCanUseAsSample = @"https://www.googleapis.com/youtube/v3/search?key={YOUR_API_KEY_WITHOUT_CURLY_BRACES}&channelId={CHANNEL_ID_YOU_CAN_GET_FROM_ADDRESS_BAR_WITHOUT_CURLY_BRACES}&part=snippet,id&order=date&maxResults=20"; 



NSURL *url = [[NSURL alloc] initWithString: urlYouCanUseAsSample]; 

// Create your request 
NSURLRequest *request = [NSURLRequest requestWithURL:url]; 



    // Send the request asynchronously remember to reload tableview on global thread 
[NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc] init] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) { 

    // Callback, parse the data and check for errors 
    if (data && !connectionError) { 
     NSError *jsonError; 

     NSDictionary *jsonResult = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&jsonError]; 

     if (!jsonError) { 
     // better put a breakpoint here to see what is the result and how it is brought to you. Channel id name etc info should be there 

      NSLog(@"%@",jsonResult); 

     /// separating "items" dictionary and making array 

      // 
    id keyValuePairDict = jsonResult; 
    NSMutableArray * itemList = keyValuePairDict[@"items"]; 
      for (int i = 0; i< itemList.count; i++) { 


     /// separating VIDEO ID dictionary from items dictionary and string video id 
      id v_id0 = itemList[i]; 
      NSDictionary * vid_id = v_id0[@"id"]; 
      id v_id = vid_id; 
      NSString * video_ID = v_id[@"videoId"]; 

     //you can fill your local array for video ids at this point 

      //  [video_IDS addObject:video_ID]; 

     /// separating snippet dictionary from itemlist array 
      id snippet = itemList[i]; 
      NSDictionary * snip = snippet[@"snippet"]; 

     /// separating TITLE and DESCRIPTION from snippet dictionary 
      id title = snip; 
      NSString * title_For_Video = title[@"title"]; 
      NSString * desc_For_Video = title[@"description"]; 

    //you can fill your local array for titles & desc at this point 

       // [video_titles addObject:title_For_Video]; 
       // [video_description addObject:desc_For_Video]; 




     /// separating thumbnail dictionary from snippet dictionary 

      id tnail = snip; 
      NSDictionary * thumbnail_ = tnail[@"thumbnails"]; 

     /// separating highresolution url dictionary from thumbnail dictionary 

      id highRes = thumbnail_; 
      NSDictionary * high_res = highRes[@"high"]; 

     /// separating HIGH RES THUMBNAIL IMG URL from high res dictionary 

      id url_for_tnail = high_res; 
      NSString * thumbnail_url = url_for_tnail[@"url"]; 
    //you can fill your local array for titles & desc at this point 

       [video_thumbnail_url addObject:thumbnail_url]; 


      } 
     // reload your tableview on main thread 
    //[self.tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO]; 
    performSelectorOnMainThread:@selector(reloadInputViews) withObject:nil waitUntilDone:NO]; 


     // you can log all local arrays for convenience 
     // NSLog(@"%@",video_IDS); 
      // NSLog(@"%@",video_titles); 
      // NSLog(@"%@",video_description); 
      // NSLog(@"%@",video_thumbnail_url); 
     } 
     else 
     { 
      NSLog(@"an error occurred"); 
     } 
    } 
}]; 

}