alexa  Menu
youtube video gorselini cekme

Php ile youtube video görselini çekme

  06.09.2016 ,   4 yorum ,   6.111 kez okundu.

Sitenizde youtube kanalınızda paylaştığınız veya başka birinin paylaştığı videoları yayınlıyorsanız muhtemelen video görselini de eklemek isteyebilirsiniz. Tabi bu durum site yapısına, projeye göre değişebilir.

Farzedelim siteniz video sitesi ve her video için görsel girmeniz gerekiyor. Bu durumda her video için yeni bir görsel hazırlamanız veya internet üzerinden bulup upload etmeniz gerekebilir.

Fakat bu işlemleri yapmadan youtube video görselini kolay bir şekilde elde etmeniz için birkaç link sunuyor. Her videoya ait 4-5 farklı boyutta görseli çekebileceğiniz linkler şöyle:

http://img.youtube.com/vi/<--video-id-->/0.jpg
http://img.youtube.com/vi/<--video-id-->/1.jpg
http://img.youtube.com/vi/<--video-id-->/2.jpg
http://img.youtube.com/vi/<--video-id-->/3.jpg
http://img.youtube.com/vi/<--video-id-->/default.jpg
http://img.youtube.com/vi/<--video-id-->/sddefault.jpg
http://img.youtube.com/vi/<--video-id-->/hqdefault.jpg
http://img.youtube.com/vi/<--video-id-->/mqdefault.jpg
http://img.youtube.com/vi/<--video-id-->/maxresdefault.jpg

maxresdefault.jpg video görselini en yüksek kalitede çekmenizi sağlar.
mqdefault.jpg ise daha küçük (320x180px) fakat ilave birşeyler olmadan görseli çekecektir.

Diğer boyutlarda ise görselin altında ve üstünde siyah bir katman çıkacaktır. O yüzden üstteki iki seçenek daha çok kullanışlı bana göre.

Şimdi gelelim bu görselleri php ile otomatik nasıl çekebileceğimize. Direk kodumuzu paylaşıyorum:

<?php
//Youtube video linki
$videoURL = "https://www.youtube.com/watch?v=TU0BjUhNskI";
//Youtube video görsel boyutu
$thumbnailSize = "mqdefault"; //maxresdefault,mqdefault, sddefault, hqdefault, default, 3, 2, 1, 0
//Eğer link girilmişse çalışsın
if($videoURL) 
{
	//Youtube`a ait farklı video linklerini kontrol ediyoruz. Video id karakter sayını kontrol ediyoruz.11 haneli olması lazım.
	if (preg_match('%(?:youtube(?:-nocookie)?.com/(?:[^/]+/.+/|(?:v|e(?:mbed)?)/|.*[?&]v=)|youtu.be/)([^"&?/ ]{11})%i', $videoURL, $id))
	{
		//video id`sini yazdıralım.
        $videoId = $id[1];
    } 
    //Görseli gösterelim.
    echo '<img src="http://img.youtube.com/vi/'.$videoId.'/'.$thumbnailSize.'.jpg">';
}
?>

Şimdi gelelim kodumuzun açıklamasına. Aslında kod içerisinde açıklamalar yaptım fakat yine de kısaca anlatmaya çalışayım.

3. satırda video linkimizi aldık.

5. satırda video görselinin boyutunu belirliyoruz. Youtube tarafından sunulan video görseli boyutları şunlardır:  maxresdefault, mqdefault, sddefault, hqdefault, default, 3, 2, 1, 0. Dolayısıyla bu satırda istediğiniz boyutu girebilirsiniz.

7. satırda video linkinin girilip girilmediğini kontrol ediyoruz.

10. satır önemli. Burada youtube video linkini kontrol ediyoruz. Çünkü video linki farklı şekilde girilebilir. Mesela:

  • https://www.youtube.com/watch?v=TU0BjUhNskI
  • https://www.youtube.com/embed/TU0BjUhNskI
  • http://youtu.be/TU0BjUhNskI
  • http://www.youtube.com/v/TU0BjUhNskI
  • http://www.youtube.com/e/TU0BjUhNskI
  • http://www.youtube.com/user/username#p/u/11/TU0BjUhNskI

bu şekilde girilmiş olabilir. Yani tüm bu linkleri preg_match komutu ile irdeleyip video idmizi buluyoruz. Üstteki linklerdeki video id`si  TU0BjUhNskI.

Daha sonra 13. satırda video id`mizi videoId değişkenine atıyoruz.

16. satırda videoId ve thumbnailSize değişkenlerini kullanarak görselimizi yazdırıyoruz.

İşte bu kadar. Umarım faydalı bir paylaşım olmuştur. 🙂

Uygulamaya github hesabımdan ulaşabilirsiniz.

4 yorum yapılmış

    Nurettin Uslu

    Çok güzel işe yarar bir anlatım olmuş. Teşekkürler 🙂

    11.09.2016, 10:43:00

    ömer

    kardeşim tam istediğim gibi bir kod çalışmasında sıkıntı yok. ellerine sağlık böyle bir paylaşım için .

    22.02.2017, 9:48:45

    Saliha

    $id değişkeni tanımlanmamıştır diye bir hata döndürür bu kod.

    17.12.2021, 8:34:04

Yorum yapın..

isim yerine gerçek isim ve soyisim yazılmadan yapılan yorumlar kesinlikle onaylanmıyor bilginiz olsun.


The reCAPTCHA verification period has expired. Please reload the page.


%d blogcu bunu beğendi: