2009-08-24 :-)
_ 仕事
0830 出勤
_ [Youtube][CravingExplorer][Ruby]Youtube の登録チャンネルの動画を CravingExplorer に登録する
環境
- Microsoft WindowsXP
- cygwin ruby 1.8.7
- Craving Explorer 1.0.0 rc7
流れ
- YouTube - 登録チャンネル の動画の URI を取得
- 動画 URI を CravingExplorer に追加
- 保存種別は「iPod touch ワイド」で決めうち
処理したことがある動画 URI は無視するようにした。再度取得したい場合はキャッシュファイルを削除するか、手動で CravingExplorer する。
コード
こんな
#!/usr/bin/ruby require 'cgi' require 'rss' require 'win32ole' require 'pp' class Youtube def initialize( rss ) @feed = nil begin @feed = RSS::Parser.parse( rss, false) rescue RSS::Error end end def each_item @feed.items.each do |item| movieurl = item.link.href cache_filename = CGI.escape( movieurl ) if File.exists? cache_filename next else Marshal.dump( movieurl, File.open( cache_filename, 'w' ) ) yield movieurl end end end end class CravingExplorer def initialize @craving = WIN32OLE.new( 'CravingExplorer.Api' ) end def get( url, actionname ) begin @craving.addDownloadItem( url, actionname, true ); rescue raise end end end def main( argv ) actionname = 'mp4-iphone-wide' rss = argv[ 0 ] cr = CravingExplorer.new youtube = Youtube.new( rss ) youtube.each_item { |url| cr.get( url, actionname ) puts "#{url}" } end main( ARGV )
実行
みたいな
% ./cex2.rb "http://gdata.youtube.com/feeds/base/users/miwarinsusumu/newsubscriptionvideos?client=ytapi-youtube-user&v=2" http://www.youtube.com/watch?v=dUUVXR80y48 http://www.youtube.com/watch?v=6UUg2KvyTZs http://www.youtube.com/watch?v=GzRwth4Bndc http://www.youtube.com/watch?v=IDgzHkbNNcU http://www.youtube.com/watch?v=S76lNWuquIQ http://www.youtube.com/watch?v=jnNJLnleCao http://www.youtube.com/watch?v=OvVxhEC_Zi0 http://www.youtube.com/watch?v=Fk0TCgccFks http://www.youtube.com/watch?v=GvZ3iADyulA http://www.youtube.com/watch?v=2oUQs-p9r6g http://www.youtube.com/watch?v=qJZpgChit6U http://www.youtube.com/watch?v=Fcq6YKaf3xI http://www.youtube.com/watch?v=-e_a_XLNjSU http://www.youtube.com/watch?v=ulhfDzW4yLs http://www.youtube.com/watch?v=SaFFJjHq2ps http://www.youtube.com/watch?v=3CICtEYvkno http://www.youtube.com/watch?v=z0bW9W7joeg http://www.youtube.com/watch?v=NtBQtnnvaII http://www.youtube.com/watch?v=uXqSi2Q3bsw http://www.youtube.com/watch?v=83RMTCIIw0w http://www.youtube.com/watch?v=cO2oR51o7Ic http://www.youtube.com/watch?v=UfCEB5TcSuU http://www.youtube.com/watch?v=Zuwdx288-mE http://www.youtube.com/watch?v=ev08Rref3nI http://www.youtube.com/watch?v=4wC7-sDDn_o
あとは以下のように exe 化するといいかもしれない。
>mkexy ./cex2.rb "http://gdata.youtube.com/feeds/base/users/miwarinsusumu/newsubscriptionvideos?client=ytapi-youtube-user&v=2" && exerb -v cex2.exy Recipe File : cex2.exy Core File : C:/ruby/share/exerb/ruby187c.exc Output File : C:/home/miwa/work/ruby/youtube/cex2.exe
使うときはこう。
>cex2.exe "http://gdata.youtube.com/feeds/base/users/miwarinsusumu/newsubscriptionvideos?client=ytapi-youtube-user&v=2"
参考
- Craving Explorer Online Help - Craving Explorer Script 仕様
- RSS Parser::Tutorial.ja
- 無題メモランダム: rubyでキャッシュ: 例えばrailsのActiveRecordクエリの結果をキャッシュするとか
CravingExplorer が無い場合はどーすんの
Craving Explorer Online Help - Craving Explorer Script 仕様 で言っている template\convert.xml を覗くと以下のようになっている。
<Item> <DisplayName>MP4 ワイド(iPod Touch / iPhone)</DisplayName> <Accelerator>W</Accelerator> <ActionName>mp4-iphone-wide</ActionName> <DeviceName>iphone</DeviceName> <CommandLine>-f ipod -vcodec mpeg4 -b 1200k -mbd 2 -flags mv4+aic -trellis 2 -cmp 2 -subcmp 2 -s 480x270 -r 30000/1001 -acodec libfaac -ar 44100 -ab 128k</CommandLine> <FileExtension>mp4</FileExtension> <BeforeAction></BeforeAction> <AfterAction></AfterAction> </Item>
CommandLine で C:\Program Files\CravingExplorer\lib\ffmpeg.exe への引数を指定してるので、自力で ffmpeg を呼ぶようにすればいいんじゃないかな。
[ツッコミを入れる]