ニコニコのflvが欲しいなぁと思ったので

Pythonで書いてみた。
nicovideonが動かないのもあって面倒だったので。
で、出力されるurlをブラウザにでもはっつけて保存すると良い。
permalinkcookieはパラメタにすべきだが、面倒なのでTextMateに直に書いている。
cookies.txtはログイン後のFirefoxからでもぶっこぬき。(ログイン状態でないとswfに対するパラメータが得られないので)
正規表現が手抜きです。
実行結果は
http://s-clb2.smilevideo.jp/smile?v=335707.92386
みたいになるです。
貼り付けるとMacのバックスラッシュが?になっちゃうなぁ……。

そういえば、J9シリーズがあって吹きました。
ブライガーとバクシンガー好きなんですよ。
あのとびきりダサい感じが。
「ぎんがせんぷー ぎんがせんぷー」
たまらないぜハニハニ。

import urllib, urllib2, cookielib
import sys
import os

import re
import cgi

permalink = "http://www.nicovideo.jp/watch/sm335707"
cookie = "cookies.txt"

def main():
    p_flv = re.compile('.*url=(.+)&.*')
    p_sm = re.compile('http://.+(sm[0-9]+)')
    p_ts = re.compile('.*flvplayer??.swf???ts=(??w+).*')
    m = p_sm.search(permalink)
    vid = m.group(1)
    cj = cookielib.MozillaCookieJar()
    cj.load(cookie)
    opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
    result = opener.open(permalink)
    m = p_ts.search(result.read())
    if not m is None:
        tsid = m.group(1)
        result = opener.open(
            "http://www.nicovideo.jp/getflv?ts="+tsid+"&v="+vid
            )
        param = urllib.unquote(str(result.read()))
        m = p_flv.search(param)
        if not m is None:
            print m.group(1)
    pass

if __name__ == '__main__':
    main()