php - 如何从YouTube channel 获取3个最新视频?

标签 php curl youtube youtube-api youtube-data-api

我知道标题中有太多类似的问题,但是我遇到了使我无法使用的问题。

我测试了三个帐户,并且所有帐户一天之内都超过了“请求配额”。我什至不知道那是怎么发生的?

我正在使用此代码从youtube channel 获取3个最新视频:

$videoList = json_decode(file_get_contents('https://www.googleapis.com/youtube/v3/search?order=date&part=snippet&channelId='.$channelID.'&maxResults='.$maxResults.'&key='.$API_key.''));  

foreach($videoList->items as $item){
          //Embed video
          if(isset($item->id->videoId)){
              echo '<div class="video">
                        <iframe width="100%" class="youtube-video" src="https://www.youtube.com/embed/'.$item->id->videoId.'"  frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
                    </div>';
          }
      }        

脚本工作了一个小时,然后代码结果消失了,我收到一条消息,告诉我我已达到配额。

我创建了3个新帐户,仅为项目创建了Youtube API v3服务,但我什至无法使用它!

如何使此Youtube API V3正常运行而又保持脚本运行正常?

最佳答案

似乎很容易从html视频列表中解析它,xpath //li/ul/li[contains(@class,'channels-content-item')]为您提供视频列表,带有一个video li上下文节点,xpath .//*[contains(@class,'yt-lockup-title')]/a为您提供标题,.//*[@data-context-item-id]为您提供在“数据上下文”中保存ID的节点-item-id”属性,将它们放在一起,我们得到:

<?php    
declare(strict_types=1);
// $html = file_get_contents("html.html");
$html = file_get_contents("https://www.youtube.com/user/Tobuscus/videos?view=0&sort=dd&flow=grid");
$domd = @DOMDocument::loadHTML($html);
$xp = new DOMXPath($domd);
$videoList = $xp->query("//li/ul/li[contains(@class,'channels-content-item')]");
$parsed = array();
for ($i = 0; $i < 3; ++$i) {
    $video = $videoList[$i];
    $title = trim($xp->query(".//*[contains(@class,'yt-lockup-title')]/a", $video)->item(0)->textContent);
    $id = $xp->query(".//*[@data-context-item-id]", $video)->item(0)->getAttribute("data-context-item-id");
    $parsed[$id] = $title;
}
var_dump($parsed);

输出:
array(3) {
  ["HKlOgarmkcY"]=>
  string(44) "I haven't Played this Game in a LONG Time..."
  ["YZac_eyIa0c"]=>
  string(37) "Something is happening in two days..."
  ["5gY_v-T9kAM"]=>
  string(14) "Dear Algorithm"
}

我该死了。

关于php - 如何从YouTube channel 获取3个最新视频?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59383737/

相关文章:

Java 文件 MD5 和 PHP md5_file 不同

php - 我应该在哪里获取 jet_browse_node_id 以用于 jet.com 市场文件上传 API 的以下 JSON 请求?

php - 在 foreach 循环中使用 cURL (php)

php - SagePay API - 创建交易时请求格式不正确 - Php

javascript - 如何从必须在目标页面范围内运行的代码中调用 Greasemonkey 的 GM_ 函数?

php - 只显示未访问的链接

php - MySQL检查表的行数是否小于(N + 8)

php - Shopify - 使用 PHP 通过元字段 API 更新/删除元字段

java - 使用 YouTube 数据 API V3 按关键字搜索视频

javascript - 使用 Javascript 将类添加到 YouTube iframe 元素