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 functools
|
||||||
import itertools
|
import itertools
|
||||||
import json
|
import json
|
||||||
|
import re
|
||||||
|
|
||||||
from .common import InfoExtractor, SearchInfoExtractor
|
from .common import InfoExtractor, SearchInfoExtractor
|
||||||
from ..networking.exceptions import HTTPError
|
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'):
|
def _entries(self, url, item_id, query=None, note='Downloading page %(page)s'):
|
||||||
query = query or {}
|
query = query or {}
|
||||||
pages = [query['page']] if 'page' in query else itertools.count(1)
|
pages = [query['page']] if 'page' in query else itertools.count(1)
|
||||||
|
is_old = False
|
||||||
for page_num in pages:
|
for page_num in pages:
|
||||||
query['page'] = str(page_num)
|
query['page'] = str(page_num)
|
||||||
webpage = self._download_webpage(url, item_id, query=query, note=note % {'page': 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')
|
results = re.findall(r'(?<=data-video-id=)["\']?(?P<videoid>.*?)(?=["\'])', webpage)
|
||||||
sr_json = self._parse_json(unescapeHTML(server_response), 'search response') or {}
|
has_next = None
|
||||||
results = traverse_obj(
|
if results:
|
||||||
sr_json,
|
is_old = True
|
||||||
('data', 'response', '$getSearchVideoV2', 'data', 'items', ..., ('id')),
|
if not is_old:
|
||||||
) or []
|
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:
|
for item in results:
|
||||||
yield self.url_result(f'https://www.nicovideo.jp/watch/{item}', 'Niconico', item)
|
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:
|
if has_next is not None and has_next is False:
|
||||||
break
|
break
|
||||||
if not results:
|
if not results:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue