PHP: JSON: AJAX: Youtube Video Aramaları

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&#91;'q'&#93;)){
?>
$.ajax({
type: 'POST',
url: 'videosearch.php',
data: 'key=<?=$_GET&#91;'q'&#93;?>',
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&#91;'q'&#93;?>"/> <input type="submit" value="Ara" /></form>
<p>&amp;amp;amp;amp;nbsp;</p>

<div id="sonuclar" align="center">
<?php
if(isset($_GET&#91;'q'&#93;)){
?>
<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&#91;'key'&#93;;

function VideoSearch($searchTerms) {
$googleBaseUrl = "http://gdata.youtube.com/feeds/api/videos?q=".$searchTerms."&amp;amp;amp;amp;format=5&amp;amp;amp;amp;start-index=1&amp;amp;amp;amp;max-results=20&amp;amp;amp;amp;v=2&amp;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&#91;'data'&#93;&#91;'items'&#93;;
}

$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&#91;'id'&#93;?>" title="<?=$result&#91;'title'&#93;?>">
<img src="<?=$result&#91;'thumbnail'&#93;&#91;'sqDefault'&#93;?>" width="120" alt="<?=$result&#91;'title'&#93;?>" title="<?=$result&#91;'title'&#93;?>"/>
</a>
<p align="center">
<a href="http://www.youtube.com/watch?v=<?=$result&#91;'id'&#93;?>" title="<?=$result&#91;'title'&#93;?>">
<?=$result&#91;'title'&#93;?>
</a>
</p>
</div>
<?php
}
}
?>

DEMO

Download

12 thoughts on “PHP: JSON: AJAX: Youtube Video Aramaları

  • 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.

  • 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.

  • 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ı?

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir