Youtube api 从Youtube API检索While循环中的数据

Youtube api 从Youtube API检索While循环中的数据,youtube-api,Youtube Api,我有一个hughe数据库,其中一些数据集链接到某些youtube视频。我们都知道,一些youtube视频会在一段时间后从youtube上消失,这导致了我的解决方案和问题-->我想通过JSON检查youtube视频是否仍然存在,只要检查是否有数据可从视频中检索。如果不是的话,我会简单地删除那个特定的数据集 因此,我的解决方案的第一部分是遍历我的数据表的每一行,检查每个id是否有要从youtube检索的数据,如以下代码所示: $video\u ID=$link; $JSON=文件\u获取\u内容(“

我有一个hughe数据库,其中一些数据集链接到某些youtube视频。我们都知道,一些youtube视频会在一段时间后从youtube上消失,这导致了我的解决方案和问题-->我想通过JSON检查youtube视频是否仍然存在,只要检查是否有数据可从视频中检索。如果不是的话,我会简单地删除那个特定的数据集

因此,我的解决方案的第一部分是遍历我的数据表的每一行,检查每个id是否有要从youtube检索的数据,如以下代码所示:

$video\u ID=$link;
$JSON=文件\u获取\u内容(“https://gdata.youtube.com/feeds/api/videos/{$video_ID}?v=2&alt=json“;
$JSON_Data=JSON_decode($JSON);
$views=$JSON_Data->{'entry'}->{'yt$statistics'}->{'viewCount'};
回显$number.“行
”; echo$link.“link
”; echo$views.“views

”; }
这一尝试效果良好,并向我输出所需的数据。唯一的问题是,它只从前150-190行获取数据,就这样。现在,我正在寻找一种解决方案,检查每一行是否有空的youtube数据,这就引出了我的两个具体问题:

1)youtube是否会因为从单个查询检索数据的限制而对此负责

第二)这可能是我的服务器问题,它会在x秒后停止查询(但我已经通过在php代码中添加一行set_time_limit(10000000);来扩展时间限制,但没有成功)


希望您能提供帮助,提前谢谢。

YouTube自然会限制您在一段时间内可以提出的请求数量。不幸的是,关于这些限制是什么没有明确的指导方针。。。对于v2,指南仅说明:

YouTube API强制执行配额,以防止与 不规则的API使用。特别是,最近调用过多的错误 指示API服务器已接收到太多来自的调用 在短时间内呼叫同一个来电者。如果您收到这种类型的 错误,建议您稍等几分钟,然后再试一次 再次请求

如果时间对您来说不是问题,您可以减慢每个查询的速度,以便每10-15秒左右只发出一个请求。或者,批处理可能会让您更幸运。这样,您一次最多可以提出50个请求(根据您每天的总请求配额计算为50个请求,但根据您的每次配额仅计算为一个请求)。使用API的v2批处理有点复杂,因为您首先向批处理端点发出POST请求,然后根据这些结果可以发送多个请求。以下是文档:

v3的批处理要容易得多,因为videoId参数是一个逗号分隔的视频列表,其中包含您想要了解的信息——因此,在您的情况下,您可以在如下URL上执行
file\u get\u contents

https://www.googleapis.com/youtube/v3/videos?part=id&id={comma-separated-list-of-IDs}&maxResults=50&key={YOUR_API_KEY}
列表中任何在JSON响应中没有返回的视频ID都不再存在。如果你一次做50次,等待15秒,再做50次,诸如此类,这会给你更好的表现

        $video_ID = $link;
        $JSON = file_get_contents("https://gdata.youtube.com/feeds/api/videos/{$video_ID}?v=2&alt=json");
        $JSON_Data = json_decode($JSON);
        $views = $JSON_Data->{'entry'}->{'yt$statistics'}->{'viewCount'};

        echo $number .' row<br />';
        echo $link .' link<br />';
        echo $views .' views<br /><br />';

    }
https://www.googleapis.com/youtube/v3/videos?part=id&id={comma-separated-list-of-IDs}&maxResults=50&key={YOUR_API_KEY}