我正在使用YouTube API v3搜索YouTube。
https://developers.google.com/youtube/v3/docs/search
如您所见,响应 JSON 不包含视频持续时间。有没有办法获得视频持续时间?
最好不要再为结果中的每个元素调用API(除非这是获得持续时间的唯一方法)。
我编写了以下类,使用YouTube API v3获取YouTube视频持续时间(它还返回缩略图):
class Youtube
{
static $api_key = '<API_KEY>';
static $api_base = 'https://www.googleapis.com/youtube/v3/videos';
static $thumbnail_base = 'https://i.ytimg.com/vi/';
// $vid - video id in youtube
// returns - video info
public static function getVideoInfo($vid)
{
$params = array(
'part' => 'contentDetails',
'id' => $vid,
'key' => self::$api_key,
);
$api_url = Youtube::$api_base . '?' . http_build_query($params);
$result = json_decode(@file_get_contents($api_url), true);
if(empty($result['items'][0]['contentDetails']))
return null;
$vinfo = $result['items'][0]['contentDetails'];
$interval = new DateInterval($vinfo['duration']);
$vinfo['duration_sec'] = $interval->h * 3600 + $interval->i * 60 + $interval->s;
$vinfo['thumbnail']['default'] = self::$thumbnail_base . $vid . '/default.jpg';
$vinfo['thumbnail']['mqDefault'] = self::$thumbnail_base . $vid . '/mqdefault.jpg';
$vinfo['thumbnail']['hqDefault'] = self::$thumbnail_base . $vid . '/hqdefault.jpg';
$vinfo['thumbnail']['sdDefault'] = self::$thumbnail_base . $vid . '/sddefault.jpg';
$vinfo['thumbnail']['maxresDefault'] = self::$thumbnail_base . $vid . '/maxresdefault.jpg';
return $vinfo;
}
}
请注意,您需要API_KEY才能使用YouTubeAPI:
我拿到了!
$dur = file_get_contents("https://www.googleapis.com/youtube/v3/videos?part=contentDetails&id=$vId&key=dldfsd981asGhkxHxFf6JqyNrTqIeJ9sjMKFcX4");
$duration = json_decode($dur, true);
foreach ($duration['items'] as $vidTime) {
$vTime= $vidTime['contentDetails']['duration'];
}
在那里,它返回YouTube API版本3的时间(密钥是通过;)的方式组成的。我用$vId
,我已经从我正在播放视频的频道中返回的视频列表中取出...
它起作用了。Google真的需要在片段中包含持续时间,这样您就可以通过一个调用而不是两个调用来获取所有内容......它在他们的“修复”列表中。
在进行搜索调用后,您必须调用YouTube数据API的视频资源。一次搜索最多可以放置50个视频ID,因此不必为每个元素调用它。
https://developers.google.com/youtube/v3/docs/videos/list
您需要设置part=contentDetails
,因为持续时间在那里。
例如,以下调用:
https://www.googleapis.com/youtube/v3/videos?id=9bZkp7q19f0&part=contentDetails&key={YOUR_API_KEY}
给出这个结果:
{
"kind": "youtube#videoListResponse",
"etag": "\"XlbeM5oNbUofJuiuGi6IkumnZR8/ny1S4th-ku477VARrY_U4tIqcTw\"",
"items": [
{
"id": "9bZkp7q19f0",
"kind": "youtube#video",
"etag": "\"XlbeM5oNbUofJuiuGi6IkumnZR8/HN8ILnw-DBXyCcTsc7JG0z51BGg\"",
"contentDetails": {
"duration": "PT4M13S",
"dimension": "2d",
"definition": "hd",
"caption": "false",
"licensedContent": true,
"regionRestriction": {
"blocked": [
"DE"
]
}
}
}
]
}
时间被格式化为ISO 8601字符串。PT代表持续时间,4M代表4分钟,13S代表13秒。
所以我试图从用户上传的视频中抓取10个最新视频。 现在唯一的问题是,播放列表请求中唯一可见的日期是已发布的,这是视频上传的日期 - 而不是公开的日期,这会产生巨大的差异。 我注意到我可以通过视频请求获取正确的日期,但它似乎不是最好的地方。 让我给你看一个我正在处理的例子。 我们走Maroon5频道吧。 forUserName: Maroon5VEVO 获取 https://www.googleap
问题内容: 我正在使用YouTube API v3搜索YouTube。 https://developers.google.com/youtube/v3/docs/search 如您所见,响应JSON不包含视频时长。有没有办法获得视频时长? 最好不要再为结果中的每个元素调用API(除非这是获取持续时间的唯一方法)。 问题答案: 进行搜索调用后,您将必须调用YouTube数据API的视频资源。您最多
我正在开发一个PHP项目,需要从特定用户名获取Youtube频道横幅(或封面照片),头像和上传的视频。 对于头像和视频,我使用:https://gdata.youtube.com/feeds/api/channels?q=Username 但是对于频道横幅,我在网上搜索过但没有运气。这里有人可以帮助我吗?非常感谢!
我们有一个网站,显示我们的YouTube视频频道和我们频道中最喜欢的视频等。我们使用YouTube数据API v2.0来获取数据。 例如: https://gdata.youtube.com/feeds/api/users/“ 用户标识 ”/播放列表?v=2 但现在这些链接返回“NetworkError: 410 Gone”。我们检查了新的YouTube Javascript API,但我们不知道
我正在研究YouTubeAPI:https://developers.google.com/youtube/v3/docs/search/list 但是我找不到通过HTTP请求获取360视频列表的任何参数。我想获取q参数为“Ronaldo”的360视频(例如) 有没有人知道如何通过HTTP请求获取360视频或者另一种获取360视频的解决方案?
我需要提取5年前公司YouTube频道上的活动。我遇到了一个YouTube分析API的问题,因为它限制了我最近30天的活动。我正在考虑接下来尝试YouTube数据API V3,但我想首先在这里问一下,是否有人知道如何从YouTube频道中提取深层历史数据。我感兴趣的主要是每天每个视频的浏览量。我正在使用谷歌云平台,需要将数据存储在BigQuery中。 https://developers.goog