TVMaze: Auto remove older episodes

master
Felix Stupp 1 year ago
parent 4d7b3a09ab
commit 159e8842e4
Signed by: zocker
GPG Key ID: 93E1BD26F6B02FB7

@ -8,6 +8,7 @@ from typing import (
Callable,
Mapping,
Optional,
Set,
TypeVar,
)
@ -130,6 +131,17 @@ class CollectionExtractor(GeneralExtractor[MediaCollection, T]):
)
return element
def _remove_older_episodes(
self,
collection: MediaCollection,
current_set: Set[MediaElement],
) -> None:
all_set = {link.element for link in collection.media_links}
missing_set = all_set - current_set
for elem in missing_set:
if not elem.skip_over:
elem.delete()
def _sort_episodes(self, coll: MediaCollection) -> None:
sorting_methods: Mapping[int, Callable[[MediaCollectionLink], Any]] = {
1: lambda l: l.element.release_date,

@ -137,7 +137,7 @@ class TvmazeCollectionExtractor(CollectionExtractor[TvmazeShowEmbedded]):
for episode in data["_embedded"]["episodes"]:
if episode["airstamp"] is not None:
add_embedding(episode, "show", data)
self._inject_episode(
elem = self._inject_episode(
collection=object,
data=ExtractedDataOnline[TvmazeEpisodeEmbedded](
extractor_name="tvmaze",
@ -148,4 +148,10 @@ class TvmazeCollectionExtractor(CollectionExtractor[TvmazeShowEmbedded]):
season=episode["season"],
episode=episode["number"],
)
if elem is not None:
elem_set.add(elem)
self._remove_older_episodes(
collection=object,
current_set=elem_set,
)
return ChangedReport.ChangedSome # TODO improve

Loading…
Cancel
Save