[^?/]+)'
+ _PAGE_SIZE = 25
_TESTS = [{
'url': 'https://abema.tv/video/title/90-1597',
@@ -456,18 +447,39 @@ class AbemaTVTitleIE(AbemaTVBaseIE):
'title': 'çå¿ãå±ã~åã¨ã¹ã¿ã¼ã®ãªãã£ã¹ã»ã©ã!?~',
},
'playlist_mincount': 16,
+ }, {
+ 'url': 'https://abema.tv/video/title/25-102',
+ 'info_dict': {
+ 'id': '25-102',
+ 'title': 'ã½ã¼ãã¢ã¼ãã»ãªã³ã©ã¤ã³ ã¢ãªã·ã¼ã¼ã·ã§ã³',
+ },
+ 'playlist_mincount': 24,
}]
- def _real_extract(self, url):
- video_id = self._match_id(url)
- webpage = self._download_webpage(url, video_id)
+ def _fetch_page(self, playlist_id, series_version, page):
+ programs = self._call_api(
+ f'v1/video/series/{playlist_id}/programs', playlist_id,
+ note=f'Downloading page {page + 1}',
+ query={
+ 'seriesVersion': series_version,
+ 'offset': str(page * self._PAGE_SIZE),
+ 'order': 'seq',
+ 'limit': str(self._PAGE_SIZE),
+ })
+ yield from (
+ self.url_result(f'https://abema.tv/video/episode/{x}')
+ for x in traverse_obj(programs, ('programs', ..., 'id')))
- playlist_title, breadcrumb = None, self._extract_breadcrumb_list(webpage, video_id)
- if breadcrumb:
- playlist_title = breadcrumb[-1]
+ def _entries(self, playlist_id, series_version):
+ return OnDemandPagedList(
+ functools.partial(self._fetch_page, playlist_id, series_version),
+ self._PAGE_SIZE)
- playlist = [
- self.url_result(urljoin('https://abema.tv/', mobj.group(1)))
- for mobj in re.finditer(r'