Tampilkan postingan dengan label Tutorial. Tampilkan semua postingan
Tampilkan postingan dengan label Tutorial. Tampilkan semua postingan

Senin, 05 Maret 2018

Cara Menggunakan Git Untuk Pemula


Kalau kita ingin mengerjakan proyek secara berkelompok, wajib hukumnya mengetahui software version control system. Contoh dari software version control system adalah github, bitbucket, snowy evening, dan masih banyak lagi. Memang sih, kebanyakan sistem ini dipakai di lingkungan yang programmernya terpisah antara jarak dan waktu ---kayak aku dan kamu :3 --- . Tapi, sebagai programmer, coba deh sekali-kali untuk merasakan setidaknya sekali dalam hidup di dunia. Karena banyak manfaat yang akan didapat dengan git ini. Hehehe.

Git adalah version control system yang pada dasarnya digunakan para developer untuk mengembangkan software secara bersama-bersama. Git ini sebenernya memudahkan programmer untuk mengetahui perubahan source codenya daripada harus membuat file baru. Selain itu, dengan git kita tak perlu khawatir code yang kita kerjakan bentrok, karena setiap developer bisa membuat branch sebagai workspacenya.Fitur yang tak kalah keren lagi, pada git kita bisa memberi komentar pada source code yang telah ditambah/diubah, hal ini mempermudah developer lain untuk tahu  kendala apa yang dialami developer lain.

Dalam tulisan singkat ini, akan dibahas, bagaimana cara menggunakan perintah git.


Di Ubuntu dan Mint, Git bisa diinstall dengan apt-get install git. Di sebagian besar distro lain, nama package Git juga sama kok : git.

Sebagai eksperimen, pertama-tama, buat repository baru dari akun GitHub anda (jika ingin pakai github). Ikuti saja langkahnya.


Sekarang, mulai buat repository di local. Masuk ke folder di mana file proyek akan anda simpan dan ubah.

cd ~/Projects/JauraKernel

Remote : server yang menyimpan file proyek
Local : komputer milik sendiri


Lalu inisialisasi git untuk membuat konfigurasi repository baru atau menggunakan konfigurasi yang sudah ada pada folder proyek tersebut.

git init

Sekarang, kita harus menambah remote repository yang nantinya, semua file akan disinkronkan dengan isi folder proyek. Jika sebelumnya sudah, ini bisa dilewati.

Simpan info username dan email anda. Natinya, info ini akan disertakan saat anda melakukan commit. Gampangannya, commit itu istilah untuk mengatakan kalau kita sudah fix atau yakin untuk menyimpan proyek ke remote.

git config --global user.name "irvanherz"
git config --global user.email "irvan.herz@gmail.com


Lanjutkan dengan menambah link remote server Git yang kita pakai.

git remote add origin <server>


Jika anda menggunakan github, argumen server bisa diperoleh dari link fork ata download.

Nanti anda juga bisa melihat list remote repository dengan perintah

git remote -v

Sekarang, sinkronkan local repository dengan file dari remote repository.

git pull
atau
git merge <branchname>

Oke, sekarang buat file-file baru di local repository (komputer anda sendiri). Tentunya, harus di folder awal baru saya kita cd dan sudah diinisialisasikan konfigurasi git nya barusan.

Setelah selesai membuat proyek atau selesai membuat perubahan dari local repository(entah itu mengubah source, mengganti nama, menghapus file, ...); maka kita harus beritahu git dulu sebelum mulai menyinkronkannya ke remote repository. Cara termudahnya adalah dengan command

git add --all

Anda juga bisa menggunakan perintah git status, sebelum atau sesudah menuliskan command, untuk melihat detail perubahan di local repository. Apabila ternyata menyadari kesalahan saat melihat status keterangan file yang barusan di-add, kita bisa me-reset list tersebut juga:

git reset


Perintah sebelumnya, git add --all, digunakan untuk secara otomatis menambahkan semua file baru, file yang baru termodifikasi, info file yang terhapus dalam lokal. Ditambahkan kemana? ditambahkan ke daftar file yang siap commit dan disinkronkan ke remote repository. Jika anda hanya ingin mengirim salah satu file saja gunakan :

git add /path/to/file

Jika anda sudah yakin dan siap menyimpan perubahan ke remote, saat itulah anda melakukan commit. Commit tidak akan langsung mengirim ke remote, tapi perintah commit bisa diibaratkan seperti kontrak tertulis untuk pengiriman barang. Kontrak dan barang masih di depan kita sebelum kita menjalankan perintah push.

git commit -m "Commit message"

Proses pengiriman ke remote sebenarnya adalah saat perintah push dijalankan. Perintah push diketik sebagai berikut:

git push origin <branchname>

Kalau di guthub, sebenarnya repository kita akan memiliki satu buah branch utama, yaitu bernama "master".

Sampai di sini saja yang kita harus pelajari untuk membuat proyek yang sinkron dengan remote git server, ya.

Kalau sudah terbiasa dengan seluruh command di atas, nanti kita juga boleh mulai belajar mengenai project branch, terutama kalau yang mengerjakan project sudah mulai banyak. Setelah beberapa kali melakukan perubahan pada proyek, membuka branch baru bisa dilakukan. Saat kita membuat branch baru, ibaratnya proyek kita adalah buku, dan branch baru adalah salinannya yang sama persis. Keduanya bisa diubah secara terpisah tanpa mempengaruhi branch lain. Misalnya semenjak muncul si B, dia mau tulisannya beda sama si A, maunya pakai font Times New Roman. Kemudian, muncul si C, D, E sampai Z yang sukanya nulis. Mereka ada yang setuju sama konsep font si A dan beberapa setuju sama konsep si B. Semuanya bisa nulis.

Tapi, karena si A adalah koordinatornya, dia yang berhak menentukan bagaimana perkembangan proyek. Dua branch tersebut sama sama tumbuh bersama, halaman kedua buku semakin tebal meski isinya beda-beda. Di sini si A, berhak menggunakan tulisan dari branch B untuk digunakan ke branch A (utama), ataupun sebaliknya. Nanti dia juga berhak menentukan branch mana yang akan dirilis ke publik.
Read more

Senin, 16 Oktober 2017

Cara Membuat Config HTTP Injector Dalam 3 Menit

Internet gratis jaman now bukanlah hal yang aneh lagi. Selain bisa diperoleh dengan berburu wifi gratis, cara internet gratis bisa dilakukan secara ilegal, contohnya adalah trik internet gratis dengan HTTP Injector.

Untuk menggunakan HTTP injector, seringkali kita harus download config HTTP injector terlebih dahulu. Masalhnya, sekarang ini peminat internet gratis HTTP injector semakin membeludak. Bahkan, saya sering menemukan kasus dimana 1 buah file config HTTP Injector didownload oleh ratusan netizen. Tentu saja, pengalaman merasakan internet gratis anda tidak akan memuaskan jika dilaukan seperti ini.


Umumnya, 1 buah config hanya terasosiasi dengan 1 akun SSH. Jika banyak user menggunakan config HTTP injector yang sama, otomatis trafik internet akan melambat. Pembatasan trafik SSH juga sering berlaku untuk sebagian server SSH, jadi jika terlalu banyak pemakai, akun SSH yang terkait config HTTP injector tidak akan mampu bertahan lagi karena dihapus oleh admin server SSH.

Daripada download config HTTP Injector, saya kira anda akan lebih puas jika tahu cara membuat config HTTP injector. Alasannya adalah seperti yang saya jelaskan sebelumnya.

Langsung saja yuk, kita belajar sekaligus mempraktekkan cara membuat config HTTP Injector. Berikut ini adalah panduan cara membuat config HTTP Injector yang sudah saya coba sendiri dan terbukti 100% WORK di kartu 3 milik saya.

1. Persiapan
- HTTP Injector Terbaru
- Akun SSH, bisa diperoleh secara gratis di SkySSH.com, GlobalSSH.net, FastSSH.com, ataupun di tempat lain. Sebaiknya pilih server SSH ID atau SG
- List proxy dari http://freeproxylists.net . Sebaiknya pilih server proxy ID atau SG.
- Bug operator seluler; yaitu link/URL yang bisa diakses meski keadaan 0p0k (0 paket, 0 kuota). Tapi nyatanya tidak semua link bisa dipakai. Misalnya di operator tri; whatsapp.com dan mac.weixin.qq.com bisa diakses 0p0k, tapi yang bisa dipakai saat ini hanya mac.weixin.qq.com.

2. Input pengaturan SSH dan Proxy
Masukkan server SSH dan port SSH yang sudah anda peroleh, sekaligus username dan pasword SSH. Masukkan semuanya dengan tepat di SSH Settings HTTP Injector.



3. Input Juga Proxy nya
Pilih server terbaik dari freeproxylists.net. Entah kenapa, sebagian besar proxy yang WORK adalah yang memiliki port 80, 8080 atau 8888. Tapi kadang port 3128 juga work. Proxy yang tidak bekerja dengan baik kadang akan berfungsi setelah saya mengubah port SSH ke nilai 80 atau 443. Ingat port SSH, bukan port proxy yang ini lho.



3. Buat Payload dan Masukkan Bug nya
Masuk ke Payload Generator lalu buat TEPAT seperti ini:
- Type : Split -> normal
- Centang Forward Host
- Centang Online Host
- Centang Keep Alive
- Centang User-Agent (opsional)
- Masukkan Bug pada kotak Host



4. Konek
Sudah siap, saatnya konek. Klik start dan amati LOG nya.



Tapi terkadang proses konek HTTP Injector ini tidak langsung berhasil. Saya tidak akan mengatakan ini kesalahan payload (seperti kata blogger pada umumnya). Selama pengaturan payload yang anda buat sudah sesuai dengan saran saya DI ATAS ^, kemungkinan masalah konek seringkali adalah proxy, bug dan SSH.

Penting sekali untuk mengamati LOG dan menginterpretasikan response code.
302 : Bug tidak berlaku lagi/sudah diblok operator
500 : Coba ubah port SSH ke 80, 443 atau 22. Jika tidak bisa, ubah ke proxy lain.

Tapi jika response tak kunjung datang (Di log hanya muncul Injecting..." hingga timeout) saat sinyal bagus, itu sudah jelas proxy server bermasalah. Mungkin sedang offline atau kebanyakan user.

Jika status 200, selamat, anda berhasil. Tapi jika setelah satus 200 muncul dan koneksi bermasalah. Permasalahannya adalah SSH. Coba ganti akun SSH lain.

Username atau password salah bisa diketahui setelah memperoleh status 200. Anda akan memperoleh pesan "Server Message : ..." yang mengatakan bahwa user/password anda salah atau sudah expired.



Untuk lebih jelasnya, silahkan lihat video saya di youtube yang berjudul Cara Membuat Config HTTP Injector Dalam 3 Menit (WORK 100%) :



Sekian dulu tutorial dari saya tentang cara membuat config HTTP Injector dalam 3 menit. Selamat mencoba...
Read more

Selasa, 03 Oktober 2017

Tethering HTTP Injector Tanpa Software Tanpa Root 200% WORK

Postingan ini akan membahas tentang cara tethering HTTP injector tanpa root dan tanpa menginstall software tambahan. Selain itu, tulisan ini juga akan menunjukkan cara mengatasi tethering HTTP injector yang tidak bekerja saat digunakan di komputer, meski komputer sudah berhasil connect dengan wifi yang sudah di-tethering.

Sebenarnya cara tethering HTTP Injector tanpa software tambahan bisa dilakukan. Karena HTTP Injector sudah melengkapi fitur tethering wifi ataupun USB. Hanya saja terkadang tethering HTTP Injector tidak bekerja dengan baik. Koneksi HTTP Injector bisa di bagi / tether, akan tetapi koneksi HTTP injector hanya bisa digunakan di HP saja, sedangkan di komputer hanya mendapati loading tanpa ada respon sama sekali.

Beberapa orang mungkin menganggap masalah tethering http injector ini disebabkan oleh bug software. Mereka mencoba beberapa aplikasi VPN tethering untuk android seperti PdaNet, Tethernet dan VPNTether. Akan tetapi semuanya tidak bekerja dengan baik. Koneksi tethering HTTP injector tidak bekerja meski di HP kecepatan koneksinya begitu lancar.

Masalah tethering HTTP injector ini sebenarnya bukan disebabkan oleh bug/kesalahan program. Akan tetapi kesalahan konfigurasi saat memulai koneksi HTTP injector itu sendiri.

Anda bisa saja memulai tethering HTTP injector tanpa root dan tanpa bantuan software lain. Caranya sangat mudah, pertama mulai koneksi HTTP injector seperti biasa. Eits, tunggu dulu! WAJIB hukumnya untuk mencentang pengaturan DNS HTTP injector menjadi DNS Google, sebelum memulai koneksi. JIKA TIDAK, dapat dipastikan koneksi tethering HTTP Injector tidak akan bisa bekerja.

Setelah terhubung, klik menu di pojok kanan atas HTTP Injector dan pilih penambatan koneksi / tether connection. Ilustrasinya nampak seperti gambar berikut ini.


Setelah tethering HTTP Injector dimulai, anda bisa mulai browsing internet langsung dari komputer ataupun laptop anda.

Intinya, jika anda mengalami masalah tethering HTTP Injector; pastikan anda melakukan koneksi dengan mencentang DNS Google. Saya kurang tahu mengapa hal ini bisa mempengaruhi bekerja / tidak bekerjanya tethering VPN. Tapi, faktanya tethering HTTP Injector tidak akan berhasil tanpa mencentang pengaturan ini.

Mudah-mudahan artikel singkat tentang cara tethering HTTP injector dengan benar ini bisa bermanfaat, ya. Sekian dulu tutorialnya, sampai jumpa.

UPDATE 5 Oktober 2017:
Maaf, saya salah paham kemarin. Ternyata fitur tethering HI butuh device yang sudah di root. Jika anda ingin tethering langsung dari HI, jangan centang DNS Google. Jika anda ingin langsung tethering tanpa software tambahan, centang DNS Google dan langsung aktifkan tethering dari pengaturan.
Read more

Rabu, 27 September 2017

Menghitung Pengunjung Online Realtime Auto Refresh

Setelah sebelumnya kita membahas tentang Menghitung Pengunjung Online Dengan PHP dan SQLite, maka sekarang ini kita akan mengembangkan kode sebelumnya menjadi lebih dinamis. Umumnya online visitor counter tidak menyediakan layanan untuk menghitung jumlah pengunjung online secara realtime. Sehingga membuat online visitor counter sendiri harus dilakukan jika ingin melihat visitor counter berjalan realtime. Maksud realtime adalah keterangan jumlah pengunjung online akan berubah atau refresh sendiri saat jumlah pengunjung online bertambah/berkurang.

Sebelum Anda bisa mencoba kode berikut, pastikan anda sudah membaca artikel berjudul Menghitung Pengunjung Online Dengan PHP dan SQLite. Artikel ini sebenarnya hanyalah pengembangan dari artikel tersebut.

Dari kode sebelumnya, kita hanya perlu mengubah javascript agar dapat melakukan refresh dalam kurun waktu tertentu. Di sini saya memilih interval 10.000 ms, sehingga jumlah pengunjung online akan diperbarui secara realtime tiap 10 detik.

Untuk mendukung proses realtime; fungsi refresh dengan setTimeout() yang disediakan javascript bisa digunakan. Prototype-nya adalah sebagai berikut.

setTimeout(function, interval);

Sehingga jika dikolaborasikan dengan script online visitor counter sebelumnya, hasilnya akan menjadi seperti berikut:


<div id='online'></div>
<script>
 function print_online(){
  var xmlHttp = new XMLHttpRequest();
  xmlHttp.onreadystatechange = function() { 
   if (xmlHttp.readyState == 4 && xmlHttp.status == 200){
    document.getElementById('online').innerHTML = xmlHttp.responseText + " pengguna online";
   }
  }
  xmlHttp.open("GET", "http://localhost/online.php", true);
  xmlHttp.send(null);
  setTimeout(print_online,10000);
 }
 print_online();
</script>

Tidak berbeda jauh, bukan?
Sangat simpel, hanya dengan menabahkkan beberapa baris kode di atas anda sudah bisa membuat realtime online visitor counter untuk website/blog anda. Selamat mencoba.
Read more

Menghitung Pengunjung Online Dengan PHP dan SQLite

Jika anda memiliki website besar, anda pasti merasa percaya diri untuk menampilkan jumlah pengunjung online di website anda. Jangan biarkan trafik anda turun gara-gara loading halaman lambat. Perlu diketahui bahwa salah satu penyebab lambatnya loading website adalah terlalu banyak menggunakan script yang berjalan pada client-side (mis: javascript). Selain itu, terlalu banyak melakukan query database juga menyebabkan lambatnya loading website.

Umumnya, website kelas personal (blog) masih menampilkan jumlah pengunjung online / online visitor count dengan layanan counter gratis; misalnya seperti supercounters.com. Tanpa disadari, hal ini sangat empengaruhi waktu loading halaman web. Apalagi layanan seperti itu memiliki banyak user yang menginginkan jumlah pengunjung online dalam waktu yang sama. Ini membuat beban server penyedia online visitor counter lebih berat dan berimbas pada waktu load website anda sendiri.

Jika anda memiliki hosting sendiri, lebih baik anda membuat online visitor counter sendiri. Tapi jika tidak punya, ada banyak hosting gratis bisa anda coba; misalnya 3owl.com.

Membuat online visitor counter sendiri memang agak merepotkan. Tapi jika melihat script visitor counter yang bekerja dengan SQLite, membuat online visitor counter sendiri perlu dipertimbangkan. Ini karena, menurut beberapa referensi, SQLite mampu bekerja lebih cepat dalam mengolah database (link referensi). Jadi, memasang online visitor counter berbasis SQLite bisa dipastikan akan mempengaruhi waktu loading halaman web anda.

counter.php
Kode berikut ini adalah inti utama dari proses perhitungan pengunjung online. Setiap pengunjung yang mengakses website dibedakan berdasarkan alamat IP. Adapun tahapan proses yang dilakukan oleh kode ini adalah
- Memperoleh alamat IP pengunjung ($ip)
- Memperoleh waktu akses pengunjung ($curtime)
- Memperoleh waktu 3 menit yag lalu ($lowtime)
- Memeriksa apakah online.db sudah dibuatkan tabel 'counter'. Jika belum ada, buat!
  $db->exec("CREATE TABLE IF NOT EXISTS `counter` ...
- Memasukkan $ip dan $curtime pengunjung ke database  jika belum ada. Jika sudah ada, update kolom lastaccess dengan $curtime.
  $db->exec("INSERT OR REPLACE INTO counter ...
- Menghapus data pengunjung yang sudah 3 menit tidak melakukan aktivitas:
  $db->exec("DELETE FROM counter WHERE lastvisit < '$lowtime'");
- Menghitung jumlah pengunjung yang sedang aktif dalam kurun waktu 3 menit terakhir
  $res = $db->query("SELECT COUNT(ip) AS count from counter");

<?php
function get_online(){
 $ip = $_SERVER['REMOTE_ADDR'];
 $curtime = date("Y-m-d H:i:s");
 $lowtime = date("Y-m-d H:i:s", strtotime("-3 minutes"));

 $db = new SQLite3(dirname(__FILE__)."/online.db");
 $db->exec("CREATE TABLE IF NOT EXISTS `counter` (
   `ip` varchar(60) NOT NULL,
   `lastvisit` DATETIME NOT NULL,
   UNIQUE(`ip`)
 )");

 $db->exec("INSERT OR REPLACE INTO counter (ip,lastvisit) VALUES('$ip','$curtime')");
 $db->exec("DELETE FROM counter WHERE lastvisit < '$lowtime'");
 $res = $db->query("SELECT COUNT(ip) AS count from counter");
 $row = $res->fetchArray();
 return $row['count'];
}
?>

online.php
Kode ini akan mencetak angka dari counter.php
<?php
include 'counter.php';
echo get_online();
?>

Di halaman anda
Di setiap halaman anda, patikan anda menyisipkan kode ini di sekitar tag <body>. Jumlah pengunjung online akan diperoleh dari online.php dan dicetak pada elemen <div id='online'></div>.
...
<div id='online'></div>
<script>
 var xmlHttp = new XMLHttpRequest();
 xmlHttp.onreadystatechange = function() { 
  if (xmlHttp.readyState == 4 && xmlHttp.status == 200){
   document.getElementById('online').innerHTML = xmlHttp.responseText + " pengguna online";
  }
 }
 xmlHttp.open("GET", "http://DOMAIN-ANDA.com/online.php", true);
 xmlHttp.send(null);
</script>
...


Hasilnya
Saya sudah mencoba kode ini di localhost dan di website saya sendiri (link). Hasil screenshot di localhost terlihat seperti berikut:

Yap, itu tadi adalah sedikit tutorial singkat mengenai cara menghitung jumlah pengunjung online atau yang biasa disebut sebagai online visitor counter. Mudah-mudahan bermanfaat.
Read more

Membuat Animasi Loading Blog Seperti Youtube

Sekarang kita akan membahas hal baru dan unik, yaitu membuat animasi loading / progress seperti youtube. Siapapun blogger, pasti ingin melihat pengunjungnya terkesan dan betah berlama-lama di blognya. Salah satujaln yang dilakukan adalah membuat blog terlihat interaktif dengan menambah animasi loading pada blog.


Banyak yang mengira bahwa cara membuat animasi loading blog adalah hal yang kompleks dan membutuhkan skill pemrograman tingkat dewa. Mungkin ada benarnya, sih. Walau begitu, sebenarnya hal tersebut bisa dipermudah dengan memanfaatkan automatic page load progress bar library jQuery. Dengan kata lain, cara membuat animasi loading blog / progress bar blog cukup dilakukan dengan menambahkan referensi script library.

Lalu, library yang mana yang bisa dipakai dan mudah diimplementasikan untuk membuat animasi loading blog / progress bar blog ?
Dari penelusuran saya, ternyata ada banyak library javascript ataupun jquery untuk hal ini. Dari semuanya itu, akhirnya saya memilih PACE.js karena mudah dan praktis.

Demo : http://github.hubspot.com/pace/docs/welcome/
Download : http://github.com/HubSpot/PACE/

Cara implementasi animasi loading blog / loading halaman website dengan PACE.js sangatlah mudah, kita hanya perlu memasukkan referensi pace.js dan salah satu tema CSS pace.js (lihat macam-macam tema) di atas kode penutup </head>.

  <script src="/pace/pace.js"></script>
  <link href="/pace/themes/pace-theme-barber-shop.css" rel="stylesheet" />
</head>

Jika kita hanya memiliki blog/website gratisan seperti blogger; saya sarankan untuk menggunakan referensi dari CDN tanpa harus mendownload source PACE.js. Selain itu, pastikan kita juga sudah mengikutsertakan referensi jquery sebelumnya. Khusus untuk platform Blogger, anda tidak perlu menambahkan referensi jquery, karena secara default, blogger sudah menambahkannya secara otomatis dalam template kita.

CDN PACE.js : https://cdnjs.com/libraries/pace
CDN JQuery : https://cdnjs.com/libraries/jquery/

Sebenarnya, baik website personal ataupun blog gratisan, mendownload library PACE.js adalah opsional, karena sudah ada beberapa CDN yang menyediakan library tersebut di servernya.

Berikut ini merupakan contoh penggunaan CDN untuk membuat animasi loading blog / progress bar dengan PACE.js (tema Flash). Jika anda menggunakan Blogger, cukup letakkan kode tepat di atas tag </head>. Hasilnya bisa anda lihat di blog Komputoo ini :D

  <script src="https://cdnjs.cloudflare.com/ajax/libs/pace/1.0.2/pace.min.js" integrity="sha256-EPrkNjGEmCWyazb3A/Epj+W7Qm2pB9vnfXw+X6LImPM=" crossorigin="anonymous"></script>
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/pace/1.0.2/themes/black/pace-theme-flash.min.css" integrity="sha256-HsWJ70tOKcd52gFzhVX319egmTCvQbMOs0DYg3bDMi8=" crossorigin="anonymous" />
</head>

Yap, sekian tutorial singkat mengenai cara membuat animasi loading blog / cara membuat progress bar blog. Mudah-mudahan bisa bermanfaat.
Read more

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.
Read more