supports old mode

This commit is contained in:
pekophilia 2025-10-26 01:12:57 +09:00
parent 2c871bbacf
commit 4f7ca718f2

View file

@ -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: