Om jag har en URL till en YouTube-video, finns det något sätt att använda PHP och cURL för att hämta den tillhörande miniatyrbilden från YouTube API?
Varje YouTube-video har fyra genererade bilder. De är som förväntat formaterade på följande sätt:
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
Den första i listan är en bild i full storlek och de andra är miniatyrbilder. Standardbilden för miniatyrbilder (dvs. en av 1.jpg
, 2.jpg
, 3.jpg
) är:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/default.jpg
För den högkvalitativa versionen av miniatyrbilden använder du en URL som liknar denna:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/hqdefault.jpg
Det finns också en version av miniatyrbilden i medelhög kvalitet, med en URL som liknar HQ:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/mqdefault.jpg
För en version av miniatyrbilden med standarddefinition använder du en URL som liknar denna:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/sddefault.jpg
För den högsta upplösningsversionen av miniatyrbilden använder du en URL som liknar denna:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/maxresdefault.jpg
Alla ovanstående webbadresser är också tillgängliga via HTTP. Dessutom fungerar det något kortare värdnamnet i3.ytimg.com
i stället för img.youtube.com
i ovanstående exempel-URL:er.
Alternativt kan du använda YouTube Data API (v3) för att få fram miniatyrbilder.
Du kan använda YouTube Data API för att hämta miniatyrbilder, bildtext, beskrivning, betyg, statistik med mera. API version 3 kräver en nyckel*. Skaffa nyckeln och skapa en videos: list-begäran:
https://www.googleapis.com/youtube/v3/videos?key=YOUR_API_KEY&part=snippet&id=VIDEO_ID
Exempel på PHP-kod
$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);
Output
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)
}
}
* Du behöver inte bara en nyckel, du kan också bli ombedd att ange faktureringsuppgifter beroende på hur många API-förfrågningar du planerar att göra. Några få miljoner förfrågningar per dag är dock gratis.
Du kan få Video Entry som innehåller URL:en till videons miniatyrbild. Det finns exempelkod i länken. Om du vill analysera XML finns det information här. Den XML som returneras har ett element media:thumbnail
som innehåller miniatyrbildens URL.