Download video Youtube

Dulu waktu kami sampai di Chiang Mai, kecepatan internet kami hanya 1 MBPs dan waktu itu kebetulan karena faktor tertentu Youtube sedang diblokir di Thailand. Setelah ada Youtube kami bisa streaming dengan lancar dan waktu itu belum pernah butuh download video dari Youtube.

Tapi kemudian ternyata ada banyak alasan kenapa kami jadi butuh download video Youtube. Di jaman kami memakai tablet Blackberry Playbook, Youtube hanya bisa dimainkan jika terhubung ke Internet via WIFI jadi mau tidak mau harus mendownload video agar bisa dibuka offline ketika sedang jalan di luar.

Dulu ada beberapa video yang disukai Jonathan dan videonya tiba-tiba diremove dari Youtube. Pelajaran berikutnya: jika memang ada video yang dirasa “penting”, maka sebaiknya perlu didownload. Ini juga berguna jika internet mati sementara (walau cukup jarang).

Sekarang Youtube mobile sudah memiliki fitur untuk mendownload video tertentu (tidak semua video bisa didownload). Fitur ini cukup berguna, terutama jika ingin bepergian tanpa akses Internet sementara (misalnya dalam penerbangan), tapi secara umum kurang berguna untuk sehari-hari.

Mendownload video dari Youtube juga berguna karena video bisa dimainkan bebas iklan setelah download. Di browser jika kita memakai uBlock Origin kita bisa memblok iklan dari Youtube, tapi di Android/iOS kita tidak bisa memakai ini. Sebenarnya ada berbagai cara untuk melihat video youtube tanpa iklan, tapi ini main kucing-kucingan dengan Google dan sekarang lebih sering gagal. Jadi download video adalah cara paling efektif menonton bebas iklan untuk video panjang.

Dulu saya sempat memakai berbagai website dan extension untuk membantu mendownload video youtube, tapi semuanya tidak tahan lama. Video downloader yang saya pakai selama beberapa tahun terakhir ini adalah: youtube-dl. Ini berbasis command line, walau ada juga yang membuatkan interfacenya. Selain bisa dipkai mendownload video Youtube, youtube-dl juga bisa digunakan mendownload video dari berbagai situs video lainnya.

Perlu diperhatikan bahwa mendownload video ini tidak sepenuhnya legal, jadi sebaiknya jangan diupload lagi ke situs lain. Hasil download video tidak saya bagikan ke orang lain dan hanya untuk keperluan sendiri.

Windows Subsystem for Linux

Salah satu alasan saya dulu menyukai OS X adalah: ada terminal di mana kita bisa menjalankan berbagai utility command line yang sudah saya kenal bertahun-tahun. Sementara dulu di Windows kita perlu menginstall Cygwin atau MSys agar bisa memakai shell, dan perintah yang adapun sangat terbatas.

Tapi sejak beberapa tahun lalu Microsoft mendukung Windows Subsystem for Linux (WSL) atau kadang dikenal sebagai: bash on Windows. Begitu diumumkan, saya langsung mendaftar agar bisa langsung mencoba fiturnya. Awalnya saya tidak berharap banyak, tapi ternyata implementasinya memang bagus, dan ini sudah jadi sesuatu yang saya pakai setiap hari.

Teknologi yang dipakai WSL adalah menjalankan langsung syscall Linux di Windows. Jadi kita tidak perlu mengkompilasi ulang program kita di Linux, bisa langsung dicopy dan akan jalan di Windows. Tentunya ini hanya bisa jika semua library/dependency dicopy juga ke Windows. Microsoft hanya mendukung WSL ini di sistem 64 bit. Tidak 100% program Linux bisa jalan (apalagi jika mengakses hardware), tapi lebih dari 90% aplikasi yang saya butuhkan bisa jalan di WSL.

Setiap kali butuh perintah yang biasanya hanya ada di Linux (misalnya find), saya langsung mengetik “bash” untuk masuk ke shell bash di direktori saat ini, lalu menjalankan perintahnya. Microsoft tidak menyediakan XServer, tapi kita bisa memakai VcXsrv untuk menjalankan aplikasi X.

Gabungan berbagai program GUI Windows dan keampuhan command line Linux membuat saya jadi betah memakai Windows. Dulunya saya sempat ingin mendalami PowerShell, tapi baru tahu permukaannya saja sudah merasa bahwa bahasanya agak aneh. Sekarang sejak adanya WSL ini, saya jadi lebih jarang lagi memakai powershell.

CLI: Graphviz

Ini merupakan program favorit saya untuk visualisai node dalam sebuah graph. Ketika membuat program yang memproses data graph dan ingin mendebug isinya, saya akan membuat file teks dalam bahasa DOT (Graph Description Language) lalu merendernya jadi file PNG/PDF.

File DOT bisa sangat sederhana, contohnya seperti ini. Dalam contoh ini saya memakai digraph (directed graph) atau graph dengan arah. Jika ingin graph tanpa arah bisa memakai graph saja dan ganti “->” dengan “–“.

digraph test {
A -> B;
B -> C;
B -> D;
}

Rendering bisa dilakukan dengan mudah:

dot -Tpng test.dot > test.png

Dan contoh hasilnya seperti ini:

Selain graph sederhana seperti itu, tiap arc dan node bisa memilik atribut untuk mengganti: bentuk, warna, teks. Jadi selain untuk keperluan debugging (yang sering saya pakai), graphnya bisa diperindah untuk jadi output bagi end user.

Data yang bisa ditampilkan dalam bentuk graph ada banya, tergantung pada masalah yang sedang dikerjakan, beberapa contohnya:

  • Visualisasi foreign key pada tabel di database
  • Visualisasi Abstract Syntax Tree ketika parsing
  • Visualisasi konektivitas node di jaringan

Semoga informasi mengenai dot ini bisa berguna untuk debugging/visualisasi data.

Termux Widget

Di posting ini saya hanya ingin sharing salah satu tips memakai aplikasi Termux di Android. Aplikasi Termux memungkinkan kita menjalankan sebagian aplikasi Linux di Android tanpa root. Saya sendiri punya server yang bisa diakses kapan saja, jadi jarang sekali butuh memakai ini untuk sehari-hari (cukup melakukan koneksi ke server untuk menjalankan sesuatu).

Meskipun tidak banyak saya pakai, saya punya beberapa trik yang ingin saya bagikan terutama terkait dengan Termux Widget. Dengan Widget ini kita bisa melakukan beberapa aksi dengan sekali sentuh dari launcher.

Lanjutkan membaca “Termux Widget”

CLI: Midnight Commander

Midnight Commander adalah aplikasi file manager untuk mode teks. Berbeda dengan aplikasi console lain yang sudah saya bahas, aplikasi Midnight Commander (MC) sifatnya interaktif. Program Midnight Commander ini merupakan clone dari Norton Commander (NC) yang sempat populer sejak 1986-1998). Midnight Commander sendiri dimulai sejak lama (1994).

Tampilan MC sangat serupa dengan NC di DOS. Warna tema defaultnya juga sama: biru. Layar dibagi jadi dua bagian, kiri dan kanan dan kita bisa menyalin file dari kiri ke kanan atau sebaliknya. MC (seperti juga NC) punya berbagai fitur built in seperti melihat/mengedit file, menghapus file, mengganti atribut file, dsb.

Biasanya saya suka 100% bekerja dengan mengetikkan perintah langsung di shell, tapi dalam kasus tertentu cara interaktif ini lebih enak. Saya punya fleksibilitas command line. Misalnya jika ingin memilih file dengan nama diawali “laporan” dan ada kata “Mei” di tengah lalu diakhiri “txt”, saya bisa menekan plus (+) lalu mengetik “laporan*Mei*txt” dan semua file yang memenuhi kondisi itu akan terpilih. Berikutnya saya bisa menekan aksi misalnya F5 (copy), F6 (move), atau F8 (delete).

Lanjutkan membaca “CLI: Midnight Commander”

Mengenal command Injection Attack

Dalam tulisan ini saya akan membas attack “command injection” atau dikenal juga sebagi “OS command injection”, di mana attacker bisa menyisipkan perintah untuk dieksekusi. Seperti saya contohkan dalam beberapa artikel saya di blog ini dalam kategori CLI, banyak program CLI yang bisa melakukan hal kompleks dengan sangat mudah. Kadang seseorang akan memanggil program CLI eksternal daripada harus coding sendiri fungsionalitas yang rumit. Contohnya: untuk resize satu file gambar dengan imagemagick bisa dilakukan dengan satu perintah:

convert -resize 50% input.jpg output.jpg

Dan ini bisa dipanggil dari program lain, misalnya PHP dengan:

system("convert -resize 50% input.jpg output.jpg")

Atau Python dengan

import os
os.system("convert -resize 50% input.jpg output.jpg")

Atau bahasa-bahasa lain dengan cara serupa. Seperti halnya SQL injection, jika kita tidak melakukan escaping (dalam kasus ini namanya “shell escaping“) maka akibatnya bisa fatal. Contoh sederhana lain yang ada pada banyak router adalah penggunaan perintah ping via web interface. Di balik layar, yang dilakukan adalah:

system("ping -c 3 $target")

Jika kita bisa memasukkan apapun dalam $target, tanpa verifikasi, maka kita bisa memasukkan: localhost; ls, hasilnya: command ping localhost dieksekusi, lalu ls dieksekusi. Dalam kasus ini biasanya output ls akan muncul di layar.

Contoh command injection pada router yang saya miliki
Lanjutkan membaca “Mengenal command Injection Attack”

CLI: ImageMagick

Dalam seri CLI kali ini saya akan membahas ImageMagick yang merupakan program command line untuk manipulasi file citra/image. Ada banyak hal yang bisa dilakukan dengan ImageMagick antara lain:

  • konversi dari satu format image ke yang lain
  • resize, rotate, crop, flip file image
  • memberi frame pada file image
  • membuat file image yang berisi teks

Dalam banyak kasus, pemakaian imagemagick ini sangat mudah. Misalnya ingin konversi dari jpg menjadi png:

convert nama.jpg nama.png

Atau melakukan resize menjadi 50% dari semula

convert -resize  50% input.jpg output.jpg

Contoh lain adalah rotasi

convert -rotate 90 input.jpg output.jpg

Sebenarnya semua perintah convert bisa diganti menjadi mogrify jika kita ingin outputnya menimpa input. Tapi biasanya ini tidak saya lakukan, karena berbahaya. Contohnya jika kita salah mengubah ukuran seharusnya 50% dari semula tapi salah ketik jadi 5% dari semula, maka file tidak akan bisa dikembalikan jika kita memakai mogrify.

Saya tidak hapal banyak perintah ImageMagick, kecuali perintah-perintah yang sederhana. Biasanya saya harus melihat lagi contoh-contoh di web image magick untuk melakukan hal yang kompleks. Ada halaman khusus di ImageMagick yang memberikan contoh apa saja yang bisa dilakukan dengan ImageMagick.

Sebagian kapabilitas ImageMagick lengkapnya silakan lihat halaman contoh resmi

Untuk editing yang sangat spesifik satu gambar saja, saya akan memakai Gimp atau KolourPaint secara interaktif. Sedangkan jika saya punya banyak gambar yang harus diresize atau diedit dengan cara yang sama, saya akan menggunakan ImageMagick.