6

我正在尝试使用 Google 的 Objective-C Youtube API 来获取 youtube 频道的播放列表 - 没有运气。

-我从以下网址下载了 Google 的官方 API: http ://code.google.com/p/gdata-objectivec-client/source/browse/#svn%2Ftrunk%2FExamples%2FYouTubeSample

但是示例应用程序并没有真正做任何事情——它甚至不是一个 iOS 示例应用程序。似乎是一个 Mac OS 应用程序。它的自述文件说:“这个示例应该在 GTL.framework 上自动构建和复制,作为构建和运行过程的一部分。”

好吧……然后呢?

你如何让它在 iPhone 应用程序中工作?

我还没有找到任何实际的说明来完成这项工作。

知道我们应该在这里做什么吗?

4

4 回答 4

0

youtube 的“gdata-objectivec-client”已被 JSON-API Link取代。向下滚动到 youtube。

此处为支持 JSON-API 是详细信息链接

要获取播放列表,请查看Link

于 2013-10-21T20:43:13.080 回答
0

我花了一天半的时间试图弄清楚如何使用他们作为示例给出的 MAC OSX 应用程序。我最终得到了一个 iPhone 应用程序,我设法构建它来获取我从 YouTube 上传的所有视频。

链接:YouTube项目

为了使它工作:

  • 您必须从 google 添加 GData 项目
  • 在 LTMasterViewController.m-> (GDataServiceGoogleYouTube *)youTubeService: 输入你的用户名和密码
于 2013-03-28T09:52:11.297 回答
0

您可以在此路径尝试源代码 https://bitbucket.org/eivvanov/youtubedemo/overview

于 2013-03-08T04:55:50.463 回答
0

对于迷路的新手:考虑一个示例函数,这将有助于理解获取、解析、显示等的整个周期,并将 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");
    }
   }
}];

}
于 2016-05-02T12:36:28.877 回答