mirror of
https://github.com/yt-dlp/yt-dlp.git
synced 2025-05-20 17:45:45 -05:00
[ie/nebula] Support --mark-watched
(#13120)
Authored by: GeoffreyFrogeye
This commit is contained in:
parent
f475e8b529
commit
20f288bdc2
1 changed files with 13 additions and 1 deletions
|
@ -3,6 +3,7 @@
|
||||||
|
|
||||||
from .art19 import Art19IE
|
from .art19 import Art19IE
|
||||||
from .common import InfoExtractor
|
from .common import InfoExtractor
|
||||||
|
from ..networking import PATCHRequest
|
||||||
from ..networking.exceptions import HTTPError
|
from ..networking.exceptions import HTTPError
|
||||||
from ..utils import (
|
from ..utils import (
|
||||||
ExtractorError,
|
ExtractorError,
|
||||||
|
@ -74,7 +75,7 @@ def _extract_formats(self, content_id, slug):
|
||||||
'app_version': '23.10.0',
|
'app_version': '23.10.0',
|
||||||
'platform': 'ios',
|
'platform': 'ios',
|
||||||
})
|
})
|
||||||
return {'formats': fmts, 'subtitles': subs}
|
break
|
||||||
except ExtractorError as e:
|
except ExtractorError as e:
|
||||||
if isinstance(e.cause, HTTPError) and e.cause.status == 401:
|
if isinstance(e.cause, HTTPError) and e.cause.status == 401:
|
||||||
self.raise_login_required()
|
self.raise_login_required()
|
||||||
|
@ -84,6 +85,9 @@ def _extract_formats(self, content_id, slug):
|
||||||
continue
|
continue
|
||||||
raise
|
raise
|
||||||
|
|
||||||
|
self.mark_watched(content_id, slug)
|
||||||
|
return {'formats': fmts, 'subtitles': subs}
|
||||||
|
|
||||||
def _extract_video_metadata(self, episode):
|
def _extract_video_metadata(self, episode):
|
||||||
channel_url = traverse_obj(
|
channel_url = traverse_obj(
|
||||||
episode, (('channel_slug', 'class_slug'), {urljoin('https://nebula.tv/')}), get_all=False)
|
episode, (('channel_slug', 'class_slug'), {urljoin('https://nebula.tv/')}), get_all=False)
|
||||||
|
@ -111,6 +115,13 @@ def _extract_video_metadata(self, episode):
|
||||||
'uploader_url': channel_url,
|
'uploader_url': channel_url,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def _mark_watched(self, content_id, slug):
|
||||||
|
self._call_api(
|
||||||
|
PATCHRequest(f'https://content.api.nebula.app/{content_id.split(":")[0]}s/{content_id}/progress/'),
|
||||||
|
slug, 'Marking watched', 'Unable to mark watched', fatal=False,
|
||||||
|
data=json.dumps({'completed': True}).encode(),
|
||||||
|
headers={'content-type': 'application/json'})
|
||||||
|
|
||||||
|
|
||||||
class NebulaIE(NebulaBaseIE):
|
class NebulaIE(NebulaBaseIE):
|
||||||
IE_NAME = 'nebula:video'
|
IE_NAME = 'nebula:video'
|
||||||
|
@ -322,6 +333,7 @@ def _real_extract(self, url):
|
||||||
if not episode_url and metadata.get('premium'):
|
if not episode_url and metadata.get('premium'):
|
||||||
self.raise_login_required()
|
self.raise_login_required()
|
||||||
|
|
||||||
|
self.mark_watched(metadata['id'], slug)
|
||||||
if Art19IE.suitable(episode_url):
|
if Art19IE.suitable(episode_url):
|
||||||
return self.url_result(episode_url, Art19IE)
|
return self.url_result(episode_url, Art19IE)
|
||||||
return traverse_obj(metadata, {
|
return traverse_obj(metadata, {
|
||||||
|
|
Loading…
Reference in a new issue