Se ho un URL di un video di YouTube, c'è un modo per usare PHP e cURL per ottenere la miniatura associata dall'API di YouTube?
Ogni video di YouTube ha quattro immagini generate. Sono prevedibilmente formattate come segue:
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
La prima nell'elenco è un'immagine a grandezza naturale e le altre sono immagini di anteprima. L'immagine di anteprima predefinita (cioè una tra 1.jpg
, 2.jpg
, 3.jpg
) è:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/default.jpg
Per la versione di alta qualità della miniatura usa un URL simile a questo:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/hqdefault.jpg
C'è anche una versione di media qualità della miniatura, usando un URL simile al HQ:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/mqdefault.jpg
Per la versione a definizione standard della miniatura, usa un URL simile a questo:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/sddefault.jpg
Per la versione a massima risoluzione della miniatura usa un URL simile a questo:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/maxresdefault.jpg
Tutti gli URL di cui sopra sono disponibili anche su HTTP. Inoltre, l'hostname leggermente più corto i3.ytimg.com
funziona al posto di img.youtube.com
negli URL di esempio sopra.
In alternativa, puoi usare la YouTube Data API (v3) per ottenere immagini in miniatura.
Puoi usare YouTube Data API per recuperare le miniature dei video, la didascalia, la descrizione, la valutazione, le statistiche e altro. L'API versione 3 richiede una chiave*. Ottieni la chiave e crea una richiesta video: list:
https://www.googleapis.com/youtube/v3/videos?key=YOUR_API_KEY&part=snippet&id=VIDEO_ID
Codice PHP di esempio
$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)
}
}
Non solo che hai bisogno di una chiave, ti potrebbero essere chieste informazioni di fatturazione a seconda del numero di richieste API che hai intenzione di fare. Tuttavia, pochi milioni di richieste al giorno sono gratuiti.
Puoi ottenere il Video Entry che contiene l'URL della miniatura del video. C'è un esempio di codice nel link. Oppure, se vuoi analizzare l'XML, ci sono informazioni qui. L'XML restituito ha un elemento media:thumbnail
, che contiene l'URL della miniatura.