youtube の動画をダウンロードする ruby script
Posted by yoosee on Web at 2006-07-07 23:42 JST1 getmovie.rb - youtube の動画をダウンロードする ruby script
google videoやyoutubeとかの動画を落して保存。 を参考に ruby で youtube の flv をダウンロードするものを書いた。youtube 以外にも色々対応していて高機能な php をそのまま使えば良い気もするが、半分趣味と言うことで。youtube の url を引数に与えるとタイトルをファイル名にしてダウンロードする。気が向いたら svn/trac にも登録するかも、程度で。
yoosee は euc-jp なのか。俺はもう、legacy encoding には戻れん。
ってことで、locale を見て、ファイル名のエンコードを決める patch。
あと、ファイル名の先頭に微妙に 「_」が入ってたのを若干修正。
--- getmovie.rb.orig 2006-07-11 00:15:26.000000000 +0900
+++ getmovie.rb 2006-07-11 00:43:40.000000000 +0900
@@ -31,8 +31,18 @@
f.read
end
end
+
+ toOption = "-e" #default to EUC
+ charmap = `locale -k charmap`
+ if /charmap="([^"]+)"/ =~ charmap
+ case $1
+ when "UTF-8"
+ toOption = "-w8"
+ end
+ end
+
if /]*>(.+)/i =~ page
- filename = NKF.nkf('-e', $1.gsub(/
/, '')).gsub(/YouTube -/, '').
+ filename = NKF.nkf(toOption, $1.gsub(/
/, '')).gsub(/YouTube - ?/, '').
gsub(/^\s+/, '').gsub(/ /, '_') + '.flv'
end
そう言えばこのblogもEUC-JPのままだった。
まじめにやるなら、http の header と contents の meta タグ見て、locale の codeset に iconv で流し込むんだろうか。
BOM がついてて、ファイル指定しにくい。 orz。
iconv は、ruby なら Iconv.iconv(toCode,fromCode,string) でいけるから、簡単だよ。Iconv::InvalidEncoding と Iconv::IllegalSequence を rescue で捕まえとけばオッケー。Youtube は UTF-8 だろうから、fromCode は固定でもいいかもな。
とはいえ、もう個人的には必要ないなww