更新版本:http://www.cnbeining.com/?p=330
爱咋咋地了,擦。
难看就难看吧。
等下整个函数化后,把其他站加上。
用途:
下载弹幕
下载视频
拼成一个文件
Todo:
其他站支持
函数化
加个判断视频名的功能,新建目录扔进去
import os from StringIO import StringIO import gzip import urllib2 def main(vid, p): cid = 0 biliurl = 'http://www.bilibili.tv/video/av'+vid+'/index_'+p+'.html' print('Fetching webpage...') request = urllib2.Request(biliurl) request.add_header('Accept-encoding', 'gzip') response = urllib2.urlopen(request) if response.info().get('Content-Encoding') == 'gzip': buf = StringIO( response.read()) f = gzip.GzipFile(fileobj=buf) data = f.read() data_list = data.split('\n') for lines in data_list: if 'cid=' in lines: cid = lines.split('&') cid = cid[0].split('=') cid = cid[-1] print('cid is ' + cid) break if cid is 0: print('Cannot find cid!') exit() print('Fetching XML...') os.system('curl -o '+cid+'.xml --compressed http://comment.bilibili.tv/'+str(cid)+'.xml') #os.system('gzip -d '+cid+'.xml.gz') print('The XML file, ' + cid + '.xml should be ready...enjoy!') print('Finding video location...') request = urllib2.Request('http://www.flvcd.com/parse.php?kw='+biliurl) request.add_header('Accept-encoding', 'gzip') response = urllib2.urlopen(request) data = response.read() data_list = data.split('\n') for items in data_list: if 'name' in items and 'inf' in items and 'input' in items: c = items rawurl = c[39:-5] rawurl = rawurl.split('|') vid_num = len(rawurl) break print(rawurl) print(vid_num) for i in range(vid_num): print(i) os.system('aria2c -c -s16 -x16 -k1M --out '+str(i)+'.flv '+rawurl[i]) f = open('ff.txt', 'w') ff = '' os.getcwd() for i in range(vid_num): ff = ff + 'file \'' + str(os.getcwd()) + '/'+ str(i) + '.flv\'\n' ff = ff.encode("utf8") f.write(ff) f.close() os.system('ffmpeg -f concat -i ff.txt -c copy '+str(cid)+'.mp4') os.system('rm -r ff.txt') exit() vid = str(input('av')) p = str(input('P')) main(vid, p)