Если у меня есть URL-адрес видео YouTube, есть ли способ использовать PHP и cURL для получения соответствующей миниатюры, используя YouTube API?
Ответ 1
Каждое видео YouTube имеет четыре сгенерированных изображения. Они предсказуемо отформатированы следующим образом:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/0.jpg
https://img.youtube.com/vi/<insert-youtube-video-id-here>/1.jpg
https://img.youtube.com/vi/<insert-youtube-video-id-here>/2.jpg
https://img.youtube.com/vi/<insert-youtube-video-id-here>/3.jpg
Первый в списке — это полноразмерное изображение, а остальные — миниатюрные изображения. Уменьшенное изображение по умолчанию (то есть один из 1.jpg, 2.jpg, 3.jpg) является:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/default.jpg
Для высококачественной версии миниатюры используйте URL-адрес, подобный этому:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/hqdefault.jpg
Существует также версия миниатюры среднего качества с URL-адресом, аналогичным HQ:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/mqdefault.jpg
Для версии эскиза со стандартным определением используйте:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/sddefault.jpg
Для версии миниатюры с максимальным разрешением используйте:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/maxresdefault.jpg
Все вышеперечисленные URL-адреса также доступны через HTTP. Кроме того, немного более короткое имя хоста i3.ytimg.com работает вместо img.youtube.com для приведенных выше URL-адресов.
Кроме того, вы можете использовать YouTube API (v3) для получения миниатюрных изображений.
Ответ 2
Вы можете использовать API данных YouTube для получения эскизов видео, подписки, описания, рейтинга, статистики и многого другого. API версии 3 требует наличия ключа. Получите ключ и создайте запрос видео: список:
https://www.googleapis.com/youtube/v3/videos?key=YOUR_API_KEY&part=snippet&id=VIDEO_ID
Пример кода PHP:
$data = file_get_contents("https://www.googleapis.com/youtube/v3/videos?key=YOUR_API_KEY&part=snippet&id=T0Jqdjbed40");
$json = json_decode($data);
var_dump($json->items[0]->snippet->thumbnails);
Вывод:
object(stdClass)#5 (5) {
["default"] => object(stdClass)#6 (3) {
["url"] => string(46) "https://i.ytimg.com/vi/T0Jqdjbed40/default.jpg"
["width"] => int(120)
["height"] => int(90)
}
["medium"] => object(stdClass)#7 (3) {
["url"] => string(48) "https://i.ytimg.com/vi/T0Jqdjbed40/mqdefault.jpg"
["width"] => int(320)
["height"]=> int(180)
}
["high"] => object(stdClass)#8 (3) {
["url"] => string(48) "https://i.ytimg.com/vi/T0Jqdjbed40/hqdefault.jpg"
["width"] => int(480)
["height"]=> int(360)
}
["standard"] => object(stdClass)#9 (3) {
["url"] => string(48) "https://i.ytimg.com/vi/T0Jqdjbed40/sddefault.jpg"
["width"] => int(640)
["height"]=> int(480)
}
["maxres"] => object(stdClass)#10 (3) {
["url"] => string(52) "https://i.ytimg.com/vi/T0Jqdjbed40/maxresdefault.jpg"
["width"] => int(1280)
["height"]=> int(720)
}
}
Мало того, что вам нужен ключ, вас могут попросить предоставить платежную информацию в зависимости от количества запросов API, которые вы планируете сделать. Однако несколько миллионов запросов в день бесплатны.
Ответ 3
Если вам нужно самое большое изображение с YouTube для определенного идентификатора видео, тогда URL-адрес должен быть примерно таким:
http://i3.ytimg.com/vi/SomeVideoIDHere/0.jpg
Используя API, вы можете выбрать изображение эскиза по умолчанию. Простой код должен быть примерно таким:
//Захват изображения миниатюры по умолчанию
$attrs = $media->group->thumbnail[1]->attributes();
$thumbnail = $attrs['url'];
$thumbnail = substr($thumbnail, 0, -5);
$thumb1 = $thumbnail."default.jpg";
// Захват третьего уменьшенного изображения
$thumb2 = $thumbnail."2.jpg";
// Захват четвертого уменьшенного изображения
$thumb3 = $thumbnail."3.jpg";
// Использование простого cURL для сохранения на вашем сервере.
$ch = curl_init ("$thumb1");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
$rawdata = curl_exec($ch);
curl_close($ch);
// Использование fwrite для сохранения вышеуказанных данных
$fp = fopen("SomeLocationInReferenceToYourScript/AnyNameYouWant.jpg", 'w');
// Запись файла
fwrite($fp, $rawdata);
fclose($fp);
Web