aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsqrtNOT <77981959+sqrtNOT@users.noreply.github.com>2023-04-25 10:21:06 +0000
committerGitHub <noreply@github.com>2023-04-25 19:21:06 +0900
commitc86e433c35fe5da6cb29f3539eef97497f84ed38 (patch)
tree3083850cf6513f46ea57570514d102a7f15d1ec6
parent9b30cd3dfce83c2f0201b28a7a3ef44ab9722664 (diff)
downloadhypervideo-pre-c86e433c35fe5da6cb29f3539eef97497f84ed38.tar.lz
hypervideo-pre-c86e433c35fe5da6cb29f3539eef97497f84ed38.tar.xz
hypervideo-pre-c86e433c35fe5da6cb29f3539eef97497f84ed38.zip
[extractor/NiconicoSeries] Fix extraction (#6898)
Authored by: sqrtNOT
-rw-r--r--yt_dlp/extractor/niconico.py13
1 files changed, 6 insertions, 7 deletions
diff --git a/yt_dlp/extractor/niconico.py b/yt_dlp/extractor/niconico.py
index cacefeb42..30b4d7216 100644
--- a/yt_dlp/extractor/niconico.py
+++ b/yt_dlp/extractor/niconico.py
@@ -660,10 +660,10 @@ class NiconicoPlaylistIE(NiconicoPlaylistBaseIE):
class NiconicoSeriesIE(InfoExtractor):
IE_NAME = 'niconico:series'
- _VALID_URL = r'https?://(?:(?:www\.|sp\.)?nicovideo\.jp|nico\.ms)/series/(?P<id>\d+)'
+ _VALID_URL = r'https?://(?:(?:www\.|sp\.)?nicovideo\.jp(?:/user/\d+)?|nico\.ms)/series/(?P<id>\d+)'
_TESTS = [{
- 'url': 'https://www.nicovideo.jp/series/110226',
+ 'url': 'https://www.nicovideo.jp/user/44113208/series/110226',
'info_dict': {
'id': '110226',
'title': 'ご立派ァ!のシリーズ',
@@ -683,7 +683,7 @@ class NiconicoSeriesIE(InfoExtractor):
def _real_extract(self, url):
list_id = self._match_id(url)
- webpage = self._download_webpage(f'https://www.nicovideo.jp/series/{list_id}', list_id)
+ webpage = self._download_webpage(url, list_id)
title = self._search_regex(
(r'<title>「(.+)(全',
@@ -691,10 +691,9 @@ class NiconicoSeriesIE(InfoExtractor):
webpage, 'title', fatal=False)
if title:
title = unescapeHTML(title)
- playlist = [
- self.url_result(f'https://www.nicovideo.jp/watch/{v_id}', video_id=v_id)
- for v_id in re.findall(r'data-href=[\'"](?:https://www\.nicovideo\.jp)?/watch/([a-z0-9]+)', webpage)]
- return self.playlist_result(playlist, list_id, title)
+ json_data = next(self._yield_json_ld(webpage, None, fatal=False))
+ return self.playlist_from_matches(
+ traverse_obj(json_data, ('itemListElement', ..., 'url')), list_id, title, ie=NiconicoIE)
class NiconicoHistoryIE(NiconicoPlaylistBaseIE):