diff --git a/src/you_get/extractors/bilibili.py b/src/you_get/extractors/bilibili.py index 59b9b07e..09e08ecb 100644 --- a/src/you_get/extractors/bilibili.py +++ b/src/you_get/extractors/bilibili.py @@ -165,9 +165,16 @@ class Bilibili(VideoExtractor): qq_download_by_vid(tc_flashvars, self.title, output_dir=kwargs['output_dir'], merge=kwargs['merge'], info_only=kwargs['info_only']) return - cid = re.search(r'cid=(\d+)', self.page).group(1) + has_plist = re.search(r'") if "1080p" in support_stream_id: stream_id = '1080p' elif "720p" in support_stream_id: diff --git a/src/you_get/extractors/qq.py b/src/you_get/extractors/qq.py index 537dffd2..438c1f24 100644 --- a/src/you_get/extractors/qq.py +++ b/src/you_get/extractors/qq.py @@ -36,13 +36,18 @@ def qq_download_by_vid(vid, title, output_dir='.', merge=True, info_only=False): part_info = get_content(key_api) key_json = json.loads(match1(part_info, r'QZOutputJson=(.*)')[:-1]) if key_json.get('key') is None: + vkey = video_json['vl']['vi'][0]['fvkey'] + url = '{}{}?vkey={}'.format(video_json['vl']['vi'][0]['ul']['ui'][0]['url'], fn_pre + '.mp4', vkey) + else: + vkey = key_json['key'] + url = '{}{}?vkey={}'.format(host, filename, vkey) + if not vkey: if part == 1: log.wtf(key_json['msg']) else: log.w(key_json['msg']) break - vkey = key_json['key'] - url = '{}{}?vkey={}'.format(host, filename, vkey) + part_urls.append(url) _, ext, size = url_info(url) total_size += size @@ -140,9 +145,13 @@ def qq_download(url, output_dir='.', merge=True, info_only=False, **kwargs): else: content = get_content(url) #vid = parse_qs(urlparse(url).query).get('vid') #for links specified vid like http://v.qq.com/cover/p/ps6mnfqyrfo7es3.html?vid=q0181hpdvo5 - vid = url.split('/')[-1].split('.')[0] #https://v.qq.com/x/cover/ps6mnfqyrfo7es3/q0181hpdvo5.html? + rurl = match1(content, r'') #https://v.qq.com/x/cover/9hpjiv5fhiyn86u/t0522x58xma.html + vid = "" + if rurl: + vid = rurl.split('/')[-1].split('.')[0] + vid = vid if vid else url.split('/')[-1].split('.')[0] #https://v.qq.com/x/cover/ps6mnfqyrfo7es3/q0181hpdvo5.html? vid = vid if vid else match1(content, r'vid"*\s*:\s*"\s*([^"]+)"') #general fallback - if vid is None: + if not vid: vid = match1(content, r'id"*\s*:\s*"(.+?)"') title = match1(content,r''%vid) title = match1(content, r'title">([^"]+)

') if not title else title diff --git a/src/you_get/extractors/youku.py b/src/you_get/extractors/youku.py index 0e0d7240..976ed447 100644 --- a/src/you_get/extractors/youku.py +++ b/src/you_get/extractors/youku.py @@ -78,7 +78,7 @@ class Youku(VideoExtractor): self.api_error_code = None self.api_error_msg = None - self.ccode = '0508' + self.ccode = '0512' self.utid = None def youku_ups(self): @@ -154,7 +154,7 @@ class Youku(VideoExtractor): log.wtf('Cannot fetch vid') if kwargs.get('src') and kwargs['src'] == 'tudou': - self.ccode = '0501' + self.ccode = '0512' if kwargs.get('password') and kwargs['password']: self.password_protected = True diff --git a/src/you_get/version.py b/src/you_get/version.py index 6301dbc8..e4420b84 100644 --- a/src/you_get/version.py +++ b/src/you_get/version.py @@ -1,4 +1,4 @@ #!/usr/bin/env python script_name = 'you-get' -__version__ = '0.4.995' +__version__ = '0.4.1011' diff --git a/tests/test.py b/tests/test.py index ca5d5ac7..d2cf4c40 100644 --- a/tests/test.py +++ b/tests/test.py @@ -48,18 +48,11 @@ class YouGetTests(unittest.TestCase): 'https://www.bilibili.com/video/av13228063/', info_only=True ) - def test_douyin(self): - douyin.download( - 'https://www.douyin.com/share/video/6492273288897629454', - info_only=True - ) - def test_netease(self): netease.download( 'http://v.ent.163.com/video/2017/12/9/V/VD5BG8P9V.html', info_only=True ) - if __name__ == '__main__': unittest.main()