Login
Grab youtube videos with youtube API v3

Grab youtube videos with youtube API v3

Kali ini saya akan share contoh penggunakan youtube API v3 untuk membuat sebuah aplikasi pencarian video youtube menggunakan PHP.

Ok langsung saja pertama2 kita buat sebuah file dengan nama youtube.php dan kita buat Class di dalamnya dengan nama Youtube.

<?php

class Youtube {
   ...
}

?>

Setelah itu kita buat function __construct didalam class untuk mensetting API Key.
private $apikey;
   
function __construct($apikey) {
   $this->apikey = $apikey;
}

Nah sekrang kita buat function cari() untuk melakukan percarian video berdasarkan keyword dan page.
function cari($keyword = "", $page = "") {
   $json = file_get_contents('https://www.googleapis.com/youtube/v3/search?type=video&part=snippet&q='.urlencode($keyword).'&key='.$this->apikey.'&pageToken='.$page);
   $array = json_decode($json);
   return $array;
}

Dan terakhir kita buat function lihat() untuk melihat detail video berdasarkan parameter video id.
function lihat($video = "") {
   $json = file_get_contents('https://www.googleapis.com/youtube/v3/videos?id='.$video.'&key='.$this->apikey.'&part=snippet,statistics');
   $array = json_decode($json);
   return $array;
}

Setelah membuat class, sekarang kita buat sebuah file lagi yaitu index.php. Include file youtube.php.

require("youtube.php");

Setting API Key. Sobat bisa mendapatkan API keynya di https://code.google.com/apis/console 
$apikey = "API Key Agan";

Membuat sebuah object.
$youtube = new youtube($apikey);

Contoh untuk melakukan proses pencarin video.
// Data value untuk get ke youtub API
$keyword = (!empty($_GET['keyword']) ? $_GET['keyword'] : "tutorial php");
$page = (!empty($_GET['page']) ? $_GET['page'] : "");

// HTML untuk output
$html = '';

// Mencari videos berdasarkan keyword judul & output ARRAY
$videos = $youtube->cari($keyword, $page);

// Mengextract videos untuk mendaptkan judul, deskripsi dll..
foreach($videos->items as $video) {
     $gambar = $video->snippet->thumbnails->default->url;
     $judul = $video->snippet->title;
     $deskripsi = $video->snippet->description;
     $video_id = $video->id->videoId;
       
     // Lalu di jadikan HTML
     $html .= '<div class="videos">';
     $html .= '   <a href="?video='.$video_id.'">';
     $html .= '     <img src="'.$gambar.'"/>';
     $html .= '     <h3>'.$judul.'</h3>';
     $html .= '   </a>';
     $html .=    $deskripsi;
     $html .= '</div>';
}

// Membuat pagging page selanjutnya
if(!empty($videos->nextPageToken)){
   $html .= '<div align="center"><a href="?keyword='.urlencode($keyword).'&page='.$videos->nextPageToken.'">Lanjut</a></div>';
}

echo $html;

Contoh proses untuk melihat detail video.
// Data value untuk get ke youtub API
$video_id = (!empty($_GET['video']) ? $_GET['video'] : "");

// HTML untuk output
$html = '';

// Mencari videos berdasarkan keyword judul & output ARRAY
$video = $youtube->lihat($video_id);

// Mendaptkan judul, deskripsi, jumlah viewers, likes dll..
$iframe = 'https://www.youtube.com/embed/'.$video_id;
$judul = $video->items[0]->snippet->title;
$deskripsi = $video->items[0]->snippet->description;
$Publish = date_format(date_create($video->items[0]->snippet->publishedAt), "d/m/Y");
$lihat = $video->items[0]->statistics->viewCount;
$komen = $video->items[0]->statistics->commentCount;
$favorit = $video->items[0]->statistics->favoriteCount;
$suka = $video->items[0]->statistics->likeCount;
$tidak_suka = $video->items[0]->statistics->dislikeCount;
     
// Lalu di jadikan HTML
$html .= '<div class="video">';
$html .= '   <iframe src="'.$iframe.'"></iframe>';
$html .= '   <h3>'.$judul.'</h3>';
$html .= '   <p>Publish: '.$Publish.' - Lihat: '.$lihat.' - Komen: '.$komen.' - Favorit: '.$favorit.' - Suka: '.$suka.' - Tidak suka: '.$tidak_suka.'</p>';
$html .=    $deskripsi;
$html .= '</div>';

echo $html;

Berikut adalah script lengkapnya.

youtube.php

<?php

class Youtube {
   
   private $apikey;
   
  function __construct($apikey) {
     $this->apikey = $apikey;
  }

   function cari($keyword = "", $page = "") {
     $json = file_get_contents('https://www.googleapis.com/youtube/v3/search?type=video&part=snippet&q='.urlencode($keyword).'&key='.$this->apikey.'&pageToken='.$page);
     $array = json_decode($json);
     return $array;
   }

   function lihat($video = "") {
     $json = file_get_contents('https://www.googleapis.com/youtube/v3/videos?id='.$video.'&key='.$this->apikey.'&part=snippet,statistics');
     $array = json_decode($json);
     return $array;
   }
   
}

?>

index.php

<style>

body {
   background: #f5f5f5
}

div.videos {
   background: #fff;
   display: inline-block;
   width: 20%;
   padding: 10px;
   margin: 15px
}

div.videos img {
   width: 100%
}

div.video {
   background: #fff;
   width: 700px;
   padding: 10px;
   margin: 20 auto
}

div.video iframe {
   width: 100%;
   border: 0;
   height: 400px
}

</style>

<form action="" method="GET">
   <input type="text" name="keyword" />
   <button>Search</button>
</form>

<?php

// Include youtube.php
require("youtube.php");

// Data value untuk get ke youtub API
$apikey = "API Key Agan";
$keyword = (!empty($_GET['keyword']) ? $_GET['keyword'] : "tutorial php");
$page = (!empty($_GET['page']) ? $_GET['page'] : "");
$video_id = (!empty($_GET['video']) ? $_GET['video'] : "");

// Membuat sebuah object
$youtube = new youtube($apikey);

// HTML untuk output
$html = '';

// Melakukan pencarian video
if(empty($video_id)){
   
   // Mencari videos berdasarkan keyword judul & output ARRAY
   $videos = $youtube->cari($keyword, $page);

   // Mengextract videos untuk mendaptkan judul, deskripsi dll..
   foreach($videos->items as $video) {
       $gambar = $video->snippet->thumbnails->default->url;
       $judul = $video->snippet->title;
       $deskripsi = $video->snippet->description;
       $video_id = $video->id->videoId;
       
       // Lalu di jadikan HTML
       $html .= '<div class="videos">';
       $html .= '   <a href="?video='.$video_id.'">';
       $html .= '     <img src="'.$gambar.'"/>';
       $html .= '     <h3>'.$judul.'</h3>';
       $html .= '   </a>';
       $html .=    $deskripsi;
       $html .= '</div>';
   }

   // Membuat pagging page selanjutnya
   if(!empty($videos->nextPageToken)){
     $html .= '<div align="center"><a href="?keyword='.urlencode($keyword).'&page='.$videos->nextPageToken.'">Lanjut</a></div>';
   }

}

// Atau melihat detail video
else{
   
   // Mencari videos berdasarkan keyword judul & output ARRAY
   $video = $youtube->lihat($video_id);

   // Mendaptkan judul, deskripsi, jumlah viewers, likes dll..
   $iframe = 'https://www.youtube.com/embed/'.$video_id;
   $judul = $video->items[0]->snippet->title;
   $deskripsi = $video->items[0]->snippet->description;
   $Publish = date_format(date_create($video->items[0]->snippet->publishedAt), "d/m/Y");
   $lihat = $video->items[0]->statistics->viewCount;
   $komen = $video->items[0]->statistics->commentCount;
   $favorit = $video->items[0]->statistics->favoriteCount;
   $suka = $video->items[0]->statistics->likeCount;
   $tidak_suka = $video->items[0]->statistics->dislikeCount;
     
   // Lalu di jadikan HTML
   $html .= '<div class="video">';
   $html .= '   <iframe src="'.$iframe.'"></iframe>';
   $html .= '   <h3>'.$judul.'</h3>';
   $html .= '   <p>Publish: '.$Publish.' - Lihat: '.$lihat.' - Komen: '.$komen.' - Favorit: '.$favorit.' - Suka: '.$suka.' - Tidak suka: '.$tidak_suka.'</p>';
   $html .=    $deskripsi;
   $html .= '</div>';
   
}

// Output HTML
echo $html;

?>

Jika sobat ingin menambahkan tools untuk convert video menjadi mp3, sobat bisa menambahkan kode berikut:
$html .= '<iframe src="http://embed.yt-mp3.com/watch?v='.$video_id.'" style="height:100px"></frame>';

Untuk demonya sobat bisa melihatnya disini

Sekian dan terimakasih, semoga bermanfaat ^^

Tags: #PHP #API #JSON