Jumat, 22 September 2017

Cara Membuat Youtube Downloader (Seperti Savefrom.net) Dengan PHP


Setelah kemarin saya menguraitutorial singkat mengenai cara membuat syntax highlighter dengan PHP, kali ini saya akan membahas 1 lagi tutorial lebih keren. Tulisan ini akan membahas tutorial membuat youtube downloader dengan PHP (mirip savefrom). Karena tidak mau repot, sekali lagi saya menggunakan class Youtube Downloader yang saya peroleh dari github (link).

Cara penggunaannya sangat mudah, lho:

<?php
$youtube = new Zarkiel\Media\Youtube();
$links = $youtube->getDownloadLinks('kode_video_id');
?>

Dari eksekusi kode di atas, kita sudah bisa memperoleh array link berisi berbagai direct link video yang diminta dalam berbagai kualitas resolusi dan format yang berbeda. Contoh output yag bisa diperoleh adalah:

Array
(
    [MP4] => Array
        (
            [High Quality - 1280x720] => http://...
            [Medium Quality - 480x360] => http://...
        )

    [FLV] => Array
        (
            [Low Quality - 400x226] => http://...
        )

    [3GP] => Array
        (
            [High Quality - 320x240] => http://...
            [Medium Quality - 176x144] => http://...
        )

    [WEBM] => Array
        (
            [Low Quality - 640x360] => http://...
        )
)

Class Youtube downloader PHP ini bekerja berdasarkan video id youtube. Tiap kita menonton sebuah video, kita bisa melacak ID tersebut pada URL nya. Misalnya adalah pada teks tercetak tebal di URL youtube : https://www.youtube.com/watch?v=tPEE9ZwTmy0.

Untuk memudahkan proses ekstraksi/mengambil ID video youtube dari URL, saya menggunakan fungsi berikut:

function get_yt_id($url){
 if (preg_match('%(?:youtube(?:-nocookie)?\.com/(?:[^/]+/.+/|(?:v|e(?:mbed)?)/|.*[?&]v=)|youtu\.be/)([^"&?/ ]{11})%i', $url, $match)) {
  $id = $match[1];
  return $id;
 } else return NULL;
}

Jika ID video sudah diperoleh, kita tinggal menyampaikan nilai ID tersebut ke dalam class. Jika ingin menambilkan thumbnail video tak usah repot-repot; gunakan link https://i.ytimg.com/vi/ID_VIDEO/hqdefault.jpg.

Singkatnya, dari sebuah link youtube, script youtube downloader dapat mengekstrak link download dengan kode berikut.

$id = get_yt_id($_POST('url')); // link video input
$youtube = new Zarkiel\Media\Youtube();
$links = $youtube->getDownloadLinks($id);

echo "<center>
<img src='https://i.ytimg.com/vi/$id/hqdefault.jpg' style='max-width:300px;display:block;border-radius:6px;' class='mb-3'></img>
<div class='btn-group-vertical'>";
foreach($links as $a => $b){
 
 foreach($b as $c => $d){
  echo "<a class='btn btn-primary mb-2' href='$d'>Download $a $c</a>";
 }
}
echo "</div></center>";

Cara mengekstrak aray link hasil pencarian link adalah dengan metode looping mengguakan foreach. Dengan melihat contoh output struktur yang saya perlihatkan di atas tadi, tentunya kita bisa menginterpretasikan contoh di atas dengan mudah, terutama saat mengolah array yang berisi link-link download.

foreach($links as $a => $b){
 foreach($b as $c => $d){
  echo "<a class='btn btn-primary mb-2' href='$d'>Download $a $c</a>";
 }
}

Variabel $a menampung nama format video (MP4/FLV/3GP/...), $b berisi array link yang tergolong sebagai format video sesuai $a. Karena $b masih berbentuk array, kita perlu memecahnya lagi sehingga diperoleh $c sebagai detail format (misal: High Quality - 1280x720) dan $d sebagai link downloadnya.

Contoh implementasinya sudah saya buat di link website Youtube downloader milik saya (http://tools.komputoo.pw/youtube-downloader). Dari pembutan project script youtube video downloader ini, saya menilai bahwa cara membuat situs youtube downloader seperti savefrom bukanlah hal yang sulit jika kita mau memanfaatkan class/library gratis dari internet.

Saya kira anda pun bisa membuat situs untuk menyaingi savefrom. Apalagi class Youtube downloader ini sagat sederhana, ukurannya tidak lebih dari 10 KB. Sangat mudah untuk dipelajari bagimana mendapatkan direct link video youtube secara programatis.
Load disqus comments

0 comments