diff --git a/server/entertainment_decider/extractors/generic.py b/server/entertainment_decider/extractors/generic.py index 45ace9b..402d03d 100644 --- a/server/entertainment_decider/extractors/generic.py +++ b/server/entertainment_decider/extractors/generic.py @@ -139,7 +139,7 @@ class GeneralExtractor(Generic[E, T]): return object def update_object(self, object: E, check_cache_expired: bool = True) -> E: - if object.last_updated and check_cache_expired and not self._cache_expired(object.last_updated): + if object.was_extracted and check_cache_expired and not self._cache_expired(object.last_updated): return object data = self._extract_online(object.uri) logging.debug(f"Updating info for media: {data!r}") diff --git a/server/entertainment_decider/models.py b/server/entertainment_decider/models.py index 7ca9e43..99071cd 100644 --- a/server/entertainment_decider/models.py +++ b/server/entertainment_decider/models.py @@ -124,9 +124,9 @@ class MediaElement(db.Entity): notes: str = orm.Optional(str) release_date: datetime = orm.Optional(datetime) - extractor_name: str = orm.Required(str) - extractor_key: str = orm.Required(str) - orm.composite_key(extractor_name, extractor_key) + extractor_name: str = orm.Optional(str) + extractor_key: str = orm.Optional(str) + orm.composite_index(extractor_name, extractor_key) last_updated: datetime = orm.Optional(datetime) watched: bool = orm.Required(bool, default=False) @@ -138,6 +138,10 @@ class MediaElement(db.Entity): uris: Iterable[MediaUriMapping] = orm.Set(lambda: MediaUriMapping) collection_links: Iterable[MediaCollectionLink] = orm.Set(lambda: MediaCollectionLink) + @property + def was_extracted(self) -> bool: + return self.last_updated is not None + @property def left_length(self) -> int: return self.length - self.progress @@ -234,9 +238,9 @@ class MediaCollection(db.Entity): notes: str = orm.Optional(str) release_date: datetime = orm.Optional(datetime) - extractor_name: str = orm.Required(str) - extractor_key: str = orm.Required(str) - orm.composite_key(extractor_name, extractor_key) + extractor_name: str = orm.Optional(str) + extractor_key: str = orm.Optional(str) + orm.composite_index(extractor_name, extractor_key) last_updated: datetime = orm.Optional(datetime) keep_updated: bool = orm.Required(bool, default=False) @@ -249,6 +253,10 @@ class MediaCollection(db.Entity): uris: Iterable[CollectionUriMapping] = orm.Set(lambda: CollectionUriMapping) media_links: Iterable[MediaCollectionLink] = orm.Set(MediaCollectionLink) + @property + def was_extracted(self) -> bool: + return self.last_updated is not None + @property def next_episode(self) -> Optional[MediaCollectionLink]: #return orm \