Kanal Bilgilerini Görüntülemek – Channels: list

Youtube Data Apisini kullanarak İD veya Kullanıcı Adını bildiğimiz bir kanalın bilgilerini kolaylıkla çekebiliriz. Bazı makalelerimde sadece json formatına bilgileri çekip nasıl kullanacağınızı size bıraktım bu makalede ufak bir görsel hazırlayarak daha anlaşılır olmasını istedim. Şimdi beraber Youtube Data Apisini kullanarak verilerimizi çekelim ve çektiğimiz verileri divin içerisine yerleştirerek birazçık CSS ile görsellik katalım.


Ö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

  • index.php
  • oauth2callback.php

Kanal verilerini çektiğimiz fonksiyonumuz. Bu fonksiyonun birinci parametresine youtube servis değişkenini gönderiyoruz İkinci paramtresine ‘snippet,contentDetails,statistics’ gibi bir string verisi gönderiyoruz. bu string bize dönecek olan json dosyasına neler istediğimizi söylediğimiz stringdir. Son olarak üçüncü parametremize bir array gönderiyoruz. Örneğin

  • array(‘forUsername’ => ‘bankom54’)
  • array(‘id’ => ‘UC_x5XG1OV2P6uZZ5FSM9Ttw’)

gibi bir array gönderiyoruz burada forUsername diyerek user name üzerinden kanala ulaşıyoruz veya kanal id sini göndererek yine kanal bilgilerine erişebiliyoruz.

function channelsListByUsername($service, $part, $params) {
 $params = array_filter($params);
 $response = $service->channels->listChannels(
 $part,
 $params
 );
 return $response;
}

Fonksiyonumuzu inceledikten sonra artık index.php dosyamızın tamanını paylaşıyorum.

<!DOCTYPE html>
<html>
<head>
 <title></title>
 <style type="text/css">
 #desc{
 width: 80%;
 height: auto;
 margin: 5px;
 border: 1px solid #ddd;
 padding: 10px;
 }
 img{
 width: 300px;
 height: auto;
 margin: 0 auto;
 }
 </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(Google_Service_YouTube::YOUTUBE_READONLY);

if (isset($_SESSION['access_token']) && $_SESSION['access_token']) {
 $client->setAccessToken($_SESSION['access_token']);
 $service = new Google_Service_YouTube($client);
 // Kanal İd si ile listeleme
 //channelsListByUsername($service, 'snippet,contentDetails,statistics', array('id' => 'UCHFXFuSv8JSXmuzU2eCBt0A'));
 //User Name ile listeleme
 $response = channelsListByUsername($service, 'snippet,contentDetails,statistics', array('forUsername' => 'bankom54'));
 
 echo '<img src="'.$response[0]["snippet"]["thumbnails"]["high"]["url"].'">';
 echo "<div id='desc'>Kanal Başlık : ".$response[0]["snippet"]["title"]."</div>";
 echo '<div id="desc"><div class="g-ytsubscribe" data-channel="bankom54" data-layout="default"></div></div>';
 echo "<div id='desc'>Kanal Kayıt Tarihi : ".$response[0]["snippet"]["publishedAt"]."</div>";
 echo "<div id='desc'>Kanal Açıklama : ".$response[0]["snippet"]["description"]."</div>";
 echo "<div id='desc'>Yorum Sayısı : ".$response[0]["statistics"]["commentCount"]."</div>";
 echo "<div id='desc'>Abone Sayısı : ".$response[0]["statistics"]["subscriberCount"]."</div>";
 echo "<div id='desc'>Video Sayısı : ".$response[0]["statistics"]["videoCount"]."</div>";
 echo "<div id='desc'>Görüntülenme Sayısı : ".$response[0]["statistics"]["viewCount"]."</div>";
 echo "<pre>";
 print_r( $response[0]);
 
 
} else {
 $redirect_uri = 'http://' . $_SERVER['HTTP_HOST'] . '/1-proje/youtube/oauth2callback.php';
 header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL));
}

 // Call channels.list to retrieve information 

function channelsListByUsername($service, $part, $params) {
 $params = array_filter($params);
 $response = $service->channels->listChannels(
 $part,
 $params
 );
 return $response;
}
?>
</body>
</html>

oauth2callback.php dosyasını içerisine

<?php
require_once __DIR__.'/vendor/autoload.php';
session_start();

$client = new Google_Client();
$client->setAuthConfigFile('jsonyoutube.json');
$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ü

Yukarıdaki resimde olduğu gibi kanal resmine veya diğer bilgilere erişebiliyoruz.

 

Bir cevap yazın

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