Created
August 5, 2009 08:19
-
-
Save Echos/162590 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/opt/local/bin/ruby -Ku | |
# -*- coding: utf-8 -*- | |
require 'rubygems' | |
require 'nicovideo' | |
require 'pit' | |
require "kconv" | |
######################################### | |
## iphone用変換コマンド(Mac用かも・・・) | |
######################################### | |
exec_iphone6 = "/opt/local/bin/ffmpeg -i __FILE_NAME__ -f ipod -level 13 -croptop 8 -cropbottom 8 -cropleft 8 -cropright 14 -s 480x270 -b 600k -r 24 -ar 48000 -ac 2 -ab 128 -threads 2 __FILE_NAME__.tmp " | |
exec_iphone4 = "/opt/local/bin/ffmpeg -i __FILE_NAME__ -f ipod -level 13 -croptop 68 -cropbottom 68 -cropleft 8 -cropright 14 -s 480x270 -b 600k -r 24 -ar 48000 -ac 2 -ab 128 -threads 2 __FILE_NAME__.tmp " | |
exec_info = "/opt/local/bin/ffmpeg -i __FILE_NAME__ 2>&1 | grep Stream | grep Video" | |
#via http://d.hatena.ne.jp/hayori/20080307/1204852916 | |
module Nicovideo | |
class VideoPage | |
def type | |
@params ||= get_params | |
pattern = %r!^http://.*\.nicovideo\.jp/smile\?(.*?)=.*$! | |
CGI.unescape(@params['url']) =~ pattern | |
case $1 | |
when 'm' | |
return 'mp4' | |
when 's' | |
exit | |
else | |
return 'flv' | |
end | |
end | |
end | |
end | |
begin | |
niconico = Pit::get('niconico' , :require => { | |
'nico_mail' => 'your nicovideo mail', | |
'nico_pass' => 'your nico_pass pass', | |
}) | |
niconico_ml = niconico['nico_mail'] | |
niconico_pw = niconico['nico_pass'] | |
rescue | |
end | |
if ARGV.length == 0 then | |
puts "URLを指定してください。" | |
exit | |
end | |
nv = Nicovideo.new(niconico_ml, niconico_pw) | |
nv.login | |
video_id = ARGV[0].split('/')[-1] | |
filename = '' | |
nv.watch(video_id) {|v| | |
#たまにファイル名が化けちゃう;; | |
filename = "【#{v.id}】#{v.title.sub(/‐.*$/, '')}.#{v.type}" | |
tmpname = v.id | |
File.open(tmpname, "wb") {|f| f.write v.flv } | |
#コマンドの準備 | |
exec_iphone4 = exec_iphone4.gsub("__FILE_NAME__",tmpname) | |
exec_iphone6 = exec_iphone6.gsub("__FILE_NAME__",tmpname) | |
exec_info = exec_info.gsub("__FILE_NAME__",tmpname) | |
#動画サイズを取得するために、保存したファイル情報をとる | |
r = `#{exec_info}` | |
xysize = (r.scan(/\d+x\d+/))[0].split('x'); | |
#動画サイズが取れなかったら潔くあきらめる(ぉ | |
if xysize.length != 2 then | |
exit | |
end | |
#サイズを判定して、変換処理を決める | |
if (xysize[1].to_i / 3 * 4) == xysize[0].to_i then | |
puts "4:3サイズです。" | |
system(exec_iphone4) | |
else | |
puts "16:9サイズです。" | |
system(exec_iphone6) | |
end | |
#いらないファイルを消す | |
File.delete(tmpname) | |
File.rename(tmpname + '.tmp' , filename) | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment