mirror of
https://github.com/yt-dlp/yt-dlp
synced 2025-01-31 04:22:25 +01:00
[ie/bilibili] Support space /lists/
URLs (#11964)
Closes #11959 Authored by: c-basalt
This commit is contained in:
parent
ff44ed5306
commit
4651679104
1 changed files with 31 additions and 12 deletions
|
@ -1300,30 +1300,43 @@ class BilibiliSpaceListBaseIE(BilibiliSpaceBaseIE):
|
||||||
|
|
||||||
|
|
||||||
class BilibiliCollectionListIE(BilibiliSpaceListBaseIE):
|
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 = [{
|
_TESTS = [{
|
||||||
'url': 'https://space.bilibili.com/2142762/channel/collectiondetail?sid=57445',
|
'url': 'https://space.bilibili.com/2142762/lists/3662502?type=season',
|
||||||
'info_dict': {
|
'info_dict': {
|
||||||
'id': '2142762_57445',
|
'id': '2142762_3662502',
|
||||||
'title': '【完结】《底特律 变人》全结局流程解说',
|
'title': '合集·《黑神话悟空》流程解说',
|
||||||
'description': '',
|
'description': '黑神话悟空 相关节目',
|
||||||
'uploader': '老戴在此',
|
'uploader': '老戴在此',
|
||||||
'uploader_id': '2142762',
|
'uploader_id': '2142762',
|
||||||
'timestamp': int,
|
'timestamp': int,
|
||||||
'upload_date': str,
|
'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):
|
def _real_extract(self, url):
|
||||||
mid, sid = self._match_valid_url(url).group('mid', 'sid')
|
mid, sid = self._match_valid_url(url).group('mid', 'sid')
|
||||||
playlist_id = f'{mid}_{sid}'
|
playlist_id = f'{mid}_{sid}'
|
||||||
|
|
||||||
def fetch_page(page_idx):
|
def fetch_page(page_idx):
|
||||||
return self._download_json(
|
return self._download_json(
|
||||||
'https://api.bilibili.com/x/polymer/space/seasons_archives_list',
|
'https://api.bilibili.com/x/polymer/web-space/seasons_archives_list',
|
||||||
playlist_id, note=f'Downloading page {page_idx}',
|
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']
|
query={'mid': mid, 'season_id': sid, 'page_num': page_idx + 1, 'page_size': 30})['data']
|
||||||
|
|
||||||
def get_metadata(page_data):
|
def get_metadata(page_data):
|
||||||
|
@ -1350,9 +1363,12 @@ class BilibiliCollectionListIE(BilibiliSpaceListBaseIE):
|
||||||
|
|
||||||
|
|
||||||
class BilibiliSeriesListIE(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 = [{
|
_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': {
|
'info_dict': {
|
||||||
'id': '1958703906_547718',
|
'id': '1958703906_547718',
|
||||||
'title': '直播回放',
|
'title': '直播回放',
|
||||||
|
@ -1365,6 +1381,9 @@ class BilibiliSeriesListIE(BilibiliSpaceListBaseIE):
|
||||||
'modified_date': str,
|
'modified_date': str,
|
||||||
},
|
},
|
||||||
'playlist_mincount': 513,
|
'playlist_mincount': 513,
|
||||||
|
}, {
|
||||||
|
'url': 'https://space.bilibili.com/1958703906/channel/seriesdetail?sid=547718&ctype=0',
|
||||||
|
'only_matching': True,
|
||||||
}]
|
}]
|
||||||
|
|
||||||
def _real_extract(self, url):
|
def _real_extract(self, url):
|
||||||
|
@ -1383,7 +1402,7 @@ class BilibiliSeriesListIE(BilibiliSpaceListBaseIE):
|
||||||
def fetch_page(page_idx):
|
def fetch_page(page_idx):
|
||||||
return self._download_json(
|
return self._download_json(
|
||||||
'https://api.bilibili.com/x/series/archives',
|
'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']
|
query={'mid': mid, 'series_id': sid, 'pn': page_idx + 1, 'ps': 30})['data']
|
||||||
|
|
||||||
def get_metadata(page_data):
|
def get_metadata(page_data):
|
||||||
|
|
Loading…
Add table
Reference in a new issue