From 3dd942804cf4786ee2fbccd0400f82fc9f2c9b66 Mon Sep 17 00:00:00 2001 From: pekophilia <67087811+pekophilia@users.noreply.github.com> Date: Sat, 25 Oct 2025 23:36:04 +0900 Subject: [PATCH 1/4] fix NicovideoSearchBaseIE --- yt_dlp/extractor/niconico.py | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/yt_dlp/extractor/niconico.py b/yt_dlp/extractor/niconico.py index 391eba2bea..8243c5f0d9 100644 --- a/yt_dlp/extractor/niconico.py +++ b/yt_dlp/extractor/niconico.py @@ -2,7 +2,6 @@ import datetime as dt import functools import itertools import json -import re from .common import InfoExtractor, SearchInfoExtractor from ..networking.exceptions import HTTPError @@ -22,6 +21,7 @@ from ..utils import ( str_or_none, time_seconds, truncate_string, + unescapeHTML, unified_timestamp, update_url_query, url_basename, @@ -721,11 +721,23 @@ class NicovideoSearchBaseIE(InfoExtractor): query = query or {} pages = [query['page']] if 'page' in query else itertools.count(1) for page_num in pages: - query['page'] = str(page_num) + current_page = query['page'] + page_num if isinstance(pages, list) else page_num + query['page'] = str(current_page) webpage = self._download_webpage(url, item_id, query=query, note=note % {'page': page_num}) - results = re.findall(r'(?<=data-video-id=)["\']?(?P.*?)(?=["\'])', webpage) + + server_response = self._search_regex(r' Date: Sun, 26 Oct 2025 00:04:43 +0900 Subject: [PATCH 2/4] fix NicovideoTagURLIE test --- yt_dlp/extractor/niconico.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yt_dlp/extractor/niconico.py b/yt_dlp/extractor/niconico.py index 8243c5f0d9..ecc66ac245 100644 --- a/yt_dlp/extractor/niconico.py +++ b/yt_dlp/extractor/niconico.py @@ -834,7 +834,7 @@ class NicovideoTagURLIE(NicovideoSearchBaseIE): 'id': 'ドキュメンタリー淫夢', 'title': 'ドキュメンタリー淫夢', }, - 'playlist_mincount': 400, + 'playlist_mincount': 300, }] def _real_extract(self, url): From 2c871bbacfa7020be6f478ac56d2d01d12b0cc4f Mon Sep 17 00:00:00 2001 From: pekophilia <67087811+pekophilia@users.noreply.github.com> Date: Sun, 26 Oct 2025 00:44:05 +0900 Subject: [PATCH 3/4] fix --- yt_dlp/extractor/niconico.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/yt_dlp/extractor/niconico.py b/yt_dlp/extractor/niconico.py index ecc66ac245..5b3a7e45ff 100644 --- a/yt_dlp/extractor/niconico.py +++ b/yt_dlp/extractor/niconico.py @@ -721,8 +721,7 @@ class NicovideoSearchBaseIE(InfoExtractor): query = query or {} pages = [query['page']] if 'page' in query else itertools.count(1) for page_num in pages: - current_page = query['page'] + page_num if isinstance(pages, list) else page_num - query['page'] = str(current_page) + 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' Date: Sun, 26 Oct 2025 01:12:57 +0900 Subject: [PATCH 4/4] supports old mode --- yt_dlp/extractor/niconico.py | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/yt_dlp/extractor/niconico.py b/yt_dlp/extractor/niconico.py index 5b3a7e45ff..fa18858b30 100644 --- a/yt_dlp/extractor/niconico.py +++ b/yt_dlp/extractor/niconico.py @@ -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'.*?)(?=["\'])', webpage) + has_next = None + if results: + is_old = True + if not is_old: + server_response = self._search_regex(r'