【问题标题】:YouTube api v3 php: get random video from all youtube channel videosYouTube api v3 php:从所有 youtube 频道视频中获取随机视频
【发布时间】:2017-11-21 21:05:54
【问题描述】:

我想使用 YouTube API V3 从频道 ID 中随机检索 4 个视频。 所以我希望当我刷新页面时检索到的视频会发生变化。 我正在创建的脚本是 PHP 语言,一个 Wordpress 网站内的自定义插件。

现在我使用这个 api 调用,但它总是检索相同的视频:

$api_call = "https://www.googleapis.com/youtube/v3/search?order=date&part=snippet&channelId=".$channelId."&maxResults=4&key=".$YouTube_API_key."";

有没有办法通过 YouTube API 随机获取视频?

如果有人认为我必须使用 rand 之类的 php 函数对自己进行 rand,但我必须获取所有视频,所以如果我有 200 个视频并且 maxResults 只能是最大 50 个值,我不能那样做。

【问题讨论】:

  • 如果不是您的频道(您指的是 OAuth 授权用户),则无法获得超过 50 个视频。您可以更改订单参数,但仍有一些视频永远不会出现。我认为这是故意的。
  • @apokryfos 不,是自有频道,所以你告诉我我可以检索 50 多个视频?该怎么做?

标签: php youtube youtube-data-api


【解决方案1】:

我建议三管齐下:

  • 建立一个数据库来存储您的每个视频的链接。
  • 每晚运行一次 cron 作业,以使数据库在新上载时保持最新。
  • 当您需要一个随机视频时,从您的数据库中选择视频并选择一个随机行。

【讨论】:

    【解决方案2】:

    如果有下一页数据可用,您获得的每个结果都应该有一个nextPageToken。例如:

    {
    "kind": "youtube#searchListResponse",
     "etag": "\"m2yskBQFythfE4irbTIeOgYYfBU/3McBp6TfA-1T7NXO6x9Lr5WXpKI\"",
     "nextPageToken": "CBkQAA",
     "regionCode": "GB",
         "pageInfo": {
         "totalResults": 1000000,
      "resultsPerPage": 25
    }
    

    您可以使用 pageToken 构造一个额外的请求,并且 如果超过 1 页,将为您提供下一页结果。例如

     $nextApiCall = "https://www.googleapis.com/youtube/v3/search?order=date&part=snippet&channelId=<>&pageToken=CBkQAA";
    

    您可以继续进行 API 调用,直到达到“totalResults”数字(或者没有更多的下一页令牌)。

    获得所有结果后,您只需执行 array_rand 即可从数组中获取随机索引。

    【讨论】:

      猜你喜欢
      • 2016-03-12
      • 2016-08-26
      • 2014-01-26
      • 1970-01-01
      • 2016-03-01
      • 2014-02-11
      • 2015-03-11
      • 2016-05-13
      • 2021-03-14
      相关资源
      最近更新 更多