[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

(DTPtechNote:1726) [AppleScript]nicovideo-dlで遊ぶ。



DTPとまったく関係なくてすいません^^
ニコ動をダウンロードできるPython用スクリプト(nicovideo-dl)がありましたので、
自分用(Mac OS 10.5 + Safari 3)にUIつけてみました。
アプリケーションバンドルとして保存したらいいよ。

(*
nikovideo-dl_UI
ニコニコ動画のダウンロード(nicovideo-dlのためのUI)
(c)2003-2007 www.seuzo.jp

●nicovideo-dl
http://sourceforge.jp/projects/nicovideo-dl
から適宜ダウンロードしてください。これがないとなにもしません。
作者のYing-Chun Liuさんに感謝します。

●使い方
Safariでダウンロードしたいニコニコ動画ページを開いておきます。
あとはこのスクリプトをダブルクリックするだけ。
一番最初の起動時のみ、nicovideo-dlのある場所とログインEmail、ログインパスワードを入力します。これらはアプリケーション内に保存されます。これがいやんな人はpropertyをglobalにしてください。2回目からは起動するだけ。
書くまでもないことかもしれませんが、.flvを再生するのにわたしはPerian(http://perian.org/)を使っています。
再配布不可。your own riskでご使用ください。

●History
2008-01-25	ver.0.1	とりあえず自分用。
*)


property my_nicovideo_dl : "" --nicovideo-dlの場所
property my_email : "" --E-mailアドレス
property my_pass : "" --ログインパスワード(記憶するのがいやんな人はglobal使ってください)



--------------------------------------------------------●エラー処理
to my_error(err_str)
	tell current application
		activate
		set err_str to err_str as Unicode text
		display dialog err_str buttons {"キャンセル"}
		error number -128
	end tell
end my_error

--------------------------------------------------------●前処理
to my_preparation()
	tell application "Finder"
		activate
		if my_nicovideo_dl is "" or not (exists my_nicovideo_dl) then
			set my_nicovideo_dl to (choose file with prompt "「nicovideo-dl」はどこにありますか?" as Unicode text)
			if name of my_nicovideo_dl is not "nicovideo-dl" then my_error("「nicovideo-dl」を選んでください" as Unicode text)
			if kind of my_nicovideo_dl is not "Unix 実行ファイル" then my_error("「Unix 実行ファイル」ではありません" as Unicode text)
		end if
		
		if my_email is "" then
			set my_email to text returned of (display dialog "ログインE-Mailを入力してください" default answer "")
		end if
		
		if my_pass is "" then
			set my_pass to text returned of (display dialog "ログインパスワードを入力してください" default answer "" with hidden answer)
		end if
		
	end tell
end my_preparation


--------------------------------------------------------●safariからURLとTitleを得る
to get_safari_doc()
	tell application "Safari"
		if exists document 1 then
			tell document 1
				set my_url to URL
				if my_url does not start with "http://www.nicovideo.jp/watch/"; then my my_error("ニコニコ動画が表示されていません")
				set my_title to name
				set my_title to my as_replace(my_title, "ニコニコ動画(RC2)‐", "")
				return {my_url, my_title}
			end tell
		else
			my my_error("ドキュメントが開かれていません")
		end if
	end tell
end get_safari_doc

--------------------------------------------------------○検索置換
to as_replace(theText, orgStr, newStr)
	set oldDelim to AppleScript's text item delimiters
	set AppleScript's text item delimiters to orgStr
	set tmpList to every text item of theText
	set AppleScript's text item delimiters to newStr
	set tmpStr to tmpList as text
	set AppleScript's text item delimiters to oldDelim
	return tmpStr
end as_replace


my my_preparation()
set {my_url, my_title} to my get_safari_doc()
tell application "Safari"
	activate
	set my_default_folder to path to downloads folder --ダウンロードのデフォルトフォルダ
	set save_path to choose file name with prompt "どこに保存しますか?" default name my_title & ".flv" default location my_default_folder
	set save_path to quoted form of POSIX path of save_path
end tell
--実際のダウンロード処理
tell application "Terminal"
	activate
	try
		do script quoted form of POSIX path of my_nicovideo_dl & " -u " & my_email & " -p " & my_pass & " -o " & save_path & " " & my_url
	on error the error_message number the error_number
		my my_error("ダウンロード中の予期せぬエラーです" & return & error_number & ". " & the error_message)
	end try
end tell