From d45882f9ec405e9f3ee8423183e0ef38e6e63dd5 Mon Sep 17 00:00:00 2001 From: Dreu LaVelle Date: Mon, 2 Sep 2024 01:05:33 -0500 Subject: [PATCH] fix: fixed completed items being added to queue on startup --- src/program/db/db_functions.py | 5 +++++ src/program/state_transition.py | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/src/program/db/db_functions.py b/src/program/db/db_functions.py index a1c28573..09d99b72 100644 --- a/src/program/db/db_functions.py +++ b/src/program/db/db_functions.py @@ -258,6 +258,11 @@ def _store_item(item: "MediaItem"): with db.Session() as session: _check_for_and_run_insertion_required(session, item) +def _imdb_exists_in_db(imdb_id: str) -> bool: + from program.media.item import MediaItem + with db.Session() as session: + return session.execute(select(func.count(MediaItem._id)).where(MediaItem.imdb_id == imdb_id)).scalar_one() != 0 + def _get_item_from_db(session, item: "MediaItem"): from program.media.item import MediaItem, Movie, Show, Season, Episode if not _ensure_item_exists_in_db(item): diff --git a/src/program/state_transition.py b/src/program/state_transition.py index d0762150..7b479229 100644 --- a/src/program/state_transition.py +++ b/src/program/state_transition.py @@ -10,6 +10,7 @@ from program.symlink import Symlinker from program.types import ProcessedEvent, Service from program.updaters import Updater +from program.db.db_functions import _imdb_exists_in_db from utils.logger import logger from program.settings.manager import settings_manager @@ -24,6 +25,9 @@ def process_event(existing_item: MediaItem | None, emitted_by: Service, item: Me source_services = (Overseerr, PlexWatchlist, Listrr, Mdblist, SymlinkLibrary, TraktContent) if emitted_by in source_services or item.state in [States.Requested]: next_service = TraktIndexer + if _imdb_exists_in_db(item.imdb_id): + logger.debug(f"Item {item.log_string} already exists in the database.") + return no_further_processing if isinstance(item, Season): item = item.parent existing_item = existing_item.parent if existing_item else None