检索YouTube频道视频的频道名称



我正在寻找Youtube Data API V3中的两个API调用。

首先,我想通过指定通道名称来获得通道ID。

一旦我有了频道ID,我想从该频道获得n视频数。

我正在寻找我必须做的API调用。

还有,有没有人知道频道或视频id是否有可能在某个时候改变?如果他们可以改变相同的视频/频道,那么我不应该在我的代码中硬编码ID。

谢谢

对于想要一个运行示例的新手:考虑一个函数,它将有助于理解fetch,parse,display等整个周期,并将youtube频道的视频具体带到您的tableview中。我没有写tableview部分

-(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");
        }
    }
    }];
}

第一个调用是搜索。设置q为通道名,type="channel"的列表

第二个是调用通道。并获取已上传视频列表的playlistId。

第三个是playlistItems。

相关内容

  • 没有找到相关文章

最新更新