From 698bca14b440b026edccea6cadf43fb1194fd5bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Louis=20V=C3=A9zina?= <5130500+morpheus65535@users.noreply.github.com> Date: Sat, 19 Oct 2019 16:37:40 -0400 Subject: [PATCH] Major fixes to database subsystem. --- bazarr/get_episodes.py | 6 +----- bazarr/get_movies.py | 3 --- bazarr/get_series.py | 2 +- bazarr/get_subtitle.py | 5 ----- bazarr/list_subtitles.py | 28 +++++++++++++++++++++------- bazarr/main.py | 14 +++----------- 6 files changed, 26 insertions(+), 32 deletions(-) diff --git a/bazarr/get_episodes.py b/bazarr/get_episodes.py index d7a91a4bc..4173fe4bd 100644 --- a/bazarr/get_episodes.py +++ b/bazarr/get_episodes.py @@ -16,8 +16,6 @@ from get_subtitle import episode_download_subtitles def update_all_episodes(): series_full_scan_subtitles() logging.info('BAZARR All existing episode subtitles indexed from disk.') - list_missing_subtitles() - logging.info('BAZARR All missing episode subtitles updated in database.') wal_cleaning() @@ -172,8 +170,7 @@ def sync_episodes(): added_episode ).on_conflict_ignore().execute() altered_episodes.append([added_episode['sonarr_episode_id'], - added_episode['path'], - added_episode['sonarr_series_id']]) + added_episode['path']]) # Remove old episodes from DB removed_episodes = list(set(current_episodes_db_list) - set(current_episodes_sonarr)) @@ -188,7 +185,6 @@ def sync_episodes(): notifications.write(msg='Indexing episodes embedded subtitles...', queue='get_episodes', item=i, length=len(altered_episodes)) store_subtitles(path_replace(altered_episode[1])) - list_missing_subtitles(altered_episode[2]) logging.debug('BAZARR All episodes synced from Sonarr into database.') diff --git a/bazarr/get_movies.py b/bazarr/get_movies.py index f39592db8..d8a54f56b 100644 --- a/bazarr/get_movies.py +++ b/bazarr/get_movies.py @@ -18,8 +18,6 @@ from database import TableMovies, wal_cleaning def update_all_movies(): movies_full_scan_subtitles() logging.info('BAZARR All existing movie subtitles indexed from disk.') - list_missing_subtitles_movies() - logging.info('BAZARR All missing movie subtitles updated in database.') wal_cleaning() @@ -269,7 +267,6 @@ def update_movies(): notifications.write(msg='Indexing movies embedded subtitles...', queue='get_movies', item=i, length=len(altered_movies)) store_subtitles_movie(path_replace_movie(altered_movie[1])) - list_missing_subtitles_movies(altered_movie[2]) logging.debug('BAZARR All movies synced from Radarr into database.') diff --git a/bazarr/get_series.py b/bazarr/get_series.py index fc56b5a67..eb8d2699c 100644 --- a/bazarr/get_series.py +++ b/bazarr/get_series.py @@ -156,7 +156,7 @@ def update_series(): TableShows.insert( added_series ).on_conflict_ignore().execute() - list_missing_subtitles(added_series['sonarr_series_id']) + list_missing_subtitles(no=added_series['sonarr_series_id']) # Remove old series from DB removed_series = list(set(current_shows_db_list) - set(current_shows_sonarr)) diff --git a/bazarr/get_subtitle.py b/bazarr/get_subtitle.py index 9207e6b9e..67adc7cf4 100644 --- a/bazarr/get_subtitle.py +++ b/bazarr/get_subtitle.py @@ -611,7 +611,6 @@ def series_download_subtitles(no): notifications.write(msg='BAZARR All providers are throttled', queue='get_subtitle', duration='long') logging.info("BAZARR All providers are throttled") break - list_missing_subtitles(no) if count_episodes_details: notifications.write(msg='Search Complete. Please Reload The Page.', type='success', duration='permanent', @@ -671,7 +670,6 @@ def episode_download_subtitles(no): store_subtitles(path_replace(episode.path)) history_log(1, episode.sonarr_series_id, episode.sonarr_episode_id, message, path, language_code, provider, score) send_notifications(episode.sonarr_series_id, episode.sonarr_episode_id, message) - list_missing_subtitles(episode.sonarr_series_id) else: notifications.write(msg='BAZARR All providers are throttled', queue='get_subtitle', duration='long') logging.info("BAZARR All providers are throttled") @@ -724,7 +722,6 @@ def movies_download_subtitles(no): notifications.write(msg='BAZARR All providers are throttled', queue='get_subtitle', duration='long') logging.info("BAZARR All providers are throttled") break - list_missing_subtitles_movies(no) if count_movie: notifications.write(msg='Search Complete. Please Reload The Page.', type='success', duration='permanent', @@ -796,7 +793,6 @@ def wanted_download_subtitles(path, l, count_episodes): provider = result[3] score = result[4] store_subtitles(path_replace(episode.path)) - list_missing_subtitles(episode.sonarr_series_id.sonarr_series_id) history_log(1, episode.sonarr_series_id.sonarr_series_id, episode.sonarr_episode_id, message, path, language_code, provider, score) send_notifications(episode.sonarr_series_id.sonarr_series_id, episode.sonarr_episode_id, message) else: @@ -865,7 +861,6 @@ def wanted_download_subtitles_movie(path, l, count_movies): provider = result[3] score = result[4] store_subtitles_movie(path_replace_movie(movie.path)) - list_missing_subtitles_movies(movie.radarr_id) history_log_movie(1, movie.radarr_id, message, path, language_code, provider, score) send_notifications_movie(movie.radarr_id, message) else: diff --git a/bazarr/list_subtitles.py b/bazarr/list_subtitles.py index 58abb1762..1fd38eb4b 100644 --- a/bazarr/list_subtitles.py +++ b/bazarr/list_subtitles.py @@ -120,7 +120,15 @@ def store_subtitles(file): logging.debug("BAZARR this file doesn't seems to exist or isn't accessible.") logging.debug('BAZARR ended subtitles indexing for this file: ' + file) - + + episode = TableEpisodes.select( + TableEpisodes.sonarr_episode_id + ).where( + TableEpisodes.path == path_replace_reverse(file) + ).first() + + list_missing_subtitles(epno=episode.sonarr_episode_id) + return actual_subtitles @@ -217,14 +225,24 @@ def store_subtitles_movie(file): logging.debug("BAZARR this file doesn't seems to exist or isn't accessible.") logging.debug('BAZARR ended subtitles indexing for this file: ' + file) - + + movie = TableMovies.select( + TableMovies.radarr_id + ).where( + TableMovies.path == path_replace_reverse_movie(file) + ).first() + + list_missing_subtitles_movies(no=movie.radarr_id) + return actual_subtitles -def list_missing_subtitles(no=None): +def list_missing_subtitles(no=None, epno=None): episodes_subtitles_clause = (TableShows.sonarr_series_id.is_null(False)) if no is not None: episodes_subtitles_clause = (TableShows.sonarr_series_id == no) + elif epno is not None: + episodes_subtitles_clause = (TableEpisodes.sonarr_episode_id == epno) episodes_subtitles = TableEpisodes.select( TableShows.sonarr_series_id, TableEpisodes.sonarr_episode_id, @@ -388,8 +406,6 @@ def series_scan_subtitles(no): for episode in episodes: store_subtitles(path_replace(episode.path)) - - list_missing_subtitles(no) def movies_scan_subtitles(no): @@ -401,8 +417,6 @@ def movies_scan_subtitles(no): for movie in movies: store_subtitles_movie(path_replace_movie(movie.path)) - - list_missing_subtitles_movies(no) def get_external_subtitles_path(file, subtitle): diff --git a/bazarr/main.py b/bazarr/main.py index b52688e47..0d6bad36b 100644 --- a/bazarr/main.py +++ b/bazarr/main.py @@ -1,6 +1,6 @@ # coding=utf-8 -bazarr_version = '0.8.2.4' +bazarr_version = '0.8.2.5' import gc import sys @@ -736,7 +736,7 @@ def edit_series(no): TableShows.sonarr_series_id == no ).execute() - list_missing_subtitles(no) + list_missing_subtitles(no=no) redirect(ref) @@ -784,7 +784,7 @@ def edit_serieseditor(): ).execute() for serie in series: - list_missing_subtitles(serie) + list_missing_subtitles(no=serie) redirect(ref) @@ -2050,7 +2050,6 @@ def remove_subtitles(): except OSError as e: logging.exception('BAZARR cannot delete subtitles file: ' + subtitlesPath) store_subtitles(unicode(episodePath)) - list_missing_subtitles(sonarrSeriesId) @route(base_url + 'remove_subtitles_movie', method='POST') @@ -2069,7 +2068,6 @@ def remove_subtitles_movie(): except OSError as e: logging.exception('BAZARR cannot delete subtitles file: ' + subtitlesPath) store_subtitles_movie(unicode(moviePath)) - list_missing_subtitles_movies(radarrId) @route(base_url + 'get_subtitle', method='POST') @@ -2103,7 +2101,6 @@ def get_subtitle(): history_log(1, sonarrSeriesId, sonarrEpisodeId, message, path, language_code, provider, score) send_notifications(sonarrSeriesId, sonarrEpisodeId, message) store_subtitles(unicode(episodePath)) - list_missing_subtitles(sonarrSeriesId) redirect(ref) except OSError: pass @@ -2161,7 +2158,6 @@ def manual_get_subtitle(): history_log(2, sonarrSeriesId, sonarrEpisodeId, message, path, language_code, provider, score) send_notifications(sonarrSeriesId, sonarrEpisodeId, message) store_subtitles(unicode(episodePath)) - list_missing_subtitles(sonarrSeriesId) redirect(ref) except OSError: pass @@ -2205,7 +2201,6 @@ def perform_manual_upload_subtitle(): history_log(4, sonarrSeriesId, sonarrEpisodeId, message, path, language_code, provider, score) send_notifications(sonarrSeriesId, sonarrEpisodeId, message) store_subtitles(unicode(episodePath)) - list_missing_subtitles(sonarrSeriesId) redirect(ref) except OSError: @@ -2242,7 +2237,6 @@ def get_subtitle_movie(): history_log_movie(1, radarrId, message, path, language_code, provider, score) send_notifications_movie(radarrId, message) store_subtitles_movie(unicode(moviePath)) - list_missing_subtitles_movies(radarrId) redirect(ref) except OSError: pass @@ -2298,7 +2292,6 @@ def manual_get_subtitle_movie(): history_log_movie(2, radarrId, message, path, language_code, provider, score) send_notifications_movie(radarrId, message) store_subtitles_movie(unicode(moviePath)) - list_missing_subtitles_movies(radarrId) redirect(ref) except OSError: pass @@ -2341,7 +2334,6 @@ def perform_manual_upload_subtitle_movie(): history_log_movie(4, radarrId, message, path, language_code, provider, score) send_notifications_movie(radarrId, message) store_subtitles_movie(unicode(moviePath)) - list_missing_subtitles_movies(radarrId) redirect(ref) except OSError: