From 5d49781559a5dd9bc240964dbdb3f0d54adf2de7 Mon Sep 17 00:00:00 2001 From: steven7851 Date: Sun, 7 Aug 2016 07:45:02 +0800 Subject: [PATCH] [Douyutv]Use UUID to make correct did I'm not sure that lapi 403 error is caused by random string. Just try to make correct did by UUID module. --- src/you_get/extractors/douyutv.py | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/you_get/extractors/douyutv.py b/src/you_get/extractors/douyutv.py index 6587efe9..8cff3820 100644 --- a/src/you_get/extractors/douyutv.py +++ b/src/you_get/extractors/douyutv.py @@ -6,8 +6,7 @@ from ..common import * import json import hashlib import time -import random -import string +import uuid import urllib.parse, urllib.request def douyutv_download(url, output_dir = '.', merge = True, info_only = False, **kwargs): @@ -28,7 +27,7 @@ def douyutv_download(url, output_dir = '.', merge = True, info_only = False, **k raise ValueError("The live stream is not online! (Errno:%s)" % server_status) tt = int(time.time() / 60) - did = ''.join([random.choice(string.ascii_uppercase + string.digits) for n in range(32)]) + did = uuid.uuid4().hex.upper() sign_content = '{room_id}{did}A12Svb&%1UUmf@hC{tt}'.format(room_id = room_id, did = did, tt = tt) sign = hashlib.md5(sign_content.encode('utf-8')).hexdigest() @@ -37,10 +36,9 @@ def douyutv_download(url, output_dir = '.', merge = True, info_only = False, **k postdata = urllib.parse.urlencode(payload) req = urllib.request.Request(json_request_url, postdata.encode('utf-8')) with urllib.request.urlopen(req) as response: - the_page = response.read() + content = response.read() - content = json.loads(the_page.decode('utf-8')) - data = content['data'] + data = json.loads(content.decode('utf-8'))['data'] server_status = data.get('error',0) if server_status is not 0: raise ValueError("Server returned error:%s" % server_status) @@ -49,7 +47,7 @@ def douyutv_download(url, output_dir = '.', merge = True, info_only = False, **k print_info(site_info, title, 'flv', float('inf')) if not info_only: - download_url_ffmpeg(real_url, title, 'flv', None, output_dir, merge = merge) + download_url_ffmpeg(real_url, title, 'flv', {}, output_dir, merge = merge) site_info = "douyu.com" download = douyutv_download