Video Yorumlarını Görüntüleme – CommentThreads: list

Önceki makalelerimizde Youtube Search ile arama yapmıştık video id sine ulaşmıştık daha sonra video bilgilerini çekmiştik. Bu makalemizde Google Youtube Data Api sayesinde web sitemizde CommentThreads:list  kullanarak İD sini bildiğimiz bir video ya yapılan yorumları görüntüleyeceğiz. Kimler yorum yapmış ise bunların adlarını yorumunu hangi tarihte yorum yapmış eğer düzenlemişse düzenleme tarihi, yorumun kenarındaki ufak profil fotoğrafının urlini, yorumu kaç like almışsa bunun sayısını görüntüleyebiliriz veya her yorumun kendisine ait uniq olarak tanımlanmış kod bulunmakta yani yorum id’de diyebiliriz Bunun gibi bir çok bilgiyi görüntüleyebiliriz.


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


Aşağıdaki yorumları çektiğimiz fonksiyonumuzun aldığı parametreleri inceleyelim.

  • Birinci  parametre Youtube Data Api servisimizi gönderdiğimiz değişken
  • İ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 yorumlarını görüntülemek istediğimiz videoların id lerini array olarak gönderiyoruz

$response = commentThreadsListByVideoId($service, ‘snippet,replies’,  array(‘videoId’ => ‘r3uOBb3BM-0’));

şeklinde fonksiyonumuzu çağırıyoruz.

function commentThreadsListByVideoId($service, $part, $params) {
 $params = array_filter($params);
 $response = $service->commentThreads->listCommentThreads(
 $part,
 $params
 );
 return $response;
}

Sayfalarımızı oluşturalım

  • index.php
  • oauth2callback.php

index.php dosyasının içerisine

<!DOCTYPE html>
<html>
<head>
 <title></title>
 <style type="text/css">
 #desc{
 width: 80%;
 height: auto;
 margin: 5px;
 border: 1px solid #ddd;
 padding: 5px;
 border-radius: 0px 0px 10px 10px;
 box-shadow: 2px 2px #888888;

}
 #video{
 width: 80%;
 height: auto;;
 }
 iframe{
 width:560px;
 height:315px;
 position: relative;
 margin: auto;
 }
 
 #baslik{
 border-radius: 10px 10px 0px 0px;
 width: 80%;
 height: auto;
 margin: 5px;
 border: 1px solid #ddd;
 padding: 5px;
 margin-top: 10px;
 background: #eee;
 }
 </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);

?>
 <div id=video>
 <iframe width="560" height="315" src="https://www.youtube.com/embed/r3uOBb3BM-0" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
 </div>
 <?php
 $response = commentThreadsListByVideoId($service,
 'snippet,replies', 
 array('videoId' => 'r3uOBb3BM-0'));
 $response = $response["items"];
 
 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 commentThreadsListByVideoId($service, $part, $params) {
 $params = array_filter($params);
 $response = $service->commentThreads->listCommentThreads(
 $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));
}

Kodları çalıştırdığımızda karşımıza çıkan görüntü

Video yu iframe olarak zaten web sitemize yerleştirebiliyorduk videonun idsini bildiğimize göre Youtube Data Api yi kullanarak yorumlarını da çekebildik. Bu yorumlar en güncel yorumdan en eski yoruma göre sıralanmış şekilde bize json olarak gelmektedir.

Bir cevap yazın

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