Hello community, here is the log from the commit of package you-get for openSUSE:Factory checked in at 2020-03-30 23:03:53 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/you-get (Old) and /work/SRC/openSUSE:Factory/.you-get.new.3160 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "you-get" Mon Mar 30 23:03:53 2020 rev:31 rq:789668 version:0.4.1432 Changes: -------- --- /work/SRC/openSUSE:Factory/you-get/you-get.changes 2020-03-24 22:34:56.661165283 +0100 +++ /work/SRC/openSUSE:Factory/.you-get.new.3160/you-get.changes 2020-03-30 23:03:56.208194749 +0200 @@ -1,0 +2,5 @@ +Mon Mar 30 08:11:03 UTC 2020 - [email protected] + +- Update to version 0.4.1432 (no changelog supplied) + +------------------------------------------------------------------- Old: ---- you-get-0.4.1423.tar.gz New: ---- you-get-0.4.1432.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ you-get.spec ++++++ --- /var/tmp/diff_new_pack.9SCZi0/_old 2020-03-30 23:03:57.152195286 +0200 +++ /var/tmp/diff_new_pack.9SCZi0/_new 2020-03-30 23:03:57.156195289 +0200 @@ -17,7 +17,7 @@ Name: you-get -Version: 0.4.1423 +Version: 0.4.1432 Release: 0 Summary: Dumb downloader that scrapes the web License: MIT ++++++ you-get-0.4.1423.tar.gz -> you-get-0.4.1432.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/you-get-0.4.1423/LICENSE.txt new/you-get-0.4.1432/LICENSE.txt --- old/you-get-0.4.1423/LICENSE.txt 2020-03-23 12:13:33.000000000 +0100 +++ new/you-get-0.4.1432/LICENSE.txt 2020-03-30 02:43:59.000000000 +0200 @@ -1,6 +1,7 @@ MIT License -Copyright (c) 2012-2019 Mort Yao <[email protected]> +Copyright (c) 2012-2020 Mort Yao <[email protected]> and other contributors + (https://github.com/soimort/you-get/graphs/contributors) Copyright (c) 2012 Boyu Guo <[email protected]> Permission is hereby granted, free of charge, to any person obtaining a copy diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/you-get-0.4.1423/src/you_get/extractors/baidu.py new/you-get-0.4.1432/src/you_get/extractors/baidu.py --- old/you-get-0.4.1423/src/you_get/extractors/baidu.py 2020-03-23 12:13:33.000000000 +0100 +++ new/you-get-0.4.1432/src/you_get/extractors/baidu.py 2020-03-30 02:43:59.000000000 +0200 @@ -112,15 +112,15 @@ time.sleep(5) download_urls([real_url], title, ext, size, output_dir, url, merge=merge, faker=True) - elif re.match(r'http://music.baidu.com/album/\d+', url): - id = r1(r'http://music.baidu.com/album/(\d+)', url) + elif re.match(r'https?://music.baidu.com/album/\d+', url): + id = r1(r'https?://music.baidu.com/album/(\d+)', url) baidu_download_album(id, output_dir, merge, info_only) - elif re.match('http://music.baidu.com/song/\d+', url): - id = r1(r'http://music.baidu.com/song/(\d+)', url) + elif re.match('https?://music.baidu.com/song/\d+', url): + id = r1(r'https?://music.baidu.com/song/(\d+)', url) baidu_download_song(id, output_dir, merge, info_only) - elif re.match('http://tieba.baidu.com/', url): + elif re.match('https?://tieba.baidu.com/', url): try: # embedded videos embed_download(url, output_dir, merge=merge, info_only=info_only, **kwargs) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/you-get-0.4.1423/src/you_get/extractors/bilibili.py new/you-get-0.4.1432/src/you_get/extractors/bilibili.py --- old/you-get-0.4.1423/src/you_get/extractors/bilibili.py 2020-03-23 12:13:33.000000000 +0100 +++ new/you-get-0.4.1432/src/you_get/extractors/bilibili.py 2020-03-30 02:43:59.000000000 +0200 @@ -28,6 +28,8 @@ 'container': 'FLV', 'video_resolution': '360p', 'desc': '流畅 360P'}, # 'quality': 15? {'id': 'mp4', 'quality': 0}, + + {'id': 'jpg', 'quality': 0}, ] @staticmethod @@ -103,8 +105,8 @@ return 'https://api.bilibili.com/x/space/channel/video?mid=%s&cid=%s&pn=%s&ps=%s&order=0&jsonp=jsonp' % (mid, cid, pn, ps) @staticmethod - def bilibili_space_favlist_api(vmid, fid, pn=1, ps=100): - return 'https://api.bilibili.com/x/space/fav/arc?vmid=%s&fid=%s&pn=%s&ps=%s&order=0&jsonp=jsonp' % (vmid, fid, pn, ps) + def bilibili_space_favlist_api(fid, pn=1, ps=20): + return 'https://api.bilibili.com/x/v3/fav/resource/list?media_id=%s&pn=%s&ps=%s&order=mtime&type=0&tid=0&jsonp=jsonp' % (fid, pn, ps) @staticmethod def bilibili_space_video_api(mid, pn=1, ps=100): @@ -115,6 +117,10 @@ return 'https://api.vc.bilibili.com/clip/v1/video/detail?video_id=%s' % video_id @staticmethod + def bilibili_h_api(doc_id): + return 'https://api.vc.bilibili.com/link_draw/v1/doc/detail?doc_id=%s' % doc_id + + @staticmethod def url_size(url, faker=False, headers={},err_value=0): try: return url_size(url,faker,headers) @@ -132,10 +138,10 @@ # r'<h1 title="([^"]+)"') # redirect: watchlater - if re.match(r'https?://(www\.)?bilibili\.com/watchlater/#/av(\d+)', self.url): - avid = match1(self.url, r'/av(\d+)') + if re.match(r'https?://(www\.)?bilibili\.com/watchlater/#/(av(\d+)|BV(\S+)/?)', self.url): + avid = match1(self.url, r'/(av\d+)') or match1(self.url, r'/(BV\w+)') p = int(match1(self.url, r'/p(\d+)') or '1') - self.url = 'https://www.bilibili.com/video/av%s?p=%s' % (avid, p) + self.url = 'https://www.bilibili.com/video/%s?p=%s' % (avid, p) html_content = get_content(self.url, headers=self.bilibili_headers()) # redirect: bangumi/play/ss -> bangumi/play/ep @@ -161,6 +167,8 @@ sort = 'vc' elif re.match(r'https?://(www\.)?bilibili\.com/video/(av(\d+)|(BV(\S+)))', self.url): sort = 'video' + elif re.match(r'https?://h\.?bilibili\.com/(\d+)', self.url): + sort = 'h' else: self.download_playlist_by_url(self.url, **kwargs) return @@ -426,6 +434,24 @@ self.streams['mp4'] = {'container': container, 'size': size, 'src': [playurl]} + # h images + elif sort == 'h': + m = re.match(r'https?://h\.?bilibili\.com/(\d+)', self.url) + doc_id = m.group(1) + api_url = self.bilibili_h_api(doc_id) + api_content = get_content(api_url, headers=self.bilibili_headers()) + h_info = json.loads(api_content) + + urls = [] + for pic in h_info['data']['item']['pictures']: + img_src = pic['img_src'] + urls.append(img_src) + size = urls_size(urls) + + self.title = doc_id + container = 'jpg' # enforce JPG container + self.streams[container] = {'container': container, + 'size': size, 'src': urls} def prepare_by_cid(self,avid,cid,title,html_content,playinfo,playinfo_,url): #response for interaction video @@ -552,7 +578,7 @@ elif re.match(r'https?://(www\.)?bilibili\.com/bangumi/media/md(\d+)', self.url) or \ re.match(r'https?://bangumi\.bilibili\.com/anime/(\d+)', self.url): sort = 'bangumi_md' - elif re.match(r'https?://(www\.)?bilibili\.com/video/av(\d+)', self.url): + elif re.match(r'https?://(www\.)?bilibili\.com/video/(av(\d+)|BV(\S+))', self.url): sort = 'video' elif re.match(r'https?://space\.?bilibili\.com/(\d+)/channel/detail\?.*cid=(\d+)', self.url): sort = 'space_channel' @@ -679,20 +705,22 @@ elif sort == 'space_favlist': m = re.match(r'https?://space\.?bilibili\.com/(\d+)/favlist\?.*fid=(\d+)', self.url) vmid, fid = m.group(1), m.group(2) - api_url = self.bilibili_space_favlist_api(vmid, fid) + api_url = self.bilibili_space_favlist_api(fid) api_content = get_content(api_url, headers=self.bilibili_headers(referer=self.url)) favlist_info = json.loads(api_content) - pc = favlist_info['data']['pagecount'] - + pc = favlist_info['data']['info']['media_count'] // len(favlist_info['data']['medias']) + if favlist_info['data']['info']['media_count'] % len(favlist_info['data']['medias']) != 0: + pc += 1 for pn in range(1, pc + 1): - api_url = self.bilibili_space_favlist_api(vmid, fid, pn=pn) + log.w('Extracting %s of %s pages ...' % (pn, pc)) + api_url = self.bilibili_space_favlist_api(fid, pn=pn) api_content = get_content(api_url, headers=self.bilibili_headers(referer=self.url)) favlist_info = json.loads(api_content) - epn, i = len(favlist_info['data']['archives']), 0 - for video in favlist_info['data']['archives']: + epn, i = len(favlist_info['data']['medias']), 0 + for video in favlist_info['data']['medias']: i += 1; log.w('Extracting %s of %s videos ...' % (i, epn)) - url = 'https://www.bilibili.com/video/av%s' % video['aid'] + url = 'https://www.bilibili.com/video/av%s' % video['id'] self.__class__().download_playlist_by_url(url, **kwargs) elif sort == 'space_video': diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/you-get-0.4.1423/src/you_get/version.py new/you-get-0.4.1432/src/you_get/version.py --- old/you-get-0.4.1423/src/you_get/version.py 2020-03-23 12:13:33.000000000 +0100 +++ new/you-get-0.4.1432/src/you_get/version.py 2020-03-30 02:43:59.000000000 +0200 @@ -1,4 +1,4 @@ #!/usr/bin/env python script_name = 'you-get' -__version__ = '0.4.1423' +__version__ = '0.4.1432' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/you-get-0.4.1423/tests/test.py new/you-get-0.4.1432/tests/test.py --- old/you-get-0.4.1423/tests/test.py 2020-03-23 12:13:33.000000000 +0100 +++ new/you-get-0.4.1432/tests/test.py 2020-03-30 02:43:59.000000000 +0200 @@ -7,7 +7,8 @@ magisto, youtube, missevan, - acfun + acfun, + bilibili ) @@ -37,5 +38,12 @@ def test_acfun(self): acfun.download('https://www.acfun.cn/v/ac11701912', info_only=True) + def test_bilibil(self): + bilibili.download( + "https://www.bilibili.com/watchlater/#/BV1PE411q7mZ/p6", info_only=True + ) + bilibili.download( + "https://www.bilibili.com/watchlater/#/av74906671/p6", info_only=True + ) if __name__ == '__main__': unittest.main() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/you-get-0.4.1423/you-get.json new/you-get-0.4.1432/you-get.json --- old/you-get-0.4.1423/you-get.json 2020-03-23 12:13:33.000000000 +0100 +++ new/you-get-0.4.1432/you-get.json 2020-03-30 02:43:59.000000000 +0200 @@ -18,14 +18,13 @@ "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3 :: Only", - "Programming Language :: Python :: 3.0", - "Programming Language :: Python :: 3.1", "Programming Language :: Python :: 3.2", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", "Topic :: Internet", "Topic :: Internet :: WWW/HTTP", "Topic :: Multimedia",
