pythonでニコニコ動画のflvをダウンロードする
Perlでニコニコ動画のflvとコメントxmlをダウンロードするという記事を拝見しまして、「pythonでもできないかなー」と思ってやってみました。
コメントは今回省略しましたが、flvまではmechanizeモジュールの力を借りて成功…したと思います。pythonのmechanizeモジュールはクッキーを勝手に食べてくれるようです。
(試した環境:MacOS10.4.10 / python 2.5.1)
#coding:shift_jis import os,string from mechanize import Browser # http://wwwsearch.sourceforge.net/mechanize/ br = Browser() #ユーザー設定部 #適宜改変してください user_id ='yourname@yourhost.com' pass_wd = 'yourpassword' mov_name='sm999999' save_dir ='/Users/yourlocation/Desktop/' #ログイン def login(id,passwd): br.open("http://www.nicovideo.jp/") br.select_form(nr=0) br["mail"]=id br["password"]=passwd contents =br.submit() print 'Login successful' #ダウンロードするファイルを探し出す def main(target): br.open("http://www.nicovideo.jp/watch/%s" % target) contents=br.open("http://www.nicovideo.jp/api/getflv?v=%s" % target) temp = contents.get_data().split('&') res = unescape(temp[2]) res = string.replace(res,'url=','') print 'Location get successful' savefile(target,res) #ファイルをローカルにセーブ def savefile(fileName,fileLoc): f=open(save_dir + fileName + '.flv','wb') contents=br.open(fileLoc) f.write(contents.read()) print 'File save complete' f.close #エスケープ文字を置換する def unescape(strg): strg = string.replace(strg,'%2F','/') strg = string.replace(strg,'%3A',':') strg = string.replace(strg,'%3D','=') strg = string.replace(strg,'%3F','?') return strg if __name__ == '__main__': login(user_id,pass_wd) main(mov_name)