Doge log

Abby CTO 雑賀 力王のオフィシャルサイトです

youtubeからflvのurlを取り出すサンプル

import urllib2
import re

const_video_url_params_re = re.compile(r'player2\.swf\?([^"]+)"', re.M)
const_video_url_real_str = 'http://www.youtube.com/get_video?%s'

def request_create(url):
    retval = urllib2.Request(url)
    retval.add_header('User-Agent', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1) Gecko/20061010 Firefox/2.0')
    retval.add_header('Accept-Charset', 'ISO-8859-1,utf-8;q=0.7,*;q=0.7')
    retval.add_header('Accept', 'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5')
    retval.add_header('Accept-Language', 'en-us,en;q=0.5')
    return retval

def perform_request(url):
    request = request_create(url)
    response = urllib2.urlopen(request)
    return response

def geturl(url):
    response = perform_request(url).read()
    match = const_video_url_params_re.search(response)
    param = match.group(0)
    url =  const_video_url_real_str %  param
    response = perform_request(url)
    return response.geturl()

if __name__ == '__main__':
    print geturl('http://jp.youtube.com/watch?v=-K0Kap9NiXU')   

追記
twistedでやろうとしたけどclientモジュールそのままではresponseのヘッダが取れないのでめんどくなってやめた。
(ちょっといじれば出来るんだけど)
うくく。