IOS - 使用Youtube API检查是否存在Youtube视频

3

我已经搜索过,但找不到任何关于如何使用YouTube API和Objective-C检查YouTube视频是否存在的文章。如何在代码中实现?

编辑

我已经尝试过这个方法,但是一直收到来自YouTube的400错误:

GDataQueryYouTube * query = [[GDataQueryYouTube alloc] init];

        query.feedURL = [NSURL URLWithString:[NSString stringWithFormat:@"https://www.googleapis.com/youtube/v3/videos?id=%@", textFieldYoutube.text]];

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

        service.userAgent = @"xxx";

        [service fetchFeedWithQuery:query
              completionHandler:^(GDataServiceTicket *ticket, GDataFeedBase *feed, NSError *error)
         {
             if(!error)
             {
             NSArray * entries = feed.entries;

             if(entries.count)
             {
                 GDataEntryYouTubeVideo * firstVideo = entries[0];
             }
             }

 }];
1个回答

2

您应该请求此URL

https://www.googleapis.com/youtube/v3/videos?part=status&id=%@&key=%@,yourVideoId,yourYoutubeAPIKey

请求此URL后,您将获得一些类似于 JSON 响应的内容。

    2016-08-10 11:14:44.157 YourApp[10127:86552] {
    etag = "\"I_8xdZu766_FSaexEaDXTIfEWc0/rBQu-ew0vFUVDl87HWqheTjFeZ4\"";
    items =     (
                {
            etag = "\"I_8xdZu766_FSaexEaDXTIfEWc0/qO4hLAd6uXnb116ECPtCa2RwNxM\"";
            id = zhDsNTmoENc;
            kind = "youtube#video";
            status =             {
                embeddable = 1;
                license = youtube;
                privacyStatus = public;
                publicStatsViewable = 1;
                uploadStatus = processed;
            };
        }
    );
    kind = "youtube#videoListResponse";
    pageInfo =     {
        resultsPerPage = 1;
        totalResults = 1;
    };
}

2016-08-10 11:14:44.153 YourApp[10127:86568] {
etag = "\"I_8xdZu766_FSaexEaDXTIfEWc0/OWcvT3ot9zyYa1s4P5GWh8yMPIQ\"";
items =     (
            {
        etag = "\"I_8xdZu766_FSaexEaDXTIfEWc0/NpmRcx9OpHgA2LoHqiki1KznNHc\"";
        id = HV4JYMQTsOU;
        kind = "youtube#video";
        status =             {
            embeddable = 1;
            license = youtube;
            privacyStatus = public;
            publicStatsViewable = 1;
            rejectionReason = length;
            uploadStatus = rejected;
        };
    }
);
kind = "youtube#videoListResponse";
pageInfo =     {
    resultsPerPage = 1;
    totalResults = 1;
};

这是两个视频的响应JSON。
你会发现在两个JSON文件中,唯一不同的是uploadStatus字段(一个是processed,一个是rejected)。
这个字段将告诉你哪个YouTube视频是可用的。而uploadStatus有5个值:

deleted(已删除),failed(上传失败),processed(处理完成),rejected(被拒绝),uploaded(已上传)

NSString *videoStatus = [responseJson[@"items"] objectAtIndex:0][@"status"][@"uploadStatus"];

if([videoStatus isEqualToString:@"deleted"] || [videoStatusisEqualToString:@"failed"] || [videoStatus isEqualToString:@"rejected"]){

}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接