diff --git a/bazarr/event_handler.py b/bazarr/event_handler.py index 1924b161f..7e32bed1a 100644 --- a/bazarr/event_handler.py +++ b/bazarr/event_handler.py @@ -23,5 +23,9 @@ def show_message(msg): event_stream(type="message", payload=msg) -def show_progress(id, name, value, count): - event_stream(type="progress", payload={"id": id, "name": name, "value": value, "count": count}) +def show_progress(id, header, name, value, count): + event_stream(type="progress", payload={"id": id, "header": header, "name": name, "value": value, "count": count}) + + +def hide_progress(id): + event_stream(type="progress", action="delete", payload={"id": id}) diff --git a/bazarr/get_episodes.py b/bazarr/get_episodes.py index 3bcbfd19c..d6895f9d7 100644 --- a/bazarr/get_episodes.py +++ b/bazarr/get_episodes.py @@ -9,7 +9,7 @@ from config import settings, url_sonarr from helper import path_mappings from list_subtitles import store_subtitles, series_full_scan_subtitles from get_subtitle import episode_download_subtitles -from event_handler import event_stream, show_progress +from event_handler import event_stream, show_progress, hide_progress headers = {"User-Agent": os.environ["SZ_USER_AGENT"]} @@ -39,7 +39,8 @@ def sync_episodes(): series_count = len(seriesIdList) for i, seriesId in enumerate(seriesIdList, 1): show_progress(id='episodes_progress', - name='Syncing episodes of {}...'.format(seriesId['title']), + header='Syncing episodes...', + name=seriesId['title'], value=i, count=series_count) @@ -63,6 +64,8 @@ def sync_episodes(): else: episodes_to_add.append(episodeParser(episode)) + hide_progress(id='episodes_progress') + # Remove old episodes from DB removed_episodes = list(set(current_episodes_db_list) - set(current_episodes_sonarr)) diff --git a/bazarr/get_movies.py b/bazarr/get_movies.py index 4a43a5c6b..edb99ff86 100644 --- a/bazarr/get_movies.py +++ b/bazarr/get_movies.py @@ -12,7 +12,7 @@ from get_rootfolder import check_radarr_rootfolder from get_subtitle import movies_download_subtitles from database import database, dict_converter, get_exclusion_clause -from event_handler import event_stream, show_progress +from event_handler import event_stream, show_progress, hide_progress headers = {"User-Agent": os.environ["SZ_USER_AGENT"]} @@ -63,10 +63,10 @@ def update_movies(): movies_count = len(movies) for i, movie in enumerate(movies, 1): show_progress(id='movies_progress', - name='Syncing movies...', - value = i, - count = movies_count) - + header='Syncing movies...', + name=movie['title'], + value=i, + count=movies_count) if movie['hasFile'] is True: if 'movieFile' in movie: @@ -87,6 +87,8 @@ def update_movies(): movie_default_profile=movie_default_profile, audio_profiles=audio_profiles)) + hide_progress(id='movies_progress') + # Remove old movies from DB removed_movies = list(set(current_movies_db_list) - set(current_movies_radarr)) diff --git a/bazarr/get_series.py b/bazarr/get_series.py index 5d286b095..1c89f322f 100644 --- a/bazarr/get_series.py +++ b/bazarr/get_series.py @@ -10,7 +10,7 @@ from get_rootfolder import check_sonarr_rootfolder from database import database, dict_converter from utils import get_sonarr_version from helper import path_mappings -from event_handler import event_stream, show_progress +from event_handler import event_stream, show_progress, hide_progress headers = {"User-Agent": os.environ["SZ_USER_AGENT"]} @@ -50,7 +50,8 @@ def update_series(): series_count = len(series) for i, show in enumerate(series, 1): show_progress(id='series_progress', - name='Syncing series...', + header='Syncing series...', + name=show['title'], value=i, count=series_count) @@ -66,6 +67,8 @@ def update_series(): tags_dict=tagsDict, serie_default_profile=serie_default_profile, audio_profiles=audio_profiles)) + hide_progress(id='series_progress') + # 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 8a65d13a3..d2aaff2c4 100644 --- a/bazarr/get_subtitle.py +++ b/bazarr/get_subtitle.py @@ -33,7 +33,7 @@ from subsyncer import subsync from guessit import guessit from database import database, dict_mapper, get_exclusion_clause, get_profiles_list, get_audio_profile_languages, \ get_desired_languages -from event_handler import event_stream, show_progress +from event_handler import event_stream, show_progress, hide_progress from embedded_subs_reader import parse_video_metadata from analytics import track_event @@ -746,7 +746,8 @@ def manual_upload_subtitle(path, language, forced, title, scene_name, media_type def series_download_subtitles(no): episodes_details = database.execute("SELECT table_episodes.path, table_episodes.missing_subtitles, monitored, " "table_episodes.sonarrEpisodeId, table_episodes.scene_name, table_shows.tags, " - "table_shows.seriesType, table_episodes.audio_language, table_shows.title " + "table_shows.seriesType, table_episodes.audio_language, table_shows.title, " + "table_episodes.season, table_episodes.episode, table_episodes.title as episodesTitle " "FROM table_episodes INNER JOIN table_shows on table_shows.sonarrSeriesId = " "table_episodes.sonarrSeriesId WHERE table_episodes.sonarrSeriesId=? and " "missing_subtitles!='[]'" + get_exclusion_clause('series'), (no,)) @@ -762,7 +763,11 @@ def series_download_subtitles(no): for i, episode in enumerate(episodes_details, 1): if providers_list: show_progress(id='series_search_progress_{}'.format(no), - name='Searching missing subtitles for {}...'.format(episode['title']), + header='Searching missing subtitles...', + name='{0} - S{1:02d}E{2:02d} - {3}'.format(episode['title'], + episode['season'], + episode['episode'], + episode['episodeTitle']), value=i, count=count_episodes_details) @@ -806,6 +811,8 @@ def series_download_subtitles(no): logging.info("BAZARR All providers are throttled") break + hide_progress(id='series_search_progress_{}'.format(no)) + @@ -887,7 +894,8 @@ def movies_download_subtitles(no): for i, language in enumerate(ast.literal_eval(movie['missing_subtitles']), 1): if providers_list: show_progress(id='movie_search_progress_{}'.format(no), - name='Searching missing subtitles for {}...'.format(movie['title']), + header='Searching missing subtitles...', + name=movie['title'], value=i, count=count_movie) @@ -929,6 +937,8 @@ def movies_download_subtitles(no): logging.info("BAZARR All providers are throttled") break + hide_progress(id='movie_search_progress_{}'.format(no)) + def wanted_download_subtitles(path): episodes_details = database.execute("SELECT table_episodes.path, table_episodes.missing_subtitles, " @@ -1084,10 +1094,11 @@ def wanted_search_missing_subtitles_series(): count_episodes = len(episodes) for i, episode in enumerate(episodes, 1): show_progress(id='wanted_episodes_progress', - name='Searching subtitles for {0} - S{1:02d}E{2:02d} - {3}...'.format(episode['title'], - episode['season'], - episode['episode'], - episode['episodeTitle']), + header='Searching subtitles...', + name='{0} - S{1:02d}E{2:02d} - {3}'.format(episode['title'], + episode['season'], + episode['episode'], + episode['episodeTitle']), value=i, count=count_episodes) @@ -1098,7 +1109,8 @@ def wanted_search_missing_subtitles_series(): logging.info("BAZARR All providers are throttled") return - + hide_progress(id='wanted_episodes_progress') + logging.info('BAZARR Finished searching for missing Series Subtitles. Check History for more information.') @@ -1111,7 +1123,8 @@ def wanted_search_missing_subtitles_movies(): count_movies = len(movies) for i, movie in enumerate(movies, 1): show_progress(id='wanted_movies_progress', - name='Searching subtitles for {0}...'.format(movie['title']), + header='Searching subtitles...', + name=movie['title'], value=i, count=count_movies) @@ -1122,6 +1135,7 @@ def wanted_search_missing_subtitles_movies(): logging.info("BAZARR All providers are throttled") return + hide_progress(id='wanted_movies_progress') logging.info('BAZARR Finished searching for missing Movies Subtitles. Check History for more information.') @@ -1278,6 +1292,7 @@ def upgrade_subtitles(): "table_episodes.title, table_episodes.sonarrSeriesId, table_history.action, " "table_history.subtitles_path, table_episodes.sonarrEpisodeId, " "MAX(table_history.timestamp) as timestamp, table_episodes.monitored, " + "table_episodes.season, table_episodes.episode, table_shows.title as seriesTitle, " "table_shows.seriesType FROM table_history INNER JOIN table_shows on " "table_shows.sonarrSeriesId = table_history.sonarrSeriesId INNER JOIN " "table_episodes on table_episodes.sonarrEpisodeId = " @@ -1342,7 +1357,11 @@ def upgrade_subtitles(): if settings.general.getboolean('use_sonarr'): for i, episode in enumerate(episodes_to_upgrade, 1): show_progress(id='upgrade_episodes_progress', - name='Upgrading subtitles for {0}...'.format(episode['title']), + header='Upgrading subtitles...', + name='{0} - S{1:02d}E{2:02d} - {3}'.format(episode['seriesTitle'], + episode['season'], + episode['episode'], + episode['title']), value=i, count=count_episode_to_upgrade) @@ -1400,12 +1419,15 @@ def upgrade_subtitles(): language_code, provider, score, subs_id, subs_path) send_notifications(episode['sonarrSeriesId'], episode['sonarrEpisodeId'], message) + hide_progress(id='upgrade_episodes_progress') + if settings.general.getboolean('use_radarr'): for i, movie in enumerate(movies_to_upgrade, 1): show_progress(id='upgrade_movies_progress', - name='Upgrading subtitles for {0}...'.format(movie['title']), + header='Upgrading subtitles...', + name=movie['title'], value=i, count=count_movie_to_upgrade) @@ -1466,6 +1488,7 @@ def upgrade_subtitles(): history_log_movie(3, movie['radarrId'], message, path, language_code, provider, score, subs_id, subs_path) send_notifications_movie(movie['radarrId'], message) + hide_progress(id='upgrade_movies_progress') logging.info('BAZARR Finished searching for Subtitles to upgrade. Check History for more information.') diff --git a/bazarr/list_subtitles.py b/bazarr/list_subtitles.py index 8efeb17f5..eef10d92f 100644 --- a/bazarr/list_subtitles.py +++ b/bazarr/list_subtitles.py @@ -15,7 +15,7 @@ from config import settings from helper import path_mappings, get_subtitle_destination_folder from embedded_subs_reader import embedded_subs_reader -from event_handler import event_stream, show_progress +from event_handler import event_stream, show_progress, hide_progress from charamel import Detector gc.enable() @@ -484,10 +484,13 @@ def series_full_scan_subtitles(): count_episodes = len(episodes) for i, episode in enumerate(episodes, 1): show_progress(id='episodes_disk_scan', - name='Performing a full disk scan for episodes subtitles...', + header='Full disk scan...', + name='Episodes subtitles', value=i, count=count_episodes) store_subtitles(episode['path'], path_mappings.path_replace(episode['path'])) + + hide_progress(id='episodes_disk_scan') gc.collect() @@ -498,11 +501,14 @@ def movies_full_scan_subtitles(): count_movies = len(movies) for i, movie in enumerate(movies, 1): show_progress(id='movies_disk_scan', - name='Performing a full disk scan for movies subtitles...', + header='Full disk scan...', + name='Movies subtitles', value=i, count=count_movies) store_subtitles_movie(movie['path'], path_mappings.path_replace_movie(movie['path'])) + hide_progress(id='movies_disk_scan') + gc.collect() diff --git a/frontend/src/@redux/redux.d.ts b/frontend/src/@redux/redux.d.ts index d8eca212f..c0bd6058a 100644 --- a/frontend/src/@redux/redux.d.ts +++ b/frontend/src/@redux/redux.d.ts @@ -15,6 +15,7 @@ namespace ReduxStore { interface Progress { id: string; + header: string; name: string; value: number; count: number; diff --git a/frontend/src/App/notifications/index.tsx b/frontend/src/App/notifications/index.tsx index 59a7017d4..48f312f07 100644 --- a/frontend/src/App/notifications/index.tsx +++ b/frontend/src/App/notifications/index.tsx @@ -77,6 +77,7 @@ type ProgressHolderProps = ReduxStore.Progress & {}; const ProgressToast: FunctionComponent = ({ id, + header, name, value, count, @@ -95,14 +96,12 @@ const ProgressToast: FunctionComponent = ({ return ( + + + {header} + -
- - {name} -
+ {name}