From eaab0ce3ed3054db0a12bad5e8511d5e7791f5c8 Mon Sep 17 00:00:00 2001 From: ERiok Date: Fri, 8 Jan 2016 13:31:16 +0800 Subject: [PATCH] fix zhanqitv --- src/you_get/extractors/zhanqi.py | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/you_get/extractors/zhanqi.py b/src/you_get/extractors/zhanqi.py index a648bc4a..7d6b75b6 100644 --- a/src/you_get/extractors/zhanqi.py +++ b/src/you_get/extractors/zhanqi.py @@ -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)