[nebula] Reduce calls to mark_watched

This commit is contained in:
Geoffrey “Frogeye” Preud'homme
2025-05-12 19:09:06 +02:00
parent 7b264c19ef
commit 75c20eb0bf
+5 -5
View File
@@ -75,7 +75,7 @@ class NebulaBaseIE(InfoExtractor):
'app_version': '23.10.0',
'platform': 'ios',
})
return {'formats': fmts, 'subtitles': subs}
break
except ExtractorError as e:
if isinstance(e.cause, HTTPError) and e.cause.status == 401:
self.raise_login_required()
@@ -85,6 +85,9 @@ class NebulaBaseIE(InfoExtractor):
continue
raise
self.mark_watched(content_id, slug)
return {'formats': fmts, 'subtitles': subs}
def _extract_video_metadata(self, episode):
channel_url = traverse_obj(
episode, (('channel_slug', 'class_slug'), {urljoin('https://nebula.tv/')}), get_all=False)
@@ -229,7 +232,6 @@ class NebulaIE(NebulaBaseIE):
slug = self._match_id(url)
url, smuggled_data = unsmuggle_url(url, {})
if smuggled_data.get('id'):
self.mark_watched(smuggled_data['id'], slug)
return {
'id': smuggled_data['id'],
'display_id': slug,
@@ -240,7 +242,6 @@ class NebulaIE(NebulaBaseIE):
metadata = self._call_api(
f'https://content.api.nebula.app/content/videos/{slug}',
slug, note='Fetching video metadata')
self.mark_watched(metadata['id'], slug)
return {
**self._extract_video_metadata(metadata),
**self._extract_formats(metadata['id'], slug),
@@ -311,7 +312,6 @@ class NebulaClassIE(NebulaBaseIE):
slug, episode = self._match_valid_url(url).group('id', 'ep')
url, smuggled_data = unsmuggle_url(url, {})
if smuggled_data.get('id'):
self.mark_watched(smuggled_data['id'], slug)
return {
'id': smuggled_data['id'],
'display_id': slug,
@@ -322,7 +322,6 @@ class NebulaClassIE(NebulaBaseIE):
metadata = self._call_api(
f'https://content.api.nebula.app/content/{slug}/{episode}/?include=lessons',
slug, note='Fetching class/podcast metadata')
self.mark_watched(metadata['id'], slug)
content_type = metadata.get('type')
if content_type == 'lesson':
return {
@@ -334,6 +333,7 @@ class NebulaClassIE(NebulaBaseIE):
if not episode_url and metadata.get('premium'):
self.raise_login_required()
self.mark_watched(metadata['id'], slug)
if Art19IE.suitable(episode_url):
return self.url_result(episode_url, Art19IE)
return traverse_obj(metadata, {