mirror of
				https://github.com/yt-dlp/yt-dlp.git
				synced 2025-10-31 06:35:12 +00:00 
			
		
		
		
	[ie/bilibili] Support space /lists/ URLs (#11964)
				
					
				
			Closes #11959 Authored by: c-basalt
This commit is contained in:
		| @@ -1300,30 +1300,43 @@ class BilibiliSpaceListBaseIE(BilibiliSpaceBaseIE): | ||||
| 
 | ||||
| 
 | ||||
| class BilibiliCollectionListIE(BilibiliSpaceListBaseIE): | ||||
|     _VALID_URL = r'https?://space\.bilibili\.com/(?P<mid>\d+)/channel/collectiondetail/?\?sid=(?P<sid>\d+)' | ||||
|     _VALID_URL = [ | ||||
|         r'https?://space\.bilibili\.com/(?P<mid>\d+)/channel/collectiondetail/?\?sid=(?P<sid>\d+)', | ||||
|         r'https?://space\.bilibili\.com/(?P<mid>\d+)/lists/(?P<sid>\d+)', | ||||
|     ] | ||||
|     _TESTS = [{ | ||||
|         'url': 'https://space.bilibili.com/2142762/channel/collectiondetail?sid=57445', | ||||
|         'url': 'https://space.bilibili.com/2142762/lists/3662502?type=season', | ||||
|         'info_dict': { | ||||
|             'id': '2142762_57445', | ||||
|             'title': '【完结】《底特律 变人》全结局流程解说', | ||||
|             'description': '', | ||||
|             'id': '2142762_3662502', | ||||
|             'title': '合集·《黑神话悟空》流程解说', | ||||
|             'description': '黑神话悟空 相关节目', | ||||
|             'uploader': '老戴在此', | ||||
|             'uploader_id': '2142762', | ||||
|             'timestamp': int, | ||||
|             'upload_date': str, | ||||
|             'thumbnail': 'https://archive.biliimg.com/bfs/archive/e0e543ae35ad3df863ea7dea526bc32e70f4c091.jpg', | ||||
|             'thumbnail': 'https://archive.biliimg.com/bfs/archive/22302e17dc849dd4533606d71bc89df162c3a9bf.jpg', | ||||
|         }, | ||||
|         'playlist_mincount': 31, | ||||
|         'playlist_mincount': 62, | ||||
|     }, { | ||||
|         'url': 'https://space.bilibili.com/2142762/lists/3662502', | ||||
|         'only_matching': True, | ||||
|     }, { | ||||
|         'url': 'https://space.bilibili.com/2142762/channel/collectiondetail?sid=57445', | ||||
|         'only_matching': True, | ||||
|     }] | ||||
| 
 | ||||
|     @classmethod | ||||
|     def suitable(cls, url): | ||||
|         return False if BilibiliSeriesListIE.suitable(url) else super().suitable(url) | ||||
| 
 | ||||
|     def _real_extract(self, url): | ||||
|         mid, sid = self._match_valid_url(url).group('mid', 'sid') | ||||
|         playlist_id = f'{mid}_{sid}' | ||||
| 
 | ||||
|         def fetch_page(page_idx): | ||||
|             return self._download_json( | ||||
|                 'https://api.bilibili.com/x/polymer/space/seasons_archives_list', | ||||
|                 playlist_id, note=f'Downloading page {page_idx}', | ||||
|                 'https://api.bilibili.com/x/polymer/web-space/seasons_archives_list', | ||||
|                 playlist_id, note=f'Downloading page {page_idx}', headers={'Referer': url}, | ||||
|                 query={'mid': mid, 'season_id': sid, 'page_num': page_idx + 1, 'page_size': 30})['data'] | ||||
| 
 | ||||
|         def get_metadata(page_data): | ||||
| @@ -1350,9 +1363,12 @@ class BilibiliCollectionListIE(BilibiliSpaceListBaseIE): | ||||
| 
 | ||||
| 
 | ||||
| class BilibiliSeriesListIE(BilibiliSpaceListBaseIE): | ||||
|     _VALID_URL = r'https?://space\.bilibili\.com/(?P<mid>\d+)/channel/seriesdetail/?\?\bsid=(?P<sid>\d+)' | ||||
|     _VALID_URL = [ | ||||
|         r'https?://space\.bilibili\.com/(?P<mid>\d+)/channel/seriesdetail/?\?\bsid=(?P<sid>\d+)', | ||||
|         r'https?://space\.bilibili\.com/(?P<mid>\d+)/lists/(?P<sid>\d+)/?\?(?:[^#]+&)?type=series(?:[&#]|$)', | ||||
|     ] | ||||
|     _TESTS = [{ | ||||
|         'url': 'https://space.bilibili.com/1958703906/channel/seriesdetail?sid=547718&ctype=0', | ||||
|         'url': 'https://space.bilibili.com/1958703906/lists/547718?type=series', | ||||
|         'info_dict': { | ||||
|             'id': '1958703906_547718', | ||||
|             'title': '直播回放', | ||||
| @@ -1365,6 +1381,9 @@ class BilibiliSeriesListIE(BilibiliSpaceListBaseIE): | ||||
|             'modified_date': str, | ||||
|         }, | ||||
|         'playlist_mincount': 513, | ||||
|     }, { | ||||
|         'url': 'https://space.bilibili.com/1958703906/channel/seriesdetail?sid=547718&ctype=0', | ||||
|         'only_matching': True, | ||||
|     }] | ||||
| 
 | ||||
|     def _real_extract(self, url): | ||||
| @@ -1383,7 +1402,7 @@ class BilibiliSeriesListIE(BilibiliSpaceListBaseIE): | ||||
|         def fetch_page(page_idx): | ||||
|             return self._download_json( | ||||
|                 'https://api.bilibili.com/x/series/archives', | ||||
|                 playlist_id, note=f'Downloading page {page_idx}', | ||||
|                 playlist_id, note=f'Downloading page {page_idx}', headers={'Referer': url}, | ||||
|                 query={'mid': mid, 'series_id': sid, 'pn': page_idx + 1, 'ps': 30})['data'] | ||||
| 
 | ||||
|         def get_metadata(page_data): | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 c-basalt
					c-basalt