Bulan lalu Youtube merubah metode untuk link file videonya. Sepertinya dia memang sering merubah link itu, jadi beberapa add-on firefox dan software-software untuk download youtube jadi gagal mendownload. Dan saya sebelumnya pernah ngoprek shell sederhana untuk download video dari Youtube di sini, dan pastinya cara itu juga sudah tidak bisa digunakan lagi. Kita hanya perlu cari cara yang lain.
UPDATE: Versi terbaru yt-download.sh ada di sini.
Disini ada cara baru yang bisa digunakan untuk mendownload video dari Youtube. Agak berbeda dari cara yang lama, banyak parameter-parameter yang disertakan di-urlnya. Dan untuk di shell scriptnya perlu tambahan Regex (regular expression) untuk merubah string.
Buka source di browser halaman contoh ini
http://www.youtube.com/watch?v=jNQXAC9IVRw
Kemudian lakukan pencarian string ini "img.src ="
temuan yang pertama, dan seharusnya string tersebut hanya ada satu di halaman itu. Ambil string itu sampai bertemu karakter ';
.
Kemudian, hanya dengan mengganti semua string ini "\/"
menjadi "/"
, dan "generate_204"
menjadi "videoplayback"
, kita akan langsung dapat link untuk videonya. Jalankan url itu di browser akan mendownload video tersebut. Gampang banget kan? Contohnya seperti ini.
http://v3.lscache8.c.youtube.com/videoplayback?ip=111.0.0.0&sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Calgorithm%2Cburst%2Cfactor&fexp=907103%2C900073%2C901023&algorithm=throttle-factor&itag=34&ipbits=8&burst=40&sver=3&expire=1280523600&key=yt1&signature=6F96527E73C895221DF2D018BB1B8BFFD7FFFAF8.4651E6B8C7F7B0B638D39A41F1439FE4F3314B&factor=1.25&id=8cd417002f48551c
Dan untuk shell scriptnya, buat file dengan nama "yt-download.sh"
. Scriptnya kira-kira seperti ini:
#!/bin/bash if [ $2 ] then fn=$2 else fn=$1.flv fi if [ $1 ] then wget -O $1.tmp "http://www.youtube.com/watch?v="$1 st=$(grep -o "img.src = '.*';" $1.tmp) st=${st#img.src = \'} st=${st%\';} st=${st//\\\///} st=${st/generate_204/videoplayback} echo "Link:" $st echo "File:" $fn wget -O $fn "$st" rm $1.tmp else echo "Usage: sh yt-download.sh [video_id] [file_name]" exit fi
Jalankan shell ini dengan command sh yt-download.sh jNQXAC9IVRw
atau seperti ini bash yt-download.sh jNQXAC9IVRw
untuk di Ubuntu. Di mana "jNQXAC9IVRw"
adalah video id. Hasil downloadnya adalah file jNQXAC9IVRw.flv.
Saya kurang lihai untuk masalah Regex, jadi kalau ada Regex yang lebih baik bisa dipost di sini. Thx.
7 Komentar. Leave new
manap, coba tak liat
Wah kalo jadi kontributor mungkin blm bisa kali ya. masih nubi nih.
Btw shell scriptnya saya oprek lagi jd bs donlot mp4 & flv dan ada sizenya jg. Blm sempurna, tp sudah saya coba2.
https://danuparta.com/2011/02/23/download-youtube-video-dengan-shell-script
Mestinya bisa, dengan sedikit modifikasi. Program ini adalah gtkdialog+bash script. Di puppy kami menyebutnya gtkdialog3. Tapi sy kira anda bisa jd kontribvutor yg baik di puppy … Mau join? Hehehe
Wah keren mas… pengen nyoba
Bisa jalan di ubuntu ga?
Silahkan berkunjung ke:
http://www.murga-linux.com/puppy/viewtopic.php?p=326803#326803
Salam
wah senang bs membantu. tp shell yg diatas itu pake cara gampangnya aja. data youtube jg disimpan dlm bntuk JSON (coba di trace “PLAYER_CONFIG”).
url videonya ada di array “fmt_url_map”, dan untuk sizenya di “fmt_list” atau “fmt_map”.
gw jg ga begitu ngerti bagian nentuin mp4 & flv, tp dr header filenya sih bs keliatan.
mudah2an bs dibikin shell yg lebih baik. dmn sy bs liat hasil perkembangannya?
Hai,
Pertama, terima kasih atas pencerahannya … saya ambil script anda utk di share sbg download engine utk you2pup (di puppy linux forum) utk mengantikan yang lama.
Anyway, saya mau bertanya, bagaimana caranya utk mencari url download mp4 atau hd misalnya?
Terima kasih banyak