IOS - 使用 Youtube API 检查 Youtube 视频是不是存在
Posted
技术标签:
【中文标题】IOS - 使用 Youtube API 检查 Youtube 视频是不是存在【英文标题】:IOS - Check if Youtube Video exists using Youtube APIIOS - 使用 Youtube API 检查 Youtube 视频是否存在 【发布时间】:2015-10-08 02:27:27 【问题描述】:我已经搜索但找不到任何关于如何使用 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】:你应该请求这个 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;
;
这是来自 2 个视频的响应 json
您将在 2 个 json 中看到,不同的是 uploadStatus
(一个是 processed
,一个是 rejected
)。
此字段将让您知道哪些 youtube 视频可用。 uploadStatus
有 5 个值:
已删除、失败、已处理、已拒绝、已上传
NSString *videoStatus = [responseJson[@"items"] objectAtIndex:0][@"status"][@"uploadStatus"];
if([videoStatus isEqualToString:@"deleted"] || [videoStatusisEqualToString:@"failed"] || [videoStatus isEqualToString:@"rejected"])
【讨论】:
以上是关于IOS - 使用 Youtube API 检查 Youtube 视频是不是存在的主要内容,如果未能解决你的问题,请参考以下文章
YouTube API:如何使用标签 Y 从频道 X 获取视频?