From 53f41ce6c6f875ffb58d34c28e191dc52b571c37 Mon Sep 17 00:00:00 2001 From: limitcool Date: Fri, 5 Aug 2022 17:45:06 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=F0=9F=90=9B=20Fix=20=E6=96=97=E9=B1=BCflv?= =?UTF-8?q?=E6=BA=90=20Fixes=20#364?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- douyu.py | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/douyu.py b/douyu.py index c2bc1cc..815be69 100644 --- a/douyu.py +++ b/douyu.py @@ -61,11 +61,13 @@ def get_pre(self): key = '' if data: rtmp_live = data['rtmp_live'] - key = re.search(r'(\d{1,8}[0-9a-zA-Z]+)_?\d{0,4}(/playlist|.m3u8)', rtmp_live).group(1) + key = re.search( + r'(\d{1,8}[0-9a-zA-Z]+)_?\d{0,4}(/playlist|.m3u8)', rtmp_live).group(1) return error, key def get_js(self): - result = re.search(r'(function ub98484234.*)\s(var.*)', self.res).group() + result = re.search( + r'(function ub98484234.*)\s(var.*)', self.res).group() func_ub9 = re.sub(r'eval.*;}', 'strc;}', result) js = execjs.compile(func_ub9) res = js.call('ub98484234') @@ -75,7 +77,8 @@ def get_js(self): func_sign = re.sub(r'return rt;}\);?', 'return rt;}', res) func_sign = func_sign.replace('(function (', 'function sign(') - func_sign = func_sign.replace('CryptoJS.MD5(cb).toString()', '"' + rb + '"') + func_sign = func_sign.replace( + 'CryptoJS.MD5(cb).toString()', '"' + rb + '"') js = execjs.compile(func_sign) params = js.call('sign', self.rid, self.did, self.t10) @@ -83,7 +86,8 @@ def get_js(self): url = 'https://m.douyu.com/api/room/ratestream' res = self.s.post(url, params=params).text - key = re.search(r'(\d{1,8}[0-9a-zA-Z]+)_?\d{0,4}(.m3u8|/playlist)', res).group(1) + key = re.search( + r'(\d{1,8}[0-9a-zA-Z]+)_?\d{0,4}(.m3u8|/playlist)', res).group(1) return key @@ -95,7 +99,8 @@ def get_pc_js(self, cdn='ws-h5', rate=0): :return: JSON格式 """ res = self.s.get('https://www.douyu.com/' + str(self.rid)).text - result = re.search(r'(vdwdae325w_64we[\s\S]*function ub98484234[\s\S]*?)function', res).group(1) + result = re.search( + r'(vdwdae325w_64we[\s\S]*function ub98484234[\s\S]*?)function', res).group(1) func_ub9 = re.sub(r'eval.*?;}', 'strc;}', result) js = execjs.compile(func_ub9) res = js.call('ub98484234') @@ -105,7 +110,8 @@ def get_pc_js(self, cdn='ws-h5', rate=0): func_sign = re.sub(r'return rt;}\);?', 'return rt;}', res) func_sign = func_sign.replace('(function (', 'function sign(') - func_sign = func_sign.replace('CryptoJS.MD5(cb).toString()', '"' + rb + '"') + func_sign = func_sign.replace( + 'CryptoJS.MD5(cb).toString()', '"' + rb + '"') js = execjs.compile(func_sign) params = js.call('sign', self.rid, self.did, self.t10) @@ -127,10 +133,15 @@ def get_real_url(self): else: key = self.get_js() real_url = {} - real_url["flv"] = "http://vplay1a.douyucdn.cn/live/{}.flv?uuid=".format(key) - real_url["x-p2p"] = "http://tx2play1.douyucdn.cn/live/{}.xs?uuid=".format(key) + real_url["flv"] = "http://vplay1a.douyucdn.cn/live/{}.flv?uuid=".format( + key) + real_url["x-p2p"] = "http://tx2play1.douyucdn.cn/live/{}.xs?uuid=".format( + key) + real_url["aliyun"] = "http://dyscdnali1.douyucdn.cn/live/{}.flv?uuid=".format( + key) return real_url + if __name__ == '__main__': r = input('输入斗鱼直播间号:\n') s = DouYu(r) From f3d9b37813ba176cffaee00c5fd51445e55021b5 Mon Sep 17 00:00:00 2001 From: limitcool Date: Fri, 5 Aug 2022 17:58:34 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BF=AE=E6=94=B9vplay1a=E4=B8=BAws-tct?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- douyu.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/douyu.py b/douyu.py index 815be69..4214286 100644 --- a/douyu.py +++ b/douyu.py @@ -133,9 +133,9 @@ def get_real_url(self): else: key = self.get_js() real_url = {} - real_url["flv"] = "http://vplay1a.douyucdn.cn/live/{}.flv?uuid=".format( + real_url["flv"] = "http://ws-tct.douyucdn.cn/live/{}.flv?uuid=".format( key) - real_url["x-p2p"] = "http://tx2play1.douyucdn.cn/live/{}.xs?uuid=".format( + real_url["x-p2p"] = "http://ws-tct.douyucdn.cn/live/{}.xs?uuid=".format( key) real_url["aliyun"] = "http://dyscdnali1.douyucdn.cn/live/{}.flv?uuid=".format( key)