我们一般都在优酷里看一些好玩的视频,有时候看到精彩的就想下载到本地保存起来留作纪念,在win下可以用维棠等软件下载,但苦了用linux的孩子们。尽管chrome和firefox的一些插件可以下载,但有时候下载下来是分段的视频,还要手动用ffmpeg合成一个视频太繁琐,而且用插件下载要点击好多次鼠标,太不符合linuxer的性格了哈~于是我用python3写了一个youkuDown.py,代码如下:
import re import urllib.request import json import time import random import sys def getVideoInfo(url): ruleTitle=re.compile(‘<title>(.*)</title>‘) ruleId=re.compile(‘http://v.youku.com/v_show/id_(.*).html‘) videoTitle=ruleTitle.findall(urllib.request.urlopen(url).read().decode(‘utf8‘)) videoId=ruleId.findall(url) return videoTitle[0],videoId[0] def getTrueLink(videoid): data=urllib.request.urlopen(‘http://v.youku.com/player/getPlayList/VideoIDS/‘+videoid) info=json.loads(data.read().decode(‘utf8‘)) segs=info[‘data‘][0][‘segs‘] types=segs.keys() seed=info[‘data‘][0][‘seed‘] source=list("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/\\:._-1234567890") mixed=‘‘ while source: seed=(seed*211+30031)&0xFFFF index=seed*len(source)>>16 c=source.pop(index) mixed+=c ids=info[‘data‘][0][‘streamfileids‘][‘flv‘].split(‘*‘)[:-1] vid=‘‘.join(mixed[int(i)] for i in ids) sid=‘%s%s%s‘%(int(time.time()*1000),random.randint(1000,1999),random.randint(1000,9999)) urls=[] for s in segs[‘flv‘]: no=‘%02x‘%int(s[‘no‘]) url=‘http://f.youku.com/player/getFlvPath/sid/%s_%s/st/flv/fileid/%s%s%s?K=%s&ts=%s‘%(sid,no,vid[:8],no.upper(),vid[10:],s[‘k‘],s[‘seconds‘]) urls.append(url) return urls def down2file(urls,filename): f=open(filename,‘wb‘) fileNum=len(urls) count=0 for url in urls: count+=1 print(‘downloading file %d/%d‘%(count,fileNum)) req=urllib.request.Request(url,headers={‘Referer‘:‘http://www.youku.com‘}) data=urllib.request.urlopen(req).read() f.write(data) f.close() print(‘download ‘+filename+‘ OK!‘) def youkuDown(link): videotitle,videoid=getVideoInfo(link) urls=getTrueLink(videoid) down2file(urls,videotitle+‘.flv‘) if __name__==‘__main__‘: if len(sys.argv)<2: print(‘Example Usage: python3 youkuDown.py http://v.youku.com/v_show/id_XNjUzNDQwMzIw.html‘) print(‘‘) exit() youkuDown(sys.argv[1])
保存到本地的视频播放情况:
在linux下想下载优酷视频的盆友们enjoy it~~同时祝大家新年愉快~~哈哈哈
转载请注明:转自http://blog.csdn.net/littlethunder/article/details/18230859
原文:http://blog.csdn.net/littlethunder/article/details/18230859