From 258d66c45fd202da28abbdd56b389ac70c9bc4d9 Mon Sep 17 00:00:00 2001 From: morpheus65535 Date: Sun, 10 Oct 2021 22:59:03 -0400 Subject: [PATCH] WIP --- bazarr/indexer/file_watcher.py | 6 ++++-- bazarr/indexer/movies/local/movies_indexer.py | 21 ++++++++++++++++--- bazarr/indexer/series/local/series_indexer.py | 10 ++++++--- bazarr/list_subtitles.py | 2 +- 4 files changed, 30 insertions(+), 9 deletions(-) diff --git a/bazarr/indexer/file_watcher.py b/bazarr/indexer/file_watcher.py index b9fd1bac0..98513dc1f 100644 --- a/bazarr/indexer/file_watcher.py +++ b/bazarr/indexer/file_watcher.py @@ -223,8 +223,10 @@ class FileWatcher: def start(self): logging.info('BAZARR is starting file system watchers...') - self.series_observer.start() - self.movies_observer.start() + if settings.general.getboolean('use_series'): + self.series_observer.start() + if settings.general.getboolean('use_movies'): + self.movies_observer.start() self.config() logging.info('BAZARR is watching for file system changes.') diff --git a/bazarr/indexer/movies/local/movies_indexer.py b/bazarr/indexer/movies/local/movies_indexer.py index e9727c503..a99642e3d 100644 --- a/bazarr/indexer/movies/local/movies_indexer.py +++ b/bazarr/indexer/movies/local/movies_indexer.py @@ -5,7 +5,7 @@ import re import logging from indexer.tmdb_caching_proxy import tmdb from database import TableMoviesRootfolder, TableMovies -from event_handler import show_progress, hide_progress +from event_handler import event_stream, show_progress, hide_progress from indexer.video_prop_reader import video_prop_reader from indexer.tmdb_caching_proxy import tmdb_func_cache from indexer.utils import normalize_title, VIDEO_EXTENSION @@ -48,7 +48,7 @@ def list_movies_directories(root_dir_id): } ) finally: - return movies_directories + return sorted(movies_directories, key=lambda d: d['directory']) def get_movies_match(directory): @@ -188,7 +188,10 @@ def update_indexed_movies(): # delete removed movie form database if not os.path.exists(existing_movie['path']): TableMovies.delete().where(TableMovies.path == existing_movie['path']).execute() - # update existing episodes metadata + event_stream(type='movie', action='delete', payload=existing_movie['movieId']) + event_stream(type='movie-wanted', action='delete', payload=existing_movie['movieId']) + event_stream(type='badges') + # update existing movies metadata else: movie_metadata = get_movies_metadata(tmdbid=existing_movie['tmdbId'], root_dir_id=root_dir_id['rootId'], @@ -206,6 +209,9 @@ def update_indexed_movies(): existing_movie['movieId']).execute() store_subtitles_movie(existing_movie['path'], use_cache=settings.movies.getboolean('use_ffprobe_cache')) + event_stream(type='movie', action='update', payload=existing_movie['movieId']) + event_stream(type='movie-wanted', action='update', payload=existing_movie['movieId']) + event_stream(type='badges') existing_movies_iteration_number += 1 hide_progress(id="m2_updating_existing_subdirectories_movies") @@ -247,6 +253,15 @@ def update_indexed_movies(): if result: # once added to the db, we'll index existing subtitles and calculate the missing ones store_subtitles_movie(directory_metadata['path'], use_cache=False) + + movie_id = TableMovies.select(TableMovies.movieId)\ + .where(TableMovies.path == directory_metadata['path'])\ + .dicts()\ + .get() + + event_stream(type='movie', action='update', payload=movie_id['movieId']) + event_stream(type='movie-wanted', action='update', payload=movie_id['movieId']) + event_stream(type='badges') root_dir_subdirectories_iteration_number += 1 hide_progress(id="m2_adding_new_subdirectories_movies") hide_progress(id="m1_indexing_root_dirs") diff --git a/bazarr/indexer/series/local/series_indexer.py b/bazarr/indexer/series/local/series_indexer.py index 319b97cfa..a861dc300 100644 --- a/bazarr/indexer/series/local/series_indexer.py +++ b/bazarr/indexer/series/local/series_indexer.py @@ -5,7 +5,7 @@ import re import logging from indexer.tmdb_caching_proxy import tmdb from database import TableShowsRootfolder, TableShows -from event_handler import show_progress, hide_progress +from event_handler import event_stream, show_progress, hide_progress from indexer.tmdb_caching_proxy import tmdb_func_cache from indexer.utils import normalize_title from .episodes_indexer import update_series_episodes @@ -46,7 +46,7 @@ def list_series_directories(root_dir): } ) finally: - return series_directories + return sorted(series_directories, key=lambda d: d['directory']) def get_series_match(directory): @@ -150,12 +150,14 @@ def update_indexed_series(): existing_subdirectories_len = len(existing_subdirectories) existing_subdirectories_iteration_number = 0 for existing_subdirectory in existing_subdirectories: + show_metadata = TableShows.select().where(TableShows.path == existing_subdirectory).dicts().get() + # delete removed series from database if not os.path.exists(existing_subdirectory): TableShows.delete().where(TableShows.path == existing_subdirectory).execute() + event_stream(type='series', action='delete', payload=show_metadata['seriesId']) # update existing series metadata else: - show_metadata = TableShows.select().where(TableShows.path == existing_subdirectory).dicts().get() directory_metadata = get_series_metadata(show_metadata['tmdbId'], root_dir_id['rootId']) if directory_metadata: show_progress( @@ -170,6 +172,7 @@ def update_indexed_series(): .where(TableShows.tmdbId == show_metadata['tmdbId'])\ .execute() if result: + event_stream(type='series', action='update', payload=show_metadata['seriesId']) update_series_episodes(seriesId=show_metadata['seriesId'], use_cache=settings.series.getboolean('use_ffprobe_cache')) existing_subdirectories_iteration_number += 1 @@ -207,6 +210,7 @@ def update_indexed_series(): f'"{directory_metadata["path"]}". The exception encountered is "{e}".') else: if series_id: + event_stream(type='series', action='update', payload=series_id) # once added to the db, we'll check for episodes for this series update_series_episodes(seriesId=series_id, use_cache=False) new_directories_iteration_number += 1 diff --git a/bazarr/list_subtitles.py b/bazarr/list_subtitles.py index 275a20b1e..c1921859c 100644 --- a/bazarr/list_subtitles.py +++ b/bazarr/list_subtitles.py @@ -68,7 +68,7 @@ def store_subtitles(path, use_cache=True): except Exception as error: logging.debug("BAZARR unable to index this unrecognized language: %s (%s)", subtitle_language, error) - except Exception as e: + except Exception: logging.exception( "BAZARR error when trying to analyze this %s file: %s" % (os.path.splitext(path)[1], path)) try: