Bir YouTube video URL'm varsa, ilişkili küçük resmi YouTube API'sından almak için PHP ve cURL kullanmanın bir yolu var mı?
Bir YouTube video URL'm varsa, ilişkili küçük resmi YouTube API'sından almak için PHP ve cURL kullanmanın bir yolu var mı?
Yanıtlar:
Her YouTube videosunda dört oluşturulan resim vardır. Tahmin edilebilir şekilde aşağıdaki gibi biçimlendirilirler:
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
Listedeki ilk resim tam boyutlu bir resimdir ve diğerleri küçük resim görüntüleridir. Varsayılan küçük resim (yani biri 1.jpg
, 2.jpg
, 3.jpg
) 'dir:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/default.jpg
Küçük resmin yüksek kaliteli sürümü için aşağıdakine benzer bir URL kullanın:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/hqdefault.jpg
Genel merkeze benzer bir URL kullanarak küçük resmin orta kalitede bir sürümü de vardır:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/mqdefault.jpg
Küçük resmin standart tanım sürümü için aşağıdakine benzer bir URL kullanın:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/sddefault.jpg
Küçük resmin maksimum çözünürlük sürümü için aşağıdakine benzer bir URL kullanın:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/maxresdefault.jpg
Yukarıdaki URL'lerin tümü HTTP üzerinden de kullanılabilir. Ayrıca, biraz daha kısa ana bilgisayar adı yukarıdaki örnek URL'lerin i3.ytimg.com
yerine çalışır img.youtube.com
.
Alternatif olarak, küçük resim almak için YouTube Veri API'sını (v3) kullanabilirsiniz.
http://www.img.youtube.com
sadece kullanamazsınızhttp://img.youtube.com
mqdefault
16: 9
sddefault
ve maxresdefault
DAİMA DEĞİLDİR bazı videolar olsa da ...
Video küçük resimleri, resim yazısı, açıklama, derecelendirme, istatistikler ve daha fazlasını almak için YouTube Veri API'sını kullanabilirsiniz . API sürüm 3 bir anahtar * gerektirir. Anahtarı alın ve bir video oluşturun : liste isteği:
https://www.googleapis.com/youtube/v3/videos?key=YOUR_API_KEY&part=snippet&id=VIDEO_ID
Örnek PHP Kodu
$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);
Çıktı
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)
}
}
* Yalnızca bir anahtara ihtiyacınız olmadığından, yapmayı planladığınız API isteklerinin sayısına bağlı olarak fatura bilgileri istenebilir. Ancak, günde birkaç milyon istek ücretsizdir.
jsonc
yerine json
getJSON için. Yanlış JSON yapınız nedeniyle başarısız oluyor.
jsonc
. JQuery ve PHP örnekler GEREKİR kullanın json
. Ve yeni JSON yapısına uyacak şekilde kodu güncelledim. Şu anda kodu kullanıyorum ve CANLI çalışıyor. bu yüzden değişiklikleri okumadan çalışmadığını söylemeyin. Teşekkürler!
v=2
) istemek API değişikliklerini de dikkate alır.
Asaph'ın söyledikleri doğru. Ancak, her YouTube videosu dokuz küçük resmin tümünü içermez. Ayrıca, küçük resimlerin görüntü boyutları videoya bağlıdır (aşağıdaki sayılar bir taneye dayanmaktadır).
Var olması garanti edilen yedi küçük resim vardır:
| 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 |
Ayrıca, diğer iki küçük resim var olabilir veya olmayabilir. Varlıkları büyük olasılıkla videonun yüksek kaliteli olup olmadığına bağlıdır.
| 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 |
Küçük resimleri ve diğer YouTube bilgilerini almak için JavaScript ve PHP komut dosyalarını bulabilirsiniz:
Bir URL veya video kimliği göndererek bir YouTube videosu hakkındaki tüm bilgileri almak için YouTube Video Bilgi Oluşturucu aracını da kullanabilirsiniz .
YouTube API V3'te bu URL'leri küçük resimler elde etmek için de kullanabiliriz ... Kalitelerine göre sınıflandırılırlar.
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
Ve maksimum çözünürlük için ..
https://i1.ytimg.com/vi/<insert-youtube-video-id-here>/maxresdefault.jpg
Bu URL'lerin ilk yanıttaki URL'lere göre avantajlarından biri, bu URL'lerin güvenlik duvarları tarafından engellenmemesi.
Belirli bir video kimliği için YouTube'dan en büyük resmi almak istiyorsanız, URL aşağıdaki gibi olmalıdır:
http://i3.ytimg.com/vi/SomeVideoIDHere/0.jpg
API'yı kullanarak varsayılan küçük resim görüntüsünü alabilirsiniz. Basit kod şöyle olmalıdır:
//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);
"Siyah çubuklardan" kurtulmak ve bunu YouTube'un yaptığı gibi yapmak istiyorsanız şunları kullanabilirsiniz:
https://i.ytimg.com/vi_webp/<video id>/mqdefault.webp
Kullanmadığınız Ve eğer .webp
dosya uzantısı bunu şöyle yapabilirsiniz:
https://i.ytimg.com/vi/<video id>/mqdefault.jpg
Ayrıca, ölçeklendirilmemiş sürüme ihtiyacınız varsa maxresdefault
yerine kullanın mqdefault
.
Not: Kullanmayı planlıyorsanız, en boy oranından emin değilim maxresdefault
.
_webp
ve olarak değiştirirseniz çalışır .jpg
. Çalışma örneği: i.ytimg.com/vi/mJ8tq8AnNis/mqdefault.jpg , en boy oranından emin değilim.
Yalnızca YouTube'dan mevcut resimleri getirme işlevi gördüm
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;
}
In YouTube Veri API'sı v3 , sizinle videonun küçük resimlerini alabilirsiniz Video-> liste fonksiyonu. Gönderen snippet.thumbnails. (Tuşu) , varsayılan, orta veya yüksek çözünürlüklü küçük resim seçmek ve genişliği, yüksekliği ve URL alabilecek.
Minik resimleri, minik resimler-> ayar işleviyle de güncelleyebilirsiniz .
Örnekler için YouTube API Örnekleri projesine göz atabilirsiniz . ( PHP olanlar .)
Videonun küçük resminin URL'sini içeren Video Girişini alabilirsiniz . Bağlantıda örnek kod var. XML Ayrıştırma istiyorsanız Veya, bilgi var burada . Döndürülen XML media:thumbnail
, küçük resmin URL'sini içeren bir öğeye sahiptir .
// 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 Google'a aittir ve Google farklı ekran boyutları için makul sayıda resme sahip olmayı sever, bu nedenle görüntüleri farklı boyutlarda saklanır. Küçük resminizin nasıl olacağını gösteren bir örnek:
Düşük kaliteli küçük resim:
http://img.youtube.com/vi/<YouTube_Video_ID_HERE>/sddefault.jpg
Orta kalitede küçük resim:
http://img.youtube.com/vi/<YouTube_Video_ID_HERE>/mqdefault.jpg
Yüksek kaliteli küçük resim:
http://img.youtube.com/vi/<YouTube_Video_ID_HERE>/hqdefault.jpg
Maksimum kalitede küçük resim:
http://img.youtube.com/vi/<YouTube_Video_ID_HERE>/maxresdefault.jpg
Yapmak istediğiniz tek şey YouTube'da arama yapmak ve ilişkili mülkleri almaksa:
Herkese açık bir API edinin - Bu bağlantı iyi bir yön verir
Aşağıdaki sorgu dizesini kullanın. URL dizesindeki arama sorgusu ( q = ile gösterilir ), örneğin amaçlar için stackoverflow şeklindedir . YouTube size daha sonra Küçük Resim, Snippet, Yazar vb. İçin ayrıştırabileceğiniz bir JSON yanıtı gönderir.
Başka bir iyi alternatif, YouTube tarafından desteklenen oEmbed API'sini kullanmak olacaktır .
YouTube URL'nizi oEmbed URL'sine eklemeniz yeterlidir ve gömmek için bir küçük resim ve HTML kodu içeren bir JSON alırsınız.
Misal:
http://www.youtube.com/oembed?format=json&url=http%3A//youtube.com/watch%3Fv%3DxUeJdWYdMmQ
Size verecekti:
{
"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"
}
Daha fazla bilgi için belgeleri okuyun .
kullanın:
https://www.googleapis.com/youtube/v3/videoCategories?part=snippet,id&maxResults=100®ionCode=us&key=**Your YouTube ID**
Yukarıdaki bağlantı. Bunu kullanarak videoların YouTube özelliklerini bulabilirsiniz. Karakteristikleri bulduktan sonra, seçilen kategoriden videolar alabilirsiniz. Bundan sonra Asaph'ın cevabını kullanarak seçilen video görüntülerini bulabilirsiniz .
Yukarıdaki yaklaşımı deneyin ve YouTube API'sındaki her şeyi ayrıştırabilirsiniz .
YouTube küçük resimlerini şu şekilde kullandım:
$url = 'http://img.youtube.com/vi/' . $youtubeId . '/0.jpg';
$img = dirname(__FILE__) . '/youtubeThumbnail_' . $youtubeId . '.jpg';
file_put_contents($img, file_get_contents($url));
YouTube'un görüntüleri doğrudan sunucularından eklemeyi engellediğini unutmayın.
Resmin üzerine yerleştirilmiş YouTube oynatma düğmesiyle resim oluşturmanıza olanak tanıyan bu şık aracı buldum:
Sadece verilen çözümleri eklemek / genişletmek için, kendim bu sorunu yaşadığım için, aslında bir HTTP isteği ile birden fazla YouTube videosu içeriği, bu durumda küçük resimler alabileceğinizi belirtmek gerekir:
Bir Rest Client kullanarak, bu durumda, HTTPFUL, şöyle bir şey yapabilirsiniz:
<?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 bize Veri API'sı (v3) aracılığıyla her video için oluşturulan dört resmi sağlar, örneğin,
Buna göre URL'nizi şöyle ifade etmeniz gerekir -
www.googleapis.com/youtube/v3/videos?part=snippet&id=`yourVideoId`&key=`yourApiKey`
Şimdi video kimliğinizi ve API anahtarınızı ilgili video kimliğinize ve api anahtarınıza değiştirin; yanıtı, snippet değişkeninin küçük resimlerindeki dört bağlantıyı (tümü mevcutsa) sağlayan bir JSON çıkışı olacaktır.
Video kimliğini parse_url , parse_str kullanarak YouTube video url'sinden alabilir ve ardından resimler için tahmini URL'lere ekleyebilirsiniz. Tahmini URL'ler için YouTube'a teşekkürler
$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";
YouTube küçük resimleri oluşturmak için bu aracı kullanabilirsiniz
https://tools.tutsplanet.com/index.php/get-youtube-video-thumbnails
YouTube küçük resmi ve türleri için oluşturduğum basit bir PHP işlevi
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;}
Genel API kullanıyorsanız, bunu yapmanın en iyi yolu if
ifadeler kullanmaktır .
Video herkese açık veya liste dışıysa, URL yöntemini kullanarak küçük resmi ayarlarsınız. Video özelse, küçük resmi almak için API'yı kullanırsınız.
<?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';
}
Bence onların küçük resim için bir sürü cevabı var, ancak YouTube küçük resmini çok kolay bir şekilde almak için başka URL'ler eklemek istiyorum. Sadece Asaph'ın cevabından bir metin alıyorum. YouTube küçük resimlerini almak için bazı URL'ler şunlardır:
https://ytimg.googleusercontent.com/vi/<insert-youtube-video-id-here>/default.jpg
Küçük resmin yüksek kaliteli sürümü için aşağıdakine benzer bir URL kullanın:
https://ytimg.googleusercontent.com/vi/<insert-youtube-video-id-here>/hqdefault.jpg
Yüksek kaliteye benzer bir URL kullanarak küçük resmin orta kalitede bir sürümü de vardır:
https://ytimg.googleusercontent.com/vi/<insert-youtube-video-id-here>/mqdefault.jpg
Küçük resmin standart tanım sürümü için aşağıdakine benzer bir URL kullanın:
https://ytimg.googleusercontent.com/vi/<insert-youtube-video-id-here>/sddefault.jpg
Küçük resmin maksimum çözünürlük sürümü için aşağıdakine benzer bir URL kullanın:
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');
İşte manuel kullanım için optimize edilmiş en iyi cevap . Ayırıcı içermeyen video kimliği belirteci, çift tıklama ile seçim yapılmasını sağlar.
Her YouTube videosunda dört oluşturulan resim vardır. Tahmin edilebilir şekilde aşağıdaki gibi biçimlendirilirler:
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
Listedeki ilk resim tam boyutlu bir resimdir ve diğerleri küçük resim görüntüleridir. (. Yani biri varsayılan küçük resim 1.jpg
, 2.jpg
, 3.jpg
) 'dir:
https://img.youtube.com/vi/YOUTUBEVIDEOID/default.jpg
Küçük resmin yüksek kaliteli sürümü için aşağıdakine benzer bir URL kullanın:
https://img.youtube.com/vi/YOUTUBEVIDEOID/hqdefault.jpg
Genel merkeze benzer bir URL kullanarak küçük resmin orta kalitede bir sürümü de vardır:
https://img.youtube.com/vi/YOUTUBEVIDEOID/mqdefault.jpg
Küçük resmin standart tanım sürümü için aşağıdakine benzer bir URL kullanın:
https://img.youtube.com/vi/YOUTUBEVIDEOID/sddefault.jpg
Küçük resmin maksimum çözünürlük sürümü için aşağıdakine benzer bir URL kullanın:
https://img.youtube.com/vi/YOUTUBEVIDEOID/maxresdefault.jpg
Yukarıdaki URL'lerin tümü HTTP üzerinden de kullanılabilir. Ayrıca, biraz daha kısa ana bilgisayar adı yukarıdaki örnek URL'lerin i3.ytimg.com
yerine çalışır img.youtube.com
.
Alternatif olarak, küçük resim almak için YouTube Veri API'sını (v3) kullanabilirsiniz.
Yöntem 1:
"Küçük resim_url", http://www.youtube.com/oembed?format=json&url= {video URL'niz buraya gelir}
Nihai URL görünümü + PHP test kodu gibi
$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
Ayrıntılar için id veya https://www.youtube.com/watch?v=mXde7q59BI8 video eğiticisini kullanarak YouTube videosu küçük resmini nasıl alacağınızı da görebilirsiniz 1
Yöntem 2:
YouTube resim bağlantısını kullanarak, https://img.youtube.com/vi/ "insert-youtube-video-id-here" /default.jpg
Yöntem 3:
Video URL bağlantısını kullanarak küçük resim almak için tarayıcı kaynak kodunu kullanma - video kaynak koduna git ve thumbnailurl öğesini arayın. Artık bu URL'yi kaynak kodunuzda kullanabilirsiniz:
{img src="https://img.youtube.com/vi/"insert-youtube-video-id-here"/default.jpg"}
Ayrıntılar için id veya https://www.youtube.com/watch?v=9f6E8MeM6PI video eğitimi 2 kullanarak bir YouTube videosu küçük resmini nasıl edineceğinizi de görebilirsiniz.
https://www.youtube.com/watch?v=mXde7q59BI8
ve https://www.youtube.com/watch?v=9f6E8MeM6PI
(etkin) kopuk.
kullanım img.youtube.com/vi/YouTubeID/ImageFormat.jpg
Burada görüntü formatları varsayılan, hqdefault, maxresdefault gibi farklıdır.
Bu benim istemci tarafı-sadece-API-anahtar gerekli çözümdür.
YouTube.parse('https://www.youtube.com/watch?v=P3DGwyl0mJQ').then(_ => console.log(_))
Kod:
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`
Yardımcı Program 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
})
}
Yardımcı Program 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
},
{})
}
Küçük resimleri almak için oluşturduğum basit bir işlev. Anlamak ve kullanmak kolaydır.
$ bağlantısı, tıpkı tarayıcıda olduğu gibi kopyalanan YouTube bağlantısıdır, örneğin, 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
?
Bu kodu boş .php dosyasına kaydedin ve test edin.
<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';
}
Teşekkürler.
public const string tubeThumb = "http://i.ytimg.com/vi/[id]/hqdefault.jpg";
vid.Thumbnail = tubeThumb.Replace("[id]", vid.VideoID);