nicocacheでキャッシュされた動画からffmpegでmp3に変換するCGI+連携用グリモンを書いた
手ぬきです。
RubyでかかれたCGI
注意:CGIでうごかすので、HD直下などにパーミッション設定してやるとうまくいきます。
#!/usr/bin/ruby require 'cgi' #Setting cache_directory = "/nicocache/cache"#絶対パスでnicocacheのキャッシュ位置を指定 conv_directory = "/niconv"#変換先 ffmpeg_path = "/Applications/ffmpeg"#ffmpegパス ############################## cgi = CGI.new print "Content-Type: text/html\r\n\r\n" #####例外##### if !cgi.has_key?("id") puts "<h1>Error</h1>" puts "動画IDを指定してくだしあ。" exit 0 end #####変数定義##### id = cgi['id'] dirlist = Dir::entries(cache_directory) dirlist2 = Dir::entries(conv_directory) #####例外2##### if !(/^sm[0-9]*$/ =~ id) puts "<h1>Error</h1>" puts "動画IDがおかしいです。SmileVideoにしか対応してないです" p id exit 0 end dirlist2.each{|n| if /^#{id}/ =~ n puts "<h1>Error</h1>" puts "すでに変換されている様子。" exit 0 end } flag = false filename = "" dirlist.each{|n| if /^#{id}/ =~ n flag = true filename = n end } if !flag puts "<h1>Error</h1>" puts "nicocacheで動画のダウンロードが終わってないか、キャッシュが存在しません" exit 0 end #####変換処理準備##### filename2 = filename.sub(/\..*$/,"") if /mp4$/ =~ filename command = ffmpeg_path+" -i "+cache_directory+"/"+filename+" -ab 128 "+conv_directory+"/"+filename2+".mp3" elsif /flv$/ =~ filename command = ffmpeg_path+" -i "+cache_directory+"/"+filename+" -acodec copy "+conv_directory+"/"+filename2+".mp3" else puts "<h1>Error</h1>" puts "flv/mp4にしか対応してないです。" exit 0 end puts "<h1>変換中...</h1>" puts "変換中" system command+" 2>/dev/null" puts '<script type="text/javascript">window.close();</script>'
グリモン
// ==UserScript== // @name Niconv // @namespace net.soralabo.gm_script // @include http://www.nicovideo.jp/watch/sm* // ==/UserScript== function xp(query) {//Thanks gigi-net var results = document.evaluate(query, document, null, 7, null); var nodes = new Array(); for(var i=0; i<results.snapshotLength; i++){ nodes.push(results.snapshotItem(i)); } return nodes; } ii = xp("/html/body/div[2]/div[4]/table/tbody/tr/td"); iad = location.href.replace("http://www.nicovideo.jp/watch/",""); ii[0].innerHTML += ' | <a href="javascript:void(window.open('+"'"+'http://localhost/nc/nc.rb?id='+iad+"'"+', '+"'"+'nicooonv'+"'"+','+"'"+'width=500,height=350,menubar=no,toolbar=no,scrollbars=yes'+"'"+'))">MP3 Convert</a>';
動作ムービー
エンコード面倒くさいのでmovで...
http://files.getdropbox.com/u/261861/niconv.mov