YouTubeの映像をまとめてMP4でDLしてiPod touchで見る

上の動画をiPodで見たくなった。ということで、まとめてDLするスクリプトを書いてみた。すごいアドホックな処理なので、汎用性とか全く意識してません。

使い方は、保存したい題名とvideo_idをタブセパレーテッドなファイルに書いておく。下のような感じで。ファイル名はlist.tsvとでもしておきましょう。

ドラッグフック	Ik3zwrMjjHE
ファルカンフェイント	Q-KpVcBCc1Q
ラーボデバッカ	SCW5ymYssp0

で、下のようにコマンドを実行するだけ

ruby fetch_youtube_mp4.rb list.tsv

ソースは貼付けておきます。

#/usr/bin/env ruby

# fetch_youtube_mp4.rb

require 'open-uri'

ar = []
ARGF.each do |line|
	info = line.split(/\t/)
	ar.push info
	throw 'format error' if info.length != 2
	info[1].chomp!
end
ar.each do |info|
	puts "fetching: #{info[0]} #{info[1]}"
	t = nil
	open("http://jp.youtube.com/watch?v=#{info[1]}") do |f|
		f.each_line do |line|
			next unless line =~ /var swfArgs = .*"t": "([^"]*)"/
			t = $1
		end
	end
	url = "http://www.youtube.com/get_video?fmt=18&video_id=#{info[1]}&t=#{t}"
	puts url
	open(url) do |f|
		open("#{info[0]}.mp4", 'w') do |mp4|
			mp4.write f.read
		end
	end
end