Youtube Api Kullanımı

Bu yazımda google’nin bizlere sunmuş olduğu youtube data apisi ile beli başlı işlemler yapacağız.

Neler Yapacağız ?

  • İlk olarak bir youtube apisi oluşturacağız
  • Ardından oluşturmuş olduğumuz api ile veri çekeceğiz

Api Oluşturmak

İlk olarak api oluşturma alanına gidiniz.Karşınıza çıkan ilk alanı doldurup kabul et butonuna tıklayınız.

Kabul et butonuna tıkladıktan sonra karşınıza proje oluştur paneli çıkacaktır.Proje oluştur butonuna tıklayınız

Ardından bir tane proje atı belirleyip projenizi oluşturunuz.

Projenizi oluşturduktan sonra karşınıza alttaki serimde ki gibi bir panel çıkacak.Tümünü görüntüle yazısına tıklayınız.

Karşınıza çıkan alanda Youtube Data API v3‘ü bulup tıklayınız.

Ardından Youtube Data API v3‘ü Aktifleştiriniz.

Şimdi api key oluşturalım.bunun için kimlik bilgileri alanına gidin ve kimlik bilgisi oluştur butonuna tıklayınız.

Karşınıza çıkan alanı alttaki resime göre doldurup devam ediniz.

İşte api anahtarınız yazan yer sizin api keyiniz.Bu api key ile birkaç işlem yapacağız bunun için bu api keyi bir yere kayıt ediniz.

Kodlama

İlk olarak kaynak kodlarını composer yardımı ile projemize indirip dahil edelim. Eğer composer‘in ne olduğunu bilmiyorsanız bu yazıma giderek öğrenebilirsiniz.

composer require google/apiclient:"^2.0"

Dosyalarımızı indirdik .sırada doslarımızı projemize dahil edip google’nin youtube api servisini kullanalım.

require_once 'vendor/autoload.php'; // projemize dahil ettik

$client = new Google_Client(); // google kütüphanemizi başlattık

$client->setDeveloperKey("APİ_KEYİNİZ_BURAYA");

$youtube = new Google_Service_YouTube($client); //youtube servisiniz başlattık

Tüm bu işlemlerden sonra artık youtube’nin bize sunmuş olduğu verilerin tümünü çekebiliriz.

Neler Çekeceğiz ?

  1. Bir profilin bilgilerini
  2. Bir videoya gelen yorumları
  3. Trend olan videoları
  4. Video Bilgilerini
  5. ve Son olarak arama bilgileriniz çekeceğiz

Profil bilgilerini çekmek

ilk olarak çekmek istediğiniz bir profilin kanal ID’si gelekli.Kanal id bulmak için bu siteyi kullanabilirsiniz.

$kanalId = "UCIXYyHANDvinQMIdauzSNJA";

Ardından youtube’nin sunduğu api ile verilerimizi çekelim .

function channelsListById($service, $part, $params) {
    $params = array_filter($params);
    $response = $service->channels->listChannels(
        $part,
        $params
    );
  
  
  
    $ad = $response["items"][0]["snippet"]["title"];
    $bio = $response["items"][0]["snippet"]["description"];
    $tarih = $response["items"][0]["snippet"]["publishedAt"];
    $resim = $response["items"][0]["snippet"]["thumbnails"]["default"]["url"];
    $toplamIzlenme = $response["items"][0]["statistics"]["viewCount"];
    $toplamVideo = $response["items"][0]["statistics"]["videoCount"];
    $toplamAbone = $response["items"][0]["statistics"]["subscriberCount"];
  
    echo ' <center>
  
    <img style="border-radius: 100px;" src="'.$resim.'" alt="">
    <h1 style="color:white;">'.$ad.'</h1>
       <p style="color:white;">'.$bio.'</p>
       <hr>
       <i>Youtube Kayıt Tarihi: <font style="color:white;">'.$tarih.'</font></i>
       <hr>
      <div style="text-align: center;">
      Toplam Abone: <font style="color:white;">'.$toplamAbone.'</font><br>
      toplam izlenme: <font style="color:white;">'.$toplamIzlenme.'</font><br>
      Toplam Video: <font style="color:white;">'.$toplamVideo.'</font>
  
      </div>
   </center>';
}
  
channelsListById($youtube,
    'snippet,contentDetails,statistics',
    array('id' => $kanalId));

Videoya Gelen Son Yorumlar

Video yorumlarını çekmeden önce bizlere video id’s lazım.Video id’si linklerin sonunda bulunuz.

$videoId = "bVcaN7nRyUY";
  
function commentThreadsListByVideoId($service, $part, $params,$videoId) {
    $params = array_filter($params);
    $response = $service->commentThreads->listCommentThreads(
        $part,
        $params
    );
  
    $a = $response["items"];
    echo "<h1>Son Yorumlar</h1>";
    echo "<iframe width='853' height='480' src='https://www.youtube.com/embed/".$videoId."' frameborder='0' allow='accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture' allowfullscreen>
</iframe><br>";
    foreach ($a as $yorumBilgi) {
  
        echo $yorumBilgi["snippet"]["topLevelComment"]["snippet"]["textDisplay"]."<br>";
    }
  
  
}
  
commentThreadsListByVideoId($youtube,
    'snippet,replies',
    array(
        'videoId' => $videoId
    ),
    $videoId
);

Trend Olan Videolar

function videosListMostPopular($service, $part, $params) {
    $params = array_filter($params);
    $response = $service->videos->listVideos(
        $part,
        $params
    );
  
    foreach ($response["items"] as $bilgiDeposu){
        $q = $bilgiDeposu["id"];
        $title = $bilgiDeposu["snippet"]["title"];
        echo "<ul><li><a href='https://www.youtube.com/watch?v=$q'>$title</a> <br>
        <iframe width='853' height='480' src='https://www.youtube.com/embed/$q' frameborder='0' allow='accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture' allowfullscreen>
        </iframe></li></ul>";
  
    }
  
  
  
}
  
videosListMostPopular($youtube,
    'id,snippet,contentDetails,status,topicDetails',);

Video Bilgileri

$videoId = "xPoxaQw7VMk";
  
  
function videosListById($service, $part, $params,$videoId) {
    $params = array_filter($params);
    $response = $service->videos->listVideos(
        $part,
        $params
    );
    // video içerik bilgileri
    $videoBaslik = $response["items"][0]["snippet"]["title"];
    $videoAciklama = $response["items"][0]["snippet"]["description"];
    $paylasanAd = $response["items"][0]["snippet"]["channelTitle"];
    $paylasTarih = $response["items"][0]["snippet"]["publishedAt"];
    $etiketler = $response["items"][0]["snippet"]["tags"];
  
  
    // istetistik bilgileri
    $viewCount = $response["items"][0]["statistics"]["viewCount"];
    $likeCount = $response["items"][0]["statistics"]["likeCount"];
    $dislikeCount = $response["items"][0]["statistics"]["dislikeCount"];
    $yorumCount = $response["items"][0]["statistics"]["commentCount"];
  
    echo "<br><iframe width='853' height='480' src='https://www.youtube.com/embed/".$videoId."' frameborder='0' allow='accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture' allowfullscreen>
    </iframe><br><br>";
    echo "<h2>".$paylasanAd." - ".$videoBaslik." - <i>".$paylasTarih."</i><h2></h2><br>";
    echo $viewCount." Kere İzlendi  - ".$likeCount." Kere Beğenildi - ".$dislikeCount." Kere Beğenilmedi - ".$yorumCount." Toplam Yorum<br><br>";
    echo "<p>".$videoAciklama."</p><br>";
  
  
  
  
  
  
}
  
videosListById($youtube,
    'snippet,contentDetails,statistics',
    array('id' => $videoId),
    $videoId
);

Arama Yapmak

İlk olarak arayacağımız kelimeyi giriyoruz ve ardından ara butonuna tıklıyoruz.

if (isset($_GET["q"])) {
  
    function searchListByKeyword($service, $part, $params)
    {
        $params = array_filter($params);
        $response = $service->search->listSearch(
            $part,
            $params
        );
      
  
  
        foreach ($response["items"] as $bilgiDeposu){
  
            $d =  $bilgiDeposu["id"]["kind"];
            if ($d == 'youtube#video'){
  
                $q = $bilgiDeposu["id"]["videoId"];
                $title = $bilgiDeposu["snippet"]["title"];
  
  
                echo "<ul><li><a href='https://www.youtube.com/watch?v=$q'>$title</a> <br>
<iframe width='853' height='480' src='https://www.youtube.com/embed/$q' frameborder='0' allow='accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture' allowfullscreen>
</iframe></li></ul>";
            }
        }
  
    }
  
    searchListByKeyword($youtube,
        'snippet',
        array('maxResults' => 15, 'q' => $_GET["q"], 'type' => ''));
  
  
}else {
  
    ?>
  
    <html>
    <head>
        <title>Youtube Ara</title>
    </head>
    <body>
  
    <form action="" method="get">
        <input type="text" name="q" placeholder="Kelime">
        <input type="submit">
    </form>
  
  
    </body>
    </html>
  
    <?php
  
  
}
?>

İşlemlerimiz bukadardı . örnek dosyaları github sayfamdan indirebilirsiniz.

Bir cevap yazın

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