Jika saya memiliki URL video YouTube, apakah ada cara untuk menggunakan PHP dan cURL untuk mendapatkan thumbnail terkait dari API YouTube?
Jika saya memiliki URL video YouTube, apakah ada cara untuk menggunakan PHP dan cURL untuk mendapatkan thumbnail terkait dari API YouTube?
Jawaban:
Setiap video YouTube memiliki empat gambar yang dihasilkan. Mereka diprediksi diformat sebagai berikut:
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
Yang pertama dalam daftar adalah gambar ukuran penuh dan yang lainnya adalah gambar thumbnail. Default thumbnail image (yaitu, satu dari 1.jpg
, 2.jpg
, 3.jpg
) adalah:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/default.jpg
Untuk versi thumbnail berkualitas tinggi gunakan URL yang mirip dengan ini:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/hqdefault.jpg
Ada juga versi thumbnail berkualitas menengah, menggunakan URL yang mirip dengan HQ:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/mqdefault.jpg
Untuk versi definisi standar dari thumbnail, gunakan URL yang mirip dengan ini:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/sddefault.jpg
Untuk versi resolusi maksimum dari thumbnail gunakan URL yang mirip dengan ini:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/maxresdefault.jpg
Semua URL di atas juga tersedia melalui HTTP. Selain itu, nama host yang sedikit lebih pendek i3.ytimg.com
menggantikan img.youtube.com
URL contoh di atas.
Atau, Anda dapat menggunakan API Data YouTube (v3) untuk mendapatkan gambar mini.
http://www.img.youtube.com
, hanyahttp://img.youtube.com
mqdefault
16: 9
sddefault
dan maxresdefault
TIDAK SELALU TERSEDIA beberapa video memilikinya meskipun ....
Anda dapat menggunakan API Data YouTube untuk mengambil thumbnail video, caption, deskripsi, rating, statistik, dan lainnya. API versi 3 membutuhkan kunci *. Dapatkan kunci dan buat video: daftar permintaan:
https://www.googleapis.com/youtube/v3/videos?key=YOUR_API_KEY&part=snippet&id=VIDEO_ID
Contoh Kode 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);
Keluaran
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)
}
}
* Tidak hanya Anda memerlukan kunci, Anda mungkin diminta untuk informasi penagihan tergantung pada jumlah permintaan API yang Anda rencanakan. Namun, beberapa juta permintaan per hari gratis.
jsonc
alih-alih json
untuk getJSON. Gagal karena struktur JSON Anda yang salah.
jsonc
. Contoh jQuery dan PHP HARUS digunakan json
. Dan saya telah memperbarui kode agar sesuai dengan struktur JSON baru. Saya menggunakan kode sekarang dan itu bekerja LANGSUNG. jadi jangan katakan itu tidak berfungsi tanpa membaca perubahan. Terima kasih!
v=2
) menangani perubahan API.
Apa yang dikatakan Asaf benar. Namun, tidak setiap video YouTube berisi sembilan thumbnail. Juga, ukuran gambar thumbnail tergantung pada video (angka-angka di bawah ini didasarkan pada satu).
Ada tujuh thumbnail yang dijamin ada:
| Thumbnail Name | Size (px) | URL |
|---------------------|-----------|--------------------------------------------------|
| Player Background | 480x360 | https://i1.ytimg.com/vi/<VIDEO ID>/0.jpg |
| Start | 120x90 | https://i1.ytimg.com/vi/<VIDEO ID>/1.jpg |
| Middle | 120x90 | https://i1.ytimg.com/vi/<VIDEO ID>/2.jpg |
| End | 120x90 | https://i1.ytimg.com/vi/<VIDEO ID>/3.jpg |
| High Quality | 480x360 | https://i1.ytimg.com/vi/<VIDEO ID>/hqdefault.jpg |
| Medium Quality | 320x180 | https://i1.ytimg.com/vi/<VIDEO ID>/mqdefault.jpg |
| Normal Quality | 120x90 | https://i1.ytimg.com/vi/<VIDEO ID>/default.jpg |
Selain itu, dua thumbnail lain mungkin ada atau tidak ada. Kehadiran mereka mungkin didasarkan pada apakah video tersebut berkualitas tinggi.
| Thumbnail Name | Size (px) | URL |
|---------------------|-----------|------------------------------------------------------|
| Standard Definition | 640x480 | https://i1.ytimg.com/vi/<VIDEO ID>/sddefault.jpg |
| Maximum Resolution | 1920x1080 | https://i1.ytimg.com/vi/<VIDEO ID>/maxresdefault.jpg |
Anda dapat menemukan skrip JavaScript dan PHP untuk mengambil thumbnail dan informasi YouTube lainnya di:
Anda juga dapat menggunakan alat Pembuat Informasi Video YouTube untuk mendapatkan semua informasi tentang video YouTube dengan mengirimkan URL atau id video.
Di YouTube API V3 kami juga dapat menggunakan URL ini untuk mendapatkan thumbnail ... Mereka diklasifikasikan berdasarkan kualitasnya.
https://i1.ytimg.com/vi/<insert-youtube-video-id-here>/default.jpg - default
https://i1.ytimg.com/vi/<insert-youtube-video-id-here>/mqdefault.jpg - medium
https://i1.ytimg.com/vi/<insert-youtube-video-id-here>/hqdefault.jpg - high
https://i1.ytimg.com/vi/<insert-youtube-video-id-here>/sddefault.jpg - standard
Dan untuk resolusi maksimum ..
https://i1.ytimg.com/vi/<insert-youtube-video-id-here>/maxresdefault.jpg
Satu keuntungan dari URL ini dibandingkan dengan URL di jawaban pertama adalah bahwa URL ini tidak diblokir oleh firewall.
Jika Anda menginginkan gambar terbesar dari YouTube untuk ID video tertentu, URLnya harus seperti ini:
http://i3.ytimg.com/vi/SomeVideoIDHere/0.jpg
Dengan menggunakan API, Anda dapat mengambil gambar mini default. Kode sederhana harus seperti ini:
//Grab the default thumbnail image
$attrs = $media->group->thumbnail[1]->attributes();
$thumbnail = $attrs['url'];
$thumbnail = substr($thumbnail, 0, -5);
$thumb1 = $thumbnail."default.jpg";
// Grab the third thumbnail image
$thumb2 = $thumbnail."2.jpg";
// Grab the fourth thumbnail image.
$thumb3 = $thumbnail."3.jpg";
// Using simple cURL to save it your server.
// You can extend the cURL below if you want it as fancy, just like
// the rest of the folks here.
$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);
// Using fwrite to save the above
$fp = fopen("SomeLocationInReferenceToYourScript/AnyNameYouWant.jpg", 'w');
// Write the file
fwrite($fp, $rawdata);
// And then close it.
fclose($fp);
Jika Anda ingin menyingkirkan "bilah hitam" dan melakukannya seperti YouTube, Anda dapat menggunakan:
https://i.ytimg.com/vi_webp/<video id>/mqdefault.webp
Dan jika Anda tidak dapat menggunakan .webp
ekstensi file Anda dapat melakukannya seperti ini:
https://i.ytimg.com/vi/<video id>/mqdefault.jpg
Juga, jika Anda membutuhkan versi yang tidak berskala, gunakan maxresdefault
sebagai gantimqdefault
.
Catatan: Saya tidak yakin tentang rasio aspek jika Anda berencana untuk menggunakan maxresdefault
.
_webp
dan mengubah ekstensi menjadi .jpg
. Contoh kerja: i.ytimg.com/vi/mJ8tq8AnNis/mqdefault.jpg , saya tidak yakin tentang rasio aspek.
Saya membuat fungsi untuk hanya mengambil gambar yang ada dari YouTube
function youtube_image($id) {
$resolution = array (
'maxresdefault',
'sddefault',
'mqdefault',
'hqdefault',
'default'
);
for ($x = 0; $x < sizeof($resolution); $x++) {
$url = '//img.youtube.com/vi/' . $id . '/' . $resolution[$x] . '.jpg';
if (get_headers($url)[0] == 'HTTP/1.0 200 OK') {
break;
}
}
return $url;
}
Di YouTube Data API v3 , Anda bisa mendapatkan thumbnail video dengan fungsi daftar video-> . Dari snippet.thumbnails (key) , Anda dapat memilih thumbnail default, sedang atau tinggi, dan mendapatkan lebar, tinggi, dan URL-nya.
Anda juga dapat memperbarui thumbnail dengan thumbnail-> mengatur fungsionalitas.
Sebagai contoh, Anda dapat memeriksa proyek Sampel API YouTube . (Yang PHP .)
Anda bisa mendapatkan Entri Video yang berisi URL ke gambar mini video. Ada contoh kode di tautan. Atau, jika Anda ingin mem-parsing XML, ada informasi di sini . XML yang dikembalikan memiliki media:thumbnail
elemen, yang berisi URL gambar mini.
// Get image form video URL
$url = $video['video_url'];
$urls = parse_url($url);
//Expect the URL to be http://youtu.be/abcd, where abcd is the video ID
if ($urls['host'] == 'youtu.be') :
$imgPath = ltrim($urls['path'],'/');
//Expect the URL to be http://www.youtube.com/embed/abcd
elseif (strpos($urls['path'],'embed') == 1) :
$imgPath = end(explode('/',$urls['path']));
//Expect the URL to be abcd only
elseif (strpos($url,'/') === false):
$imgPath = $url;
//Expect the URL to be http://www.youtube.com/watch?v=abcd
else :
parse_str($urls['query']);
$imgPath = $v;
endif;
YouTube dimiliki oleh Google dan Google suka memiliki jumlah gambar yang masuk akal untuk ukuran layar yang berbeda, sehingga gambarnya disimpan dalam ukuran yang berbeda. Berikut ini adalah contoh bagaimana thumbnail Anda akan seperti:
Thumbnail kualitas rendah:
http://img.youtube.com/vi/<YouTube_Video_ID_HERE>/sddefault.jpg
Thumbnail kualitas sedang:
http://img.youtube.com/vi/<YouTube_Video_ID_HERE>/mqdefault.jpg
Thumbnail kualitas tinggi:
http://img.youtube.com/vi/<YouTube_Video_ID_HERE>/hqdefault.jpg
Thumbnail kualitas maksimum:
http://img.youtube.com/vi/<YouTube_Video_ID_HERE>/maxresdefault.jpg
Jika semua yang ingin Anda lakukan adalah mencari YouTube dan mendapatkan properti terkait:
Dapatkan API publik - Tautan ini memberikan arahan yang baik
Gunakan string kueri di bawah ini. Permintaan pencarian (dilambangkan dengan q = ) dalam string URL adalah stackoverflow untuk tujuan contoh. YouTube kemudian akan mengirim Anda kembali balasan JSON di mana Anda kemudian dapat menguraikan Thumbnail, Cuplikan, Penulis, dll.
Alternatif lain yang baik adalah menggunakan oEmbed API yang didukung oleh YouTube.
Anda cukup menambahkan URL YouTube ke URL oEmbed dan Anda akan menerima JSON termasuk thumbnail dan kode HTML untuk disematkan.
Contoh:
http://www.youtube.com/oembed?format=json&url=http%3A//youtube.com/watch%3Fv%3DxUeJdWYdMmQ
Akan memberi Anda:
{
"height":270,
"width":480,
"title":"example video for 2020",
"thumbnail_width":480,
"html":"...",
"thumbnail_height":360,
"version":"1.0",
"provider_name":"YouTube",
"author_url":"https:\/\/www.youtube.com\/channel\/UCza6VSQUzCON- AzlsrOLwaA",
"thumbnail_url":"https:\/\/i.ytimg.com\/vi\/xUeJdWYdMmQ\/hqdefault.jpg",
"author_name":"Pokics",
"provider_url":"https:\/\/www.youtube.com\/",
"type":"video"
}
Menggunakan:
https://www.googleapis.com/youtube/v3/videoCategories?part=snippet,id&maxResults=100®ionCode=us&key=**Your YouTube ID**
Di atas adalah tautannya. Dengan itu, Anda dapat menemukan karakteristik video YouTube. Setelah menemukan karakteristik, Anda bisa mendapatkan video dari kategori yang dipilih. Setelah itu, Anda dapat menemukan gambar video yang dipilih menggunakan jawaban Asaph .
Coba pendekatan di atas dan Anda dapat menguraikan semuanya dari API YouTube .
Saya telah menggunakan thumbnail YouTube dengan cara ini:
$url = 'http://img.youtube.com/vi/' . $youtubeId . '/0.jpg';
$img = dirname(__FILE__) . '/youtubeThumbnail_' . $youtubeId . '.jpg';
file_put_contents($img, file_get_contents($url));
Ingat, YouTube mencegah untuk memasukkan gambar langsung dari server mereka.
Saya menemukan alat yang bagus ini yang memungkinkan Anda membuat gambar dengan tombol putar YouTube ditempatkan di atas gambar:
Hanya untuk menambah / memperluas solusi yang diberikan, saya merasa perlu untuk dicatat bahwa, karena saya memiliki masalah ini sendiri, seseorang sebenarnya dapat mengambil beberapa konten video YouTube, dalam hal ini, thumbnail, dengan satu permintaan HTTP:
Menggunakan Klien Istirahat, dalam hal ini, HTTPFUL, Anda dapat melakukan sesuatu seperti ini:
<?php
header("Content-type", "application/json");
//download the httpfull.phar file from http://phphttpclient.com
include("httpful.phar");
$youtubeVidIds= array("nL-rk4bgJWU", "__kupr7KQos", "UCSynl4WbLQ", "joPjqEGJGqU", "PBwEBjX3D3Q");
$response = \Httpful\Request::get("https://www.googleapis.com/youtube/v3/videos?key=YourAPIKey4&part=snippet&id=".implode (",",$youtubeVidIds)."")
->send();
print ($response);
?>
YouTube memberi kami empat gambar yang dihasilkan untuk setiap video melalui API Data (v3), misalnya,
Sesuai ini, Anda perlu untuk frasa URL Anda seperti ini -
www.googleapis.com/youtube/v3/videos?part=snippet&id=`yourVideoId`&key=`yourApiKey`
Sekarang ubah ID video dan kunci API Anda ke id video dan api-key Anda masing-masing dan responsnya akan berupa output JSON yang memberi Anda empat tautan dalam thumbnail dari variabel snippet (jika semua tersedia).
Anda bisa mendapatkan ID video dari url video YouTube menggunakan parse_url , parse_str dan kemudian masukkan ke url prediktif untuk gambar. Terima kasih ke YouTube untuk URL prediktifnya
$videoUrl = "https://www.youtube.com/watch?v=8zy7wGbQgfw";
parse_str( parse_url( $videoUrl, PHP_URL_QUERY ), $my_array_of_vars );
$ytID = $my_array_of_vars['v']; //gets video ID
print "https://img.youtube.com/vi/$ytID/maxresdefault.jpg";
print "https://img.youtube.com/vi/$ytID/mqdefault.jpg";
print "https://img.youtube.com/vi/$ytID/hqdefault.jpg";
print "https://img.youtube.com/vi/$ytID/sddefault.jpg";
print "https://img.youtube.com/vi/$ytID/default.jpg";
Anda dapat menggunakan alat ini untuk menghasilkan thumbnail YouTube
https://tools.tutsplanet.com/index.php/get-youtube-video-thumbnails
Fungsi PHP sederhana yang saya buat untuk thumbnail YouTube dan tipenya
function get_youtube_thumb($link,$type){
$video_id = explode("?v=", $link);
if (empty($video_id[1])){
$video_id = explode("/v/", $link);
$video_id = explode("&", $video_id[1]);
$video_id = $video_id[0];
}
$thumb_link = "";
if($type == 'default' || $type == 'hqdefault' ||
$type == 'mqdefault' || $type == 'sddefault' ||
$type == 'maxresdefault'){
$thumb_link = 'http://img.youtube.com/vi/'.$video_id.'/'.$type.'.jpg';
}elseif($type == "id"){
$thumb_link = $video_id;
}
return $thumb_link;}
Jika Anda menggunakan API publik, cara terbaik untuk melakukannya adalah menggunakan if
pernyataan.
Jika video bersifat publik atau tidak terdaftar, Anda mengatur thumbnail menggunakan metode URL. Jika video bersifat pribadi, Anda menggunakan API untuk mendapatkan thumbnail.
<?php
if($video_status == 'unlisted'){
$video_thumbnail = 'http://img.youtube.com/vi/'.$video_url.'/mqdefault.jpg';
$video_status = '<i class="fa fa-lock"></i> Unlisted';
}
elseif($video_status == 'public'){
$video_thumbnail = 'http://img.youtube.com/vi/'.$video_url.'/mqdefault.jpg';
$video_status = '<i class="fa fa-eye"></i> Public';
}
elseif($video_status == 'private'){
$video_thumbnail = $playlistItem['snippet']['thumbnails']['maxres']['url'];
$video_status = '<i class="fa fa-lock"></i> Private';
}
Saya pikir mereka banyak jawaban untuk thumbnail, tetapi saya ingin menambahkan beberapa URL lain untuk mendapatkan thumbnail YouTube dengan sangat mudah. Saya hanya mengambil beberapa teks dari jawaban Asaf. Berikut ini beberapa URL untuk mendapatkan thumbnail YouTube:
https://ytimg.googleusercontent.com/vi/<insert-youtube-video-id-here>/default.jpg
Untuk versi thumbnail berkualitas tinggi gunakan URL yang mirip dengan ini:
https://ytimg.googleusercontent.com/vi/<insert-youtube-video-id-here>/hqdefault.jpg
Ada juga versi thumbnail berkualitas menengah, menggunakan URL yang mirip dengan kualitas tinggi:
https://ytimg.googleusercontent.com/vi/<insert-youtube-video-id-here>/mqdefault.jpg
Untuk versi definisi standar dari thumbnail, gunakan URL yang mirip dengan ini:
https://ytimg.googleusercontent.com/vi/<insert-youtube-video-id-here>/sddefault.jpg
Untuk versi resolusi maksimum dari thumbnail gunakan URL yang mirip dengan ini:
https://ytimg.googleusercontent.com/vi/<insert-youtube-video-id-here>/maxresdefault.jpg
function get_video_thumbnail( $src ) {
$url_pieces = explode('/', $src);
if( $url_pieces[2] == 'dai.ly'){
$id = $url_pieces[3];
$hash = json_decode(file_get_contents('https://api.dailymotion.com/video/'.$id.'?fields=thumbnail_large_url'), TRUE);
$thumbnail = $hash['thumbnail_large_url'];
}else if($url_pieces[2] == 'www.dailymotion.com'){
$id = $url_pieces[4];
$hash = json_decode(file_get_contents('https://api.dailymotion.com/video/'.$id.'?fields=thumbnail_large_url'), TRUE);
$thumbnail = $hash['thumbnail_large_url'];
}else if ( $url_pieces[2] == 'vimeo.com' ) { // If Vimeo
$id = $url_pieces[3];
$hash = unserialize(file_get_contents('http://vimeo.com/api/v2/video/' . $id . '.php'));
$thumbnail = $hash[0]['thumbnail_large'];
} elseif ( $url_pieces[2] == 'youtu.be' ) { // If Youtube
$extract_id = explode('?', $url_pieces[3]);
$id = $extract_id[0];
$thumbnail = 'http://img.youtube.com/vi/' . $id . '/mqdefault.jpg';
}else if ( $url_pieces[2] == 'player.vimeo.com' ) { // If Vimeo
$id = $url_pieces[4];
$hash = unserialize(file_get_contents('http://vimeo.com/api/v2/video/' . $id . '.php'));
$thumbnail = $hash[0]['thumbnail_large'];
} elseif ( $url_pieces[2] == 'www.youtube.com' ) { // If Youtube
$extract_id = explode('=', $url_pieces[3]);
$id = $extract_id[1];
$thumbnail = 'http://img.youtube.com/vi/' . $id . '/mqdefault.jpg';
} else{
$thumbnail = tim_thumb_default_image('video-icon.png', null, 147, 252);
}
return $thumbnail;
}
get_video_thumbnail('https://vimeo.com/154618727');
get_video_thumbnail('https://www.youtube.com/watch?v=SwU0I7_5Cmc');
get_video_thumbnail('https://youtu.be/pbzIfnekjtM');
get_video_thumbnail('http://www.dailymotion.com/video/x5thjyz');
Inilah jawaban teratas yang dioptimalkan untuk penggunaan manual. Token ID video tanpa pemisah memungkinkan Anda memilih dengan klik dua kali.
Setiap video YouTube memiliki empat gambar yang dihasilkan. Mereka diprediksi diformat sebagai berikut:
https://img.youtube.com/vi/YOUTUBEVIDEOID/0.jpg
https://img.youtube.com/vi/YOUTUBEVIDEOID/1.jpg
https://img.youtube.com/vi/YOUTUBEVIDEOID/2.jpg
https://img.youtube.com/vi/YOUTUBEVIDEOID/3.jpg
Yang pertama dalam daftar adalah gambar ukuran penuh dan yang lainnya adalah gambar thumbnail. (. Yaitu satu dari default thumbnail image 1.jpg
, 2.jpg
, 3.jpg
) adalah:
https://img.youtube.com/vi/YOUTUBEVIDEOID/default.jpg
Untuk versi thumbnail berkualitas tinggi gunakan URL yang mirip dengan ini:
https://img.youtube.com/vi/YOUTUBEVIDEOID/hqdefault.jpg
Ada juga versi thumbnail berkualitas menengah, menggunakan URL yang mirip dengan HQ:
https://img.youtube.com/vi/YOUTUBEVIDEOID/mqdefault.jpg
Untuk versi definisi standar dari thumbnail, gunakan URL yang mirip dengan ini:
https://img.youtube.com/vi/YOUTUBEVIDEOID/sddefault.jpg
Untuk versi resolusi maksimum dari thumbnail gunakan URL yang mirip dengan ini:
https://img.youtube.com/vi/YOUTUBEVIDEOID/maxresdefault.jpg
Semua URL di atas juga tersedia melalui HTTP. Selain itu, nama host yang sedikit lebih pendek i3.ytimg.com
menggantikan img.youtube.com
URL contoh di atas.
Atau, Anda dapat menggunakan API Data YouTube (v3) untuk mendapatkan gambar mini.
Metode 1:
Anda dapat menemukan semua informasi untuk video YouTube dengan halaman JSON yang bahkan memiliki "thumbnail_url", http://www.youtube.com/oembed?format=json&url= {URL video Anda ada di sini}
Seperti tampilan URL final + kode uji PHP
$data = file_get_contents("https://www.youtube.com/oembed?format=json&url=https://www.youtube.com/watch?v=_7s-6V_0nwA");
$json = json_decode($data);
var_dump($json);
object(stdClass)[1]
public 'width' => int 480
public 'version' => string '1.0' (length=3)
public 'thumbnail_width' => int 480
public 'title' => string 'how to reminder in window as display message' (length=44)
public 'provider_url' => string 'https://www.youtube.com/' (length=24)
public 'thumbnail_url' => string 'https://i.ytimg.com/vi/_7s-6V_0nwA/hqdefault.jpg' (length=48)
public 'author_name' => string 'H2 ZONE' (length=7)
public 'type' => string 'video' (length=5)
public 'author_url' => string 'https://www.youtube.com/channel/UC9M35YwDs8_PCWXd3qkiNzg' (length=56)
public 'provider_name' => string 'YouTube' (length=7)
public 'height' => int 270
public 'html' => string '<iframe width="480" height="270" src="https://www.youtube.com/embed/_7s-6V_0nwA?feature=oembed" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>' (length=171)
public 'thumbnail_height' => int 360
Untuk detailnya, Anda juga dapat melihat Cara mendapatkan thumbnail video YouTube menggunakan id atau https://www.youtube.com/watch?v=mXde7q59BI8 tutorial video 1
Metode 2:
Menggunakan tautan gambar YouTube, https://img.youtube.com/vi/ "masukkan-youtube-video-id-here" /default.jpg
Metode 3:
Menggunakan kode sumber browser untuk mendapatkan thumbnail menggunakan tautan URL video-pergi ke kode sumber video dan cari thumbnailurl. Sekarang Anda dapat menggunakan URL ini ke dalam kode sumber Anda:
{img src="https://img.youtube.com/vi/"insert-youtube-video-id-here"/default.jpg"}
Untuk detailnya Anda juga dapat melihat Cara mendapatkan thumbnail video YouTube menggunakan id atau https://www.youtube.com/watch?v=9f6E8MeM6PI video tutorial 2
https://www.youtube.com/watch?v=mXde7q59BI8
dan https://www.youtube.com/watch?v=9f6E8MeM6PI
(secara efektif) rusak.
Menggunakan img.youtube.com/vi/YouTubeID/ImageFormat.jpg
Di sini format gambar berbeda seperti default, hqdefault, maxresdefault.
Ini adalah solusi tanpa-API-kunci-kebutuhan-sisi-klien saya saja.
YouTube.parse('https://www.youtube.com/watch?v=P3DGwyl0mJQ').then(_ => console.log(_))
Kode:
import { parseURL, parseQueryString } from './url'
import { getImageSize } from './image'
const PICTURE_SIZE_NAMES = [
// 1280 x 720.
// HD aspect ratio.
'maxresdefault',
// 629 x 472.
// non-HD aspect ratio.
'sddefault',
// For really old videos not having `maxresdefault`/`sddefault`.
'hqdefault'
]
// - Supported YouTube URL formats:
// - http://www.youtube.com/watch?v=My2FRPA3Gf8
// - http://youtu.be/My2FRPA3Gf8
export default
{
parse: async function(url)
{
// Get video ID.
let id
const location = parseURL(url)
if (location.hostname === 'www.youtube.com') {
if (location.search) {
const query = parseQueryString(location.search.slice('/'.length))
id = query.v
}
} else if (location.hostname === 'youtu.be') {
id = location.pathname.slice('/'.length)
}
if (id) {
return {
source: {
provider: 'YouTube',
id
},
picture: await this.getPicture(id)
}
}
},
getPicture: async (id) => {
for (const sizeName of PICTURE_SIZE_NAMES) {
try {
const url = getPictureSizeURL(id, sizeName)
return {
type: 'image/jpeg',
sizes: [{
url,
...(await getImageSize(url))
}]
}
} catch (error) {
console.error(error)
}
}
throw new Error(`No picture found for YouTube video ${id}`)
},
getEmbeddedVideoURL(id, options = {}) {
return `https://www.youtube.com/embed/${id}`
}
}
const getPictureSizeURL = (id, sizeName) => `https://img.youtube.com/vi/${id}/${sizeName}.jpg`
Utilitas image.js
:
// Gets image size.
// Returns a `Promise`.
function getImageSize(url)
{
return new Promise((resolve, reject) =>
{
const image = new Image()
image.onload = () => resolve({ width: image.width, height: image.height })
image.onerror = reject
image.src = url
})
}
Utilitas url.js
:
// Only on client side.
export function parseURL(url)
{
const link = document.createElement('a')
link.href = url
return link
}
export function parseQueryString(queryString)
{
return queryString.split('&').reduce((query, part) =>
{
const [key, value] = part.split('=')
query[decodeURIComponent(key)] = decodeURIComponent(value)
return query
},
{})
}
Berikut adalah fungsi sederhana yang saya buat untuk mendapatkan thumbnail. Mudah dimengerti dan digunakan.
$ link adalah tautan YouTube yang disalin persis seperti yang ada di browser, misalnya, https://www.youtube.com/watch?v=BQ0mxQXmLsk
function get_youtube_thumb($link){
$new = str_replace('https://www.youtube.com/watch?v=', '', $link);
$thumbnail = 'https://img.youtube.com/vi/' . $new . '/0.jpg';
return $thumbnail;
}
&t=227s
?
Simpan kode ini dalam file .php kosong dan ujilah.
<img src="<?php echo youtube_img_src('9bZkp7q19f0', 'high');?>" />
<?php
// Get a YOUTUBE video thumb image's source url for IMG tag "src" attribute:
// $ID = YouYube video ID (string)
// $size = string (default, medium, high or standard)
function youtube_img_src ($ID = null, $size = 'default') {
switch ($size) {
case 'medium':
$size = 'mqdefault';
break;
case 'high':
$size = 'hqdefault';
break;
case 'standard':
$size = 'sddefault';
break;
default:
$size = 'default';
break;
}
if ($ID) {
return sprintf('https://img.youtube.com/vi/%s/%s.jpg', $ID, $size);
}
return 'https://img.youtube.com/vi/ERROR/1.jpg';
}
Terima kasih.
public const string tubeThumb = "http://i.ytimg.com/vi/[id]/hqdefault.jpg";
vid.Thumbnail = tubeThumb.Replace("[id]", vid.VideoID);