mirror of
https://github.com/yt-dlp/yt-dlp.git
synced 2025-12-06 06:45:00 +01:00
supports old mode
This commit is contained in:
parent
2c871bbacf
commit
4f7ca718f2
1 changed files with 14 additions and 7 deletions
|
|
@ -2,6 +2,7 @@ import datetime as dt
|
|||
import functools
|
||||
import itertools
|
||||
import json
|
||||
import re
|
||||
|
||||
from .common import InfoExtractor, SearchInfoExtractor
|
||||
from ..networking.exceptions import HTTPError
|
||||
|
|
@ -720,21 +721,27 @@ class NicovideoSearchBaseIE(InfoExtractor):
|
|||
def _entries(self, url, item_id, query=None, note='Downloading page %(page)s'):
|
||||
query = query or {}
|
||||
pages = [query['page']] if 'page' in query else itertools.count(1)
|
||||
is_old = False
|
||||
for page_num in pages:
|
||||
query['page'] = str(page_num)
|
||||
webpage = self._download_webpage(url, item_id, query=query, note=note % {'page': page_num})
|
||||
|
||||
server_response = self._search_regex(r'<meta\s+name=["\']server-response["\']\s+content=["\']([^"\']+)["\']', webpage, 'videos json')
|
||||
sr_json = self._parse_json(unescapeHTML(server_response), 'search response') or {}
|
||||
results = traverse_obj(
|
||||
sr_json,
|
||||
('data', 'response', '$getSearchVideoV2', 'data', 'items', ..., ('id')),
|
||||
) or []
|
||||
results = re.findall(r'(?<=data-video-id=)["\']?(?P<videoid>.*?)(?=["\'])', webpage)
|
||||
has_next = None
|
||||
if results:
|
||||
is_old = True
|
||||
if not is_old:
|
||||
server_response = self._search_regex(r'<meta\s+name=["\']server-response["\']\s+content=["\']([^"\']+)["\']', webpage, 'videos json', fatal=False)
|
||||
sr_json = self._parse_json(unescapeHTML(server_response) or '{}', 'search response') or {}
|
||||
results = traverse_obj(
|
||||
sr_json,
|
||||
('data', 'response', '$getSearchVideoV2', 'data', 'items', ..., ('id')),
|
||||
) or []
|
||||
has_next = traverse_obj(sr_json, ('data', 'response', '$getSearchVideoV2', 'data', 'hasNext'), default=None)
|
||||
|
||||
for item in results:
|
||||
yield self.url_result(f'https://www.nicovideo.jp/watch/{item}', 'Niconico', item)
|
||||
|
||||
has_next = traverse_obj(sr_json, ('data', 'response', '$getSearchVideoV2', 'data', 'hasNext'), default=None)
|
||||
if has_next is not None and has_next is False:
|
||||
break
|
||||
if not results:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue