fix zhanqitv

This commit is contained in:
ERiok 2016-01-08 13:31:16 +08:00
parent 141cb1166c
commit eaab0ce3ed

View File

@ -4,6 +4,10 @@ __all__ = ['zhanqi_download']
from ..common import *
import re
import base64
import json
import time
import hashlib
def zhanqi_download(url, output_dir = '.', merge = True, info_only = False, **kwargs):
html = get_content(url)
@ -20,12 +24,28 @@ def zhanqi_download(url, output_dir = '.', merge = True, info_only = False, **kw
rtmp_base = "http://wshdl.load.cdn.zhanqi.tv/zqlive"
vod_base = "http://dlvod.cdn.zhanqi.tv"
rtmp_real_base = "rtmp://dlrtmp.cdn.zhanqi.tv/zqlive/"
room_info = "http://www.zhanqi.tv/api/static/live.roomid/"
KEY_MASK = "#{&..?!("
ak2_pattern = r'ak2":"\d-([^|]+)'
if video_type == "LIVE":
rtmp_id = match1(html, rtmp_id_patt).replace('\\/','/')
#request_url = rtmp_base+'/'+rtmp_id+'.flv?get_url=1'
#real_url = get_html(request_url)
real_url = rtmp_real_base + '/' + rtmp_id
html2 = get_content(room_info + rtmp_id.split("_")[0] + ".json")
json_data = json.loads(html2)
cdns = json_data["data"]["flashvars"]["cdns"]
cdns = base64.b64decode(cdns).decode("utf-8")
cdn = match1(cdns, ak2_pattern)
cdn = base64.b64decode(cdn).decode("utf-8")
key = ''
i = 0
while(i < len(cdn)):
key = key + chr(ord(cdn[i]) ^ ord(KEY_MASK[i % 8]))
i = i + 1
time_hex = hex(int(time.time()))[2:]
key = hashlib.md5(bytes(key + "/zqlive/" + rtmp_id + time_hex, "utf-8")).hexdigest()
real_url = rtmp_real_base + '/' + rtmp_id + "?k=" + key + "&t=" + time_hex
print_info(site_info, title, 'flv', float('inf'))
if not info_only:
download_rtmp_url(real_url, title, 'flv', {}, output_dir, merge = merge)