首页 > 解决方案 > 从播放列表/分组视频中获取 YouTube 视频计数

问题描述

我正在从我自己的频道中获取少数视频的视频观看次数。这是我刚刚向您展示的代码 2 作为示例:

<?php
    define("YOUTUBE_DATA_API_KEY", 'KEY_IS_IN_HERE');

    function youtube_video_statistics($video_id) {
        $json = file_get_contents("https://www.googleapis.com/youtube/v3/videos?part=statistics&id=" . $video_id . "&key=". YOUTUBE_DATA_API_KEY );
        $jsonData = json_decode($json);
        $views = $jsonData->items[0]->statistics->viewCount;
        return $views;
    }

    echo '<strong>Track Title 1 - </strong>';
    $num = youtube_video_statistics('VIDEO_ID_HERE');
    echo $formattedNum1;
    $formattedNum1 = number_format($num);
    echo $formattedNum1;

    echo '<strong>Track Title 2</strong>';
    $num = youtube_video_statistics('VIDEO_ID_HERE');
    echo $formattedNum2;
    $formattedNum2 = number_format($num);
    echo $formattedNum2;
?>

$formattedNum 只是用撇号格式化数字,因为我的很多视频都有成千上万的观看次数。

这工作正常,但你可以看到它非常手动。曲目标题和视频 ID 是硬编码的,这并不理想。

我想要做的是在一批代码中提取具有观看次数的标题,一旦我添加新视频等,不需要我用新 ID 继续更新它。需要注意的是我有超过 90 个视频,但它实际上只有 12 个我需要密切监视统计数据,但我想如果这样做的唯一选择是提取我频道上每个视频的标题和观看次数,那仍然比我目前的位置好,但我即使在文档中也看不到任何方法。

那么 API 有什么方法可以将我想要监视的视频分组在一起,以便我可以查询该特定组,例如在它们上使用相同的标签或将它们添加到播放列表,然后查询该标签或播放列表?

在回复 Benjamin Loison 的回答时,我得到的代码只是:

{
    "kind": "youtube#videoListResponse",
    "etag": "YIUPVpqNjppyCWOZfL-19bLb7uk",
    "items": [],
    "pageInfo": {
      "totalResults": 0,
      "resultsPerPage": 0
    }
}

标签: phpyoutube-apiyoutube-data-api

解决方案


似乎您正在使用 Youtube Data API v3 端点视频:列表,这是要走的路。要请求一批视频而不是单个视频,您可以id用逗号将它们收集在字段中,这是一个示例: https ://www.googleapis.com/youtube/v3/videos?part=statistics&id=dQw4w9WgXcQ,o -YBDTqX_ZU&key=YOUTUBE_DATA_API_KEY

似乎我们不必调整maxResults字段(默认值:5)。但是,如果您有超过 50 个视频要继续,您可以使用逗号加入最多 50 个视频,仅按请求继续请求。

您还可以通过使用PlaylistItems: list收集视频 ID 来监控播放列表的视频。

如果您需要,您可以使用jambrose共享的以下方法列出(仅)您的公共视频(如果您使用 API 密钥):

它包括使用频道:列出part=contentDetails检索uploads播放列表,您可以从上面检索视频。


推荐阅读