Yine uzun bi aradan sonra yazacak bi malzeme aklıma gelmişken, not düşeyim. Youtube video arama tekniğini (gdata json api) kullanarak basit bir ajax arama sistemi yapalım.
Uygulamada 2 farklı php dosyası oluşturduk. Ana dosya (index.php) ve ajax postun cevaplandığı arama (videosearch.php) dosyası uygulamanın çalışması için yeterlidir.
Basit bir arama formu ile aranan kelime, jquery post methodu ile, videosearch.php dosyasına aktarılır ve youtube gdata apisine gönderilir.
index.php kodlarını inceleyelim:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Youtube JSON Video Arama - Serpito</title> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script> <script type="text/javascript"> <?php if(isset($_GET['q'])){ ?> $.ajax({ type: 'POST', url: 'videosearch.php', data: 'key=<?=$_GET['q']?>', success:function(ajaxCevap) { $('#sonuclar').html(ajaxCevap); } }); <?php } ?> </script> </head> <body> <h1>Serpito.com demo</h1> <hr /> <form method="get"><strong>Aranacak kelime:</strong> <input type="text" name="q" value="<?=$_GET['q']?>"/> <input type="submit" value="Ara" /></form> <p>&amp;amp;amp;nbsp;</p> <div id="sonuclar" align="center"> <?php if(isset($_GET['q'])){ ?> <img src="http://www.biyografim.net/images/fav-loader.gif" align="middle" /> <br /> <strong>Sonuçlar yükleniyor</strong> <?php }else{ ?> <strong>Videolar için arama kutucuğunu kullanınız.</strong> <?php } ?> </div> <hr /> <div style="clear:both;"></div> <br /><br /> Bu demo <strong><a href="http://www.serpito.com/php-json-ajax-youtube-video-aramalari/">PHP: JSON: AJAX: Youtube Video Aramaları</a></strong> yazısı için hazırlanmıştır. </body> </html>
index.php ile alınan arama kelimesi, kodlarda görebileceğiniz gibi jquery yardımıyla videosearch.php dosyasına post edilir ve gelen cevap sonuclar div katmanının içine aktarılır.
videosearch.php kodları:
<style> html{font-family:Verdana, Geneva, sans-serif; font-size:11px;} a{color:#009; text-decoration:none;} a img{border:none;} </style> <?php $key=$_POST['key']; function VideoSearch($searchTerms) { $googleBaseUrl = "http://gdata.youtube.com/feeds/api/videos?q=".$searchTerms."&amp;amp;amp;format=5&amp;amp;amp;start-index=1&amp;amp;amp;max-results=20&amp;amp;amp;v=2&amp;amp;amp;alt=jsonc"; /* CURL ile bağlanılacak youtube gdata bağlantısı*/ $googleFullUrl = $googleBaseUrl; $curlObject = curl_init(); curl_setopt($curlObject,CURLOPT_URL,$googleFullUrl); curl_setopt($curlObject,CURLOPT_RETURNTRANSFER,true); curl_setopt($curlObject,CURLOPT_HEADER,false); curl_setopt($curlObject,CURLOPT_REFERER,"http://www.serpito.com/"); $returnGoogleSearch = curl_exec($curlObject); curl_close($curlObject); $returnGoogleSearch = json_decode($returnGoogleSearch,true); /*json formatında gelen cevap decode edilir*/ return $returnGoogleSearch['data']['items']; } $setSearchTerms = urlencode($key); $searchResults = VideoSearch($setSearchTerms); if(sizeof($searchResults)>0){ foreach($searchResults as $result){ ?> <div style="width:150px; float:left; padding:3px; margin:5px; height:130px; overflow:hidden;"> <a href="http://www.youtube.com/watch?v=<?=$result['id']?>" title="<?=$result['title']?>"> <img src="<?=$result['thumbnail']['sqDefault']?>" width="120" alt="<?=$result['title']?>" title="<?=$result['title']?>"/> </a> <p align="center"> <a href="http://www.youtube.com/watch?v=<?=$result['id']?>" title="<?=$result['title']?>"> <?=$result['title']?> </a> </p> </div> <?php } } ?>
güzelmiş aslında ama birde bu videoları kendi playerimizin içinde oynatabilseydik
Onur, Dostum ! Aslında Böyle Birşey Mümküm : ) , Sadece PHP’yi iyi Bilen Birisi Gerekiyor. Mesela Ben Şu Anda Bu Script’i Geliştiriyorum : ) , videosearch.php’den Gerekli Kodları Alıp, Başka Bir PHP Sayfasına Yapıştırman Gerek Sadece : )
Selamlar. youtube videolarını bir başka siteye aktarmak konusunda sıkıntılarım var. mesela izlesene sitesinde bu uygulama yapılmış. youtuve url giriliyor ve sitedeki php script videoyu youtube.comdan alıyor, kendi serverine aktarıyor.
Ben bunun aynısını php ile yaptım. Ancak şöyle bir sorun oluştu. Şimdi serverin ipsine youtube ban koydu doğal olarak.
sorum şu: youtube bu hizmeti bir api ile legal olarak sağlar mı sizce? sağlarsa adres, döküman, örnek vs bilgisi olanlar yardımcı olur mu lütfen?
teşekkür ederim.
not olarak izlesene dışında az önce tvreklam.org sitesinde de reklam yükle bölümünde aynı uygulamayı yaptıklarıını gördüm.
Gayet başarılı olmuş. ama Onur un dediği gibi kendi playerımızda oynatsak daha da süper olur.
@semih; Şuradaki adreste istediğin tarzda youtube videolarını farklı playerda oynatabilirsin.
Cem arkadaş güzel soru sormuş ama kimse iplememiş. Bari ben ipleyeip cevap yazayım. Cem arkadaş sorunun çözümü çok basit. Böyle bir api var. tvreklam.org bu altyapıyı kullanıyor oradaki developer arkadaşım.
http://code.google.com/intl/tr-TR/apis/youtube/overview.html
Hocam ben asp programcısıyım, php ye merak sardım.
Senin verdiğin dosyaları indirdim videosearch içindeki key bölümüne youtube id numaramı yazdım,
fakat arama yapınca hiç birşey olmuyor görüntülenmiyor.
Bir de index.php içindeki <input type="text" name="q" value="”/>
bu yazım doğrumu çünkü çalıştırdığımda arama kutusunda
bu görünüyor burada yanlış bişey yokmu.
sorgularını gözden geçir salih, yukarıdaki kodlar aynı şekilde uygulamanın demosunda çalışıyor.
Hocam kolay gelsin localhostta denedim çalışmıyor ama siteye atınca çalışıyor.
Ömer; Localhost da CURL çalıştıramıyorsun demekki.
Bilindiği gibi aramak istenilen kelimeyi yazdığımızda sonuçlar aynı sayfada resimleriyle gösteriliyor ve resme tıklandığında aynı sayfada youtube’a bağlanıyor. videosearch.php dosyasında yaptığım ufak bir değişiklikle resme tıklayıp açmak yerine videoplayer olarak gösteriliyor ve oynat butonu ile izleyebiliyorum. Fakat ben arama yapıldığında sonuçların ayrı bir sayfada (örn:sonuclar.php) gösterilmesini istiyorum. Bu konuda bana yardımcı olacak var mı?
dostum eline sağlık ama neden olmuyor?
hiçbirşey bulamıyor acaba sorun nedir kontrol etme şansın varmı
http://www.kozbey.com/y/y/ burada örnekledim ama çalışmadı. yardımını bekliyorum