Youtubeの動画をPythonでダウンロードする
Pythonのurllib2やBeautifulSoupを使って、Youtubeの動画をダウンロードするスクリプトを作った。
Youtubeの動画ファイルのURLがどこに隠されているのか、解析するために、Youtubeのソースをじーっと見続けたら、以下のスクリプトで取得できた。
作った後にググったら、PHPで行う動画変換(後編) (2/3):CodeZineに載ってた…。
ま、まあ、良いや。
以下のスクリプト。
import re import simplejson import urllib2 import BeautifulSoup URLS = [ "http://www.youtube.com/", # ここにダウンロードしたいYoutubeのサイトURLを指定 ] if __name__ == "__main__": p = re.compile("var swfConfig = ({.*?});") # このパターンでscriptから取得 def __get(url): bs = BeautifulSoup.BeautifulSoup(urllib2.urlopen(url).read()) f_name = bs.findAll("span", id="eow-title")[0].get("title") # Youtubeのサイトに書いてるtitleを取得 f_flv = "%s.flv" % f_name # 取得したタイトルをファイル名に使用 for s in bs.findAll("script"): m = p.search(s.string) if s.string else None if m: j = simplejson.loads(m.group(1).replace("\\ ", "\\")) w = open(f_flv, "wb") w.write(urllib2.urlopen(j["args"]["fmt_url_map"].split("|")[-1]).read()) w.close() break for url in URLS: try: print "Begin: [%s]" % url __get(url) print "End : [%s]" % url except Exception, e: print "ERROR: [%s]\t%s" % (url, e)
開始、終了のプリントしてたり、エラーをお知らせする程度の制御案内しかしてないが、まあ十分かな。
以上。