Youtube’da Arama Yapmak Search:list

Youtube Data Apisini kullanarak kolaylıkla arama yapabiliriz. Karşımıza kanallar, videolar ve oynatma listesi gibi sonuçlar çıkar ve bu çıkan bu sonuçları listeleriz. Bize json olarak dönen sonuçların içerisinde video mu kanal mı olduğunu kind  etiketine bakarak öğrenebiliriz eğer kanal ise kanal id’sine erişebilir video ise hem videonun id’sine  hemde kanal id’sine erişebiliriz. Aynı zamanda başlık, açıklama, video resim urli gibi bilgilerde listelediğimiz sonuçlar arasında yer almakta. Kısacası kendi sunucumuzda Youtube Search’ı kolay bir şekilde oluşturabliriz.


Öncelikle bu apiyi kullanmamız için apiyi etkinleştirmemiz gerekiyor, OAuth 2.0 istemci kimliğine sahip olmanız ve Google Client Kütüphanelerini edinmiş olmamız gerekiyor bilgilendirme kategorisinin altındaki makalemizde Php ile OAuth 2.0 kullanma başlıklı makalemizde OAuth nasıl alındığını ve Kütüphaneleri nasıl yüklediğimiz anlatmıştık. Buraya tıklayarak Php ile OAuth 2.0 kullanımı makalesine gidebilir veya Genel Bilgilendirme kategorisine göz atabilirsiniz.


Youtube Data APİSİNİ KULLANMAK İÇİN
  • console.developers.google.com’da Projemizi oluşturduk
  • Kullanacağımız apiyi etkinleştirdik
  • OAuth istemci kimliğini oluşturduk ve oluşturuken sitemize gerekli izinleri verdik.
  • OAuth istemci kimliğinin json dosyasını indirdik
  • GitHub dan Google Client Api kütüphanesini indirdik
  • Composer yardımıyla Vendor  klasörümüzü de edindik

Eğer bu işlemleri yapmadıysanız Buraya Tıklayarak OAuth Makalemi inceleyiniz. Bu işlemleri yaptıksak alt yapı hazır demektir şimdi aşağıdaki dosyalarımızı oluşturalım


Youtube’da Arama Yapmak Search:list

Şu sayfaları oluşturalım

  • index.php
  • oauth2callback.php

Youtubede arama yapmadan önce fonksiyonumuzu inceleyelim. Fonksiyonumuzda parametrelerinde

  • Birinci parametre olarak Youtube servis parametremizi gönderiyoruz.
  • İkinci parametre ‘snippet,replies’ gibi json dosyasında görüntülemek istediğimiz bilgileri string olarak verdiğimiz parametre
  • Üçüncü parametremiz ise array olarak gönderdiğimiz parametre bu parametre içerisine görüntülenecek maksimum eleman sayısını, aranılacak string değeri ve tipini belirtiyoruz.
function searchListByKeyword($service, $part, $params) {
 $params = array_filter($params);
 $response = $service->search->listSearch(
 $part,
 $params
 );

return $response;
}

index.php dosyasının içerisine

<!DOCTYPE html>
<html>
<head>
 <title></title>
 <style type="text/css">
 body{font-family:Arial,Helvetica,sans-serif}b{color:#2c3e50}.kutu{width:60%;float:left;margin:5px;padding:10px;padding-left:10px;border-radius:3px;border:1px solid #ddd}.kutu:hover{background-color:#efefef}.baslik{padding:10px 0}.yazi{width:778px;float:left}.kutu:hover .baslik b{color:#000;text-decoration:underline}.kutu .resim{width:170px;height:auto;float:left;margin:5px;border-radius:3px}.kutu .yazi{height:auto;float:left;margin:5px;padding:0 10px}.vbaslik{width:100%;float:left}.vyazi{margin-top:20px;width:100%;float:left}
 </style>
 <script src="https://apis.google.com/js/platform.js"></script>
</head>
<body>

<?php
require_once __DIR__.'/vendor/autoload.php';
session_start();
$client = new Google_Client();
$client->setAuthConfig('jsonyoutube.json');
$client->addScope('https://www.googleapis.com/auth/youtube.force-ssl');
$client->addScope(Google_Service_YouTube::YOUTUBE_READONLY);

if (isset($_SESSION['access_token']) && $_SESSION['access_token']) {
 $client->setAccessToken($_SESSION['access_token']);
 $service = new Google_Service_YouTube($client);
 
 ?>
 <form action="#" method="get" class="kutu">
 Youtube Search : <input type="text" name="ara">
 <input type="submit" name="gonder">
 </form> 
 <?php

if(isset($_GET['ara'])) {

$response = searchListByKeyword($service,'snippet', array('maxResults' => 25, 'q' => $_GET['ara'], 'type' => ''));
 $response = $response["items"];

echo "<div class='kutu'>Aranan Kelime : ".$_GET['ara']."<br></div>";

foreach ($response as $key => $value) {
 $deg = $value["snippet"];
 ?>
 
 <div class="kutu">
 <div class="baslik"> <b><?=$deg["title"]?></b> </div>
 <div>
 <img class="resim" src="<?=$deg['thumbnails']['medium']['url']?>">
 <div class="yazi">
 <span class="vbaslik">Selçuk üniversitesi bilgisayar mühendisliği</span>
 <span class="vyazi">
 <b>Açıklama :</b><?=$deg["description"]?><br>
 <b>Kanal Başlık :</b><?=$deg["channelTitle"]?><br>
 <b>Yayım tarih :</b><?=$deg["publishedAt"]?>
 </span>
 </div>
 </div>
 </div>

<?php
 } 
 }
 die();
 
 foreach ($response as $key => $value) {
 $deg = $value["snippet"]["topLevelComment"]["snippet"];
 echo '<div id="baslik"><img src="'.$deg["authorProfileImageUrl"].'"> Ad :'.$deg["authorDisplayName"].'</div>';
 echo '<div id="desc"><p>Yazı :'.$deg["textDisplay"].' <br><br>Like : '.$deg["likeCount"].' Yayım Tarihi : '.$deg["publishedAt"].'</p></div>';
 }
 
} else {
 $redirect_uri = 'http://' . $_SERVER['HTTP_HOST'] . '/1-proje/youtube/oauth2callback.php';
 header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL));
}

function searchListByKeyword($service, $part, $params) {
 $params = array_filter($params);
 $response = $service->search->listSearch(
 $part,
 $params
 );

return $response;
}

?>
</body>
</html>

oauth2callback.php dosyasının içerisine

<?php
require_once __DIR__.'/vendor/autoload.php';
session_start();
$client = new Google_Client();
$client->setAuthConfigFile('jsonyoutube.json');
$client->addScope('https://www.googleapis.com/auth/youtube.force-ssl');
$client->addScope(Google_Service_YouTube::YOUTUBE_READONLY);
$client->setRedirectUri('http://' . $_SERVER['HTTP_HOST'] . '/1-proje/youtube/oauth2callback.php');

if (! isset($_GET['code'])) {
 $auth_url = $client->createAuthUrl();
 header('Location: ' . filter_var($auth_url, FILTER_SANITIZE_URL));
} else {
 $client->authenticate($_GET['code']);
 $_SESSION['access_token'] = $client->getAccessToken();
 $redirect_uri = 'http://' . $_SERVER['HTTP_HOST'] . '/1-proje/youtube/';
 header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL));
}

Sonuç olarak karşılaşacağımız görüntü. Fonksiyona aranacak kelimeyi GET ederek istediğimiz kelimeyi arayabiliriz.

Bir cevap yazın

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