From 0895e98265ec8cf19191b91e476845a04d9e1ed7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9F=AF=E9=9D=9E?= Date: Thu, 20 Oct 2016 23:48:36 +0800 Subject: [PATCH] fix #1436 --- src/you_get/extractors/bilibili.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/you_get/extractors/bilibili.py b/src/you_get/extractors/bilibili.py index c18290b8..e1eb957d 100644 --- a/src/you_get/extractors/bilibili.py +++ b/src/you_get/extractors/bilibili.py @@ -121,8 +121,22 @@ def bilibili_download(url, output_dir='.', merge=True, info_only=False, **kwargs if re.match(r'https?://bangumi\.bilibili\.com/', url): # quick hack for bangumi URLs - url = r1(r'"([^"]+)" class="v-av-link"', html) - html = get_content(url) + #url = r1(r'"([^"]+)" class="v-av-link"', html) + #html = get_content(url) + from urllib import parse + from urllib.request import Request, urlopen + import zlib + + episode_id = r1(r'episode-id="(\d+)"', html) + data = parse.urlencode({'episode_id':episode_id}) + r = Request('http://bangumi.bilibili.com/web_api/get_source', headers=fake_headers) + response = urlopen(r, data=data.encode('UTF-8')) + + if response.headers.get('Content-Encoding') == 'gzip': + get_cid = zlib.decompress(response.read(), 16+zlib.MAX_WBITS).decode('UTF-8') + else: + get_cid = response.read().decode('UTF-8') + html += get_cid.replace('"', '').replace(':', '=') title = r1_of([r'', r']*>\s*([^<>]+)\s*'], html)