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 v3 响应缺少视频

YouTube API:如何使用标签 Y 从频道 X 获取视频?

如何检查 YouTube 频道是不是正在直播

是否有适用于 iOS 的 RESTful YouTube API?

YouTube API。检查用户是不是已订阅

iOS - YouTube api 和全屏出现问题