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.