Kendi işlerimi kolaylaştırmak için bir script (betik) yazdım. Bunu da sizlerle paylaşmadan olmazdı. Genelde saçma isimler bulmakta üzerime yoktur. Bu betik için de aynısı oldu diyebilirim.
Ne işe yarıyor?
Youtogg, hemen hemen birçok video sitesinden (Youtube, Vimeo, Dailymotion vd.) video indirip bunları ses formatına (*.ogg) dönüştürmenize olanak sağlayan basit bir betiktir. Bunun dışında, Tor ağı üzerinden indirme seçeneği hariç hiçbir özelliği yoktur.
Nasıl çalışıyor?
İlk olarak, kullanıcı dizini altında “youtogg” dizini oluşturuyor. İndirdiği videolar ve dönüştürdüğü ses dosyalarına buradan erişebileceksiniz. Ardından, indirmek istediğiniz video linkini girerek istediğiniz formatı (mp4, flv, webwm vd.) ve çözünürlüğü seçeceğiniz bir ekran çıkmaktadır. Burada 18, 22, 143 vd. gibi seçimler yapıyorsunuz. Bu noktada bağlantı hızınıza göre hareket edebilirsiniz. Bununla birlikte, video indikten sonra sizlere dönüştürülecek çıktının adını sormaktadır. Örneğin, burada şarkının ve sanatçının adını veya ikisini birden (ya da ne yazarsanız) yazabilirsiniz.
Kurmanız gereken birkaç uygulama/kütüphane var. Bunlar, youtube-dl, ffmpeg ve libvorbis. Dağıtımınızın paket yöneticisinden aratarak kurabilirsiniz. Tor ağı seçeneği opsiyoneldir. Eğer, Tor ağı üzerinden indirmek isterseniz tor ve polipo paketlerini de kurmanız, polipo’yu tor için ayarlamanız gerekmektedir. Kısaca bir polipo ayarı (/etc/polipo/config) göstermem gerekirse:
daemonise=false diskCacheRoot=/var/cache/polipo/ proxyAddress=127.0.0.1 proxyName=localhost serverSlots=4 serverMaxSlots=8 cacheIsShared=true allowedClients=127.0.0.1 socksParentProxy = localhost:9050 socksProxyType = socks5
Neden?
Öncelikle, bu betik benim için gerekli. Flash ve HTML5 kullanmıyorum. Genelde bir video izleyeceksem bunu youtube-dl ve mplayer ile birlikte yapmaktayım. Fakat, dinlediğim şarkıları telefonda veya mp3 çalarda da bulunmaları ve tekrar tekrar indirmemek için böyle bir şey yaptım. Benim işimi fazlasıyla görüyor. Diğer yandan, belki ilgisini çeken birileri betiği geliştirmek isteyebilirler. Ek olarak, bir yazılımcı değilim. Kod yazmayı bilmiyorum.
Kod
#!/bin/bash # # Youtogg is a basic video to ogg conversion script. # # Dependencies: youtube-dl, ffmpeg, libvorbis # Optional: tor, polipo # Contact: kusburnu@riseup.net ### # Welcome screen _welcome () { echo $@ | sed -e 's/^/../' -e 's/$/../' -e 's/./*/g' echo $@ | sed -e 's/^/* /' -e 's/$/ */' echo $@ | sed -e 's/^/../' -e 's/$/../' -e 's/./*/g' } _welcome "WELCOME TO YOUTOGG" echo ### # Folder check _folder_check () { if [ -d ~/youtogg ] then read -p "Video Link: " video echo else echo "Creating youtogg folder" mkdir ~/youtogg read -p "Video Link: " video echo fi } _folder_check "$@" ### # Video download _video_download () { while true do echo read -p "Do you want to torify? (Y/N) " answer1 echo case $answer1 in [yY]* ) cd ~/youtogg && filename=source && youtube-dl -F --proxy "127.0.0.1:8123" $video && echo && read -p "Choose your video format: " format && echo && youtube-dl -f $format -o $filename --proxy "127.0.0.1:8123" $video break;; [nN]* ) cd ~/youtogg && filename=source && youtube-dl -F $video && echo && read -p "Choose your video format: " format && echo && youtube-dl -f $format -o $filename $video break;; * ) echo "Y or N, please!";; esac done } _video_download "$@" ### # Name for the output file _filename () { echo read -p "Output filename: " name echo } _filename "$@" ### # Converting video to ogg _convert () { while true do ffmpeg -i $filename -vn -acodec libvorbis "$name.ogg" echo read -p "Do you want to keep video file? (Y/N) " answer2 echo case $answer2 in [yY]* ) mv $filename $filename.$(date +%m%d%Y_%H%M%S) break;; [nN]* ) rm $filename break;; * ) echo "Y or N, please!";; esac done } _convert "$@" ### # Log _log () { echo "$video = $name.ogg" > youtogg.log.$(date +%m%d%Y_%H%M%S) } _log "$@" ### # Loop _loop () { while true do echo read -p "Do you want to convert again? (Y/N) " answer3 echo case $answer3 in [yY]* ) _folder_check "$@" && _video_download "$@" && _filename "$@" && _convert "$@" && _log "$@" break;; [nN]* ) echo "Goodbye!" exit;; * ) echo "Y or N, please!";; esac done } _loop "$@"
Son olarak…
Bu kodu aynen bir metin düzenleyicisine kopyalayıp kaydedin. chmod +x dosyadı ile çalıştırılabilir hale getirin. Son olarak, terminalden çalıştırın. Hepsi bu kadar. Kullanır ve yorum yaparsanız memnun olurum. Önerilerinizi ve geliştirmelerinizi de eklerseniz mükemmel olur.
Ekleme (01.02.2014): Log eklendi.