php - 如何获取 YouTube 视频持续时间?

标签 php laravel

所以我想获取 YouTube 视频的持续时间。我找到了一些解决方案,但其中大部分都已过时。 我实际尝试过的:

public function getYTdata($url){
    $youtube = "http://www.youtube.com/oembed?url=". $url ."&format=json";

    $curl = curl_init($youtube);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    $return = curl_exec($curl);
    curl_close($curl);
    return json_decode($return, true);
}

输出:

{"thumbnail_url":"https:\/\/i.ytimg.com\/vi\/jmQsk6tm5aY\/hqdefault.jpg","provider_url":"https:\/\/www.youtube.com\/","thumbnail_height":360,"type":"video","provider_name":"YouTube","version":"1.0","html":"<iframe width=\"480\" height=\"270\" src=\"https:\/\/www.youtube.com\/embed\/jmQsk6tm5aY?feature=oembed\" frameborder=\"0\" gesture=\"media\" allow=\"encrypted-media\" allowfullscreen><\/iframe>","author_name":"Trap Nation","width":480,"title":"Evalyn - Filthy Rich (Sweater Beats Remix)","height":270,"thumbnail_width":480,"author_url":"https:\/\/www.youtube.com\/user\/AllTrapNation"}

我的方法不显示持续时间。那么我怎样才能获得 youtube 视频的持续时间呢?

最佳答案

好的,我找到了解决方案:

public function getYoutubeDuration($vid) {
    //$vid - YouTube video ID. F.e. LWn28sKDWXo
    $videoDetails = file_get_contents("https://www.googleapis.com/youtube/v3/videos?id=".$vid."&part=contentDetails,statistics&key=YOUR_KEY");
    $VidDuration = json_decode($videoDetails, true);
    foreach ($VidDuration['items'] as $vidTime)
    {
      $VidDuration= $vidTime['contentDetails']['duration'];
    }
    $pattern='/PT(\d+)M(\d+)S/';
    preg_match($pattern,$VidDuration,$matches);
    $seconds=$matches[1]*60+$matches[2];
    return $seconds;
}

关于php - 如何获取 YouTube 视频持续时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48132968/

相关文章:

php - 在 Laravel 5.1 中上传多个图像

php - 反射异常 : Class ClassName does not exist - Laravel

javascript - Ajax 调用未与另一个表单 SUBMIT 一起执行

php - 有什么方法可以在 Laravel 的 .css 文件中使用 Blade 来生成 "CSS" View ?

javascript - 无法在 php 中获取已发布的 FormData

angularjs - Angular 中的 CSRF token 与 Laravel 5 不同

php - 如何在PHP中使用异步IO(用于IRC客户端)?

PHP foreach 不循环

php - 如何在 Laravel Eloquent handy appends 上提高数据库性能?

mysql - laravel 5.8 连接第二个数据库时出错