更新版本: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)