Jika temen-temen suka mendengarkan pengajian, mungkin tidak asing dengan situs Kajian.net. Pada situs tersebut terdapat jutaan rekaman kajian Ahlussunnah wal Jama’ah dari Ustadz-ustadz dan Syaikh-syaik ternama.

Mendengarkan secara Online mungkin bisa menjadi pilihan buat yang memiliki koneksi Internet cukup cepat, namun untuk yang memiliki koneksi internet “fakir”, mendengarkan secara online bisa menjadi masalah karena akan terputus-putus. Men-download adalah salah satu pilihan lain utnuk yang memiliki koneksi fakir. Akan tetapi, dikarenakan banyaknya file yag arus di download, terkadang cukup capek mengklik link untuk mendownload filenya. Untuk mempermudah, kita bisa menggunakan add-on Firefox seperti DownThemAll atau sejenisnya. Nah gimana kalo temen-temen tidak menggunakan firefox, atau tidak menginstall add-on tersebut.

Nah, kali ini ane pengen sharing script buat ngedownload semua file audio yang ada dalam sebuah halaman di kajian.net. Sebagai contoh misalnya:

http://kajian.net/kajian-audio/Ceramah/Abdullah%20Shaleh%20Hadrami/Pembahasan%20Kitab%20Ensiklopedi%20Larangan

Pada halaman tersebut ada sekitar 105 file audio berekstensi *.mp3 (tercatat 2 July 2012). Pada tulisan ReGeX: Mendapatkan Kalimat Dalam Tanda Petik, anepernah menyampaikan cara mengekstrak link dari sebuah halam web untuk mengambil string-string yang ada dalam tanda petik. Karena pada umumnya, source file MP3 selalu ditempatkan dalam sebuah tag HTML dan berada di dalam tanda petik. misalnya:

<a href="http://kajian.net/kajian-audio/...%20Penjelasan%20Syirik%20dlm%20Hukum.mp3?l=8&amp;m=1">

Pada kasus Kajian.net, jika kita lihat sourcenya makan akan kita dapatkan pola alamat file MP3-nya seperti berikut:

http://kajian.net/kajian-audio/Ceramah/Abdullah%20Shaleh%20Hadrami/Pembahasan%20Kitab%20Ensiklopedi%20Larangan/102%20Larangan%20ke%20250%20sd%20253%20%28Pakai%20Farfum%2C%20Nikah%2C%20Menikahkan%20%2526%20Meminang%2C%20Berburu%2C%20dll%20di%20Saat%20Haji%29.mp3?l=8&m=1

Kita temukan salah satu pola yakni http://kajian.net/kajian-audio/Ceramah/* dengan * berganti-ganti sesuai dengan nama%20pemateri/judul/tema%20kajian/nama%20filenya.mp3?l=12. String “kajian.net/kajian-audio” bersifat generic banget, karena ada beberapa link yang ada dalam halaman tersebut yang mengandung string “”http://kajian.net/kajian-audio”&#8221; akan tetapi tidak menuju ke file audionya. Maka dari itu, yang bisa kita ambil sebagai kuncinya yakni string “Ceramah” taua bisa juga menggabungkan string “http://kajian.net/kajian-audio/Ceramah/&#8221; sebagai kata kunci untuk mendapatkan hasil yang lebih akurat.

Singkat cerita dengan melompati beberapa cerita yang agak bingung menceritakannya seperti apa, kita bisa mendapatkan link-link MP3-nya dengan script:

grep mp3 | grep -o "\"[^\"]*\"" | grep Ceramah| grep "l=12"| grep -o '[^\"]*.mp3'

Nah, kita tinggal mengimplementasikan bash script tersebut ke dalam source. Ini contoh hasil source yang ane buat. Temen-temen bisa membuat variasi sendiri sesuai dengan kesukaan temen-temen.

Tips: Kadang ketika menyedot file HTML dengan menggunakan Wget, link yang ada di dalamnya menggunakan link asli seperti tertulis di file HTML aslinya. Misalkan halaman web yang beralamat di http://kajian.net/kajian-audio/a/index.html. Di dalam halaman tersebut ada link ke sebuah file yang ada pada sub directorynya misanya di alamat: http://kajian.net/kajian-audio/a/file/aaa.mp3, maka ketika di download, link akan menjadi: file/aaa.mp3. Sehingga akan sulit untuk mendapatkan alamat full dari file tersebut. Maka gunakan option -k untuk mengkonversi link ke alamat full-nya.

#!/bin/bash 
WGET='wget -t inf -k '
LINK=$1

$WGET $LINK -O index
if [ $? == 0 ]; then
    LIST=$(cat index | grep mp3 | grep -o "\"[^\"]*\"" | grep Ceramah| grep "l=12"| grep -o '[^\"]*.mp3')
    for L in $LIST
    do
        $WGET -c $L
    done
fi

Untuk menjalankannya:

$ ./kajian_net.sh http://kajian.net/kajian-audio/Ceramah/Abdullah%20Shaleh%20Hadrami/Pembahasan%20Kitab%20Ensiklopedi%20Larangan