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 を呼ぶようにすればいいんじゃないかな。
[ツッコミを入れる]



