From 1d45e30537bf83e069184a440703e4c43b2e0198 Mon Sep 17 00:00:00 2001 From: Snack Date: Mon, 7 Apr 2025 08:24:58 +0900 Subject: [PATCH] [ie/niconico:live] Fix extractor (#12809) Closes #12365 Authored by: Snack-X --- yt_dlp/downloader/niconico.py | 1 + yt_dlp/extractor/niconico.py | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/yt_dlp/downloader/niconico.py b/yt_dlp/downloader/niconico.py index 462c6e2d6..310144e7d 100644 --- a/yt_dlp/downloader/niconico.py +++ b/yt_dlp/downloader/niconico.py @@ -85,6 +85,7 @@ class NiconicoLiveFD(FileDownloader): 'quality': live_quality, 'protocol': 'hls+fmp4', 'latency': live_latency, + 'accessRightMethod': 'single_cookie', 'chasePlay': False, }, 'room': { diff --git a/yt_dlp/extractor/niconico.py b/yt_dlp/extractor/niconico.py index 62dd0ab9c..5e66aebeb 100644 --- a/yt_dlp/extractor/niconico.py +++ b/yt_dlp/extractor/niconico.py @@ -27,6 +27,7 @@ from ..utils import ( traverse_obj, try_get, unescapeHTML, + unified_timestamp, update_url_query, url_basename, url_or_none, @@ -985,6 +986,7 @@ class NiconicoLiveIE(InfoExtractor): 'quality': 'abr', 'protocol': 'hls+fmp4', 'latency': latency, + 'accessRightMethod': 'single_cookie', 'chasePlay': False, }, 'room': { @@ -1005,6 +1007,7 @@ class NiconicoLiveIE(InfoExtractor): if data.get('type') == 'stream': m3u8_url = data['data']['uri'] qualities = data['data']['availableQualities'] + cookies = data['data']['cookies'] break elif data.get('type') == 'disconnect': self.write_debug(recv) @@ -1043,6 +1046,11 @@ class NiconicoLiveIE(InfoExtractor): **res, }) + for cookie in cookies: + self._set_cookie( + cookie['domain'], cookie['name'], cookie['value'], + expire_time=unified_timestamp(cookie['expires']), path=cookie['path'], secure=cookie['secure']) + formats = self._extract_m3u8_formats(m3u8_url, video_id, ext='mp4', live=True) for fmt, q in zip(formats, reversed(qualities[1:])): fmt.update({