sle*_*rfx 86 php rest objective-c youtube-api youtube-data-api
我正在使用YouTube API v3来搜索YouTube.
https://developers.google.com/youtube/v3/docs/search
如您所见,响应JSON不包含视频持续时间.有没有办法获得视频时长?
最好不再为结果中的每个元素调用API(除非这是获取持续时间的唯一方法).
Mat*_*ela 111
拨打电话后,您必须拨打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}
Run Code Online (Sandbox Code Playgroud)
给出这个结果:
{
"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"
]
}
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
时间格式为ISO 8601字符串.PT代表时间持续时间,4M是4分钟,13S是13秒.
小智 14
我知道了!
$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'];
Run Code Online (Sandbox Code Playgroud)
在那里它返回YouTube API版本3的时间(按顺序组成密钥;).我用过$vId
我从频道播放的视频中删除了我正在播放的视频...
它的工作原理...... :)谷歌真的需要在片段中包含持续时间,这样你就可以通过一个电话而不是两个电话来获取它...叹息.......它在他们的'wontfix'列表中.
我编写了以下课程,以使用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;
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,您需要API_KEY才能使用YouTube API:
归档时间: |
|
查看次数: |
84192 次 |
最近记录: |