Added progress events to most batch functions.

This commit is contained in:
morpheus65535 2021-05-09 00:15:29 -04:00
parent a04e20bdb0
commit 9d153a1d9c
6 changed files with 104 additions and 21 deletions

View File

@ -23,9 +23,9 @@ def show_message(msg):
event_stream(type="message", payload=msg)
def show_progress(name, percent):
event_stream(type="progress", payload={"name": name, "percent": percent})
def show_progress(id, name, value, count):
event_stream(type="progress", payload={"id": id, "name": name, "value": value, "count": count})
def hide_progress(name):
event_stream(type="progress", action="delete", payload={"name": name, "percent": 0})
def hide_progress(id, delay=3):
event_stream(type="progress", action="delete", payload={"id": id, "delay": delay})

View File

@ -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
from event_handler import event_stream, show_progress, hide_progress
headers = {"User-Agent": os.environ["SZ_USER_AGENT"]}
@ -36,7 +36,13 @@ def sync_episodes():
# Get sonarrId for each series from database
seriesIdList = get_series_from_sonarr_api(url=url_sonarr(), apikey_sonarr=apikey_sonarr)
for seriesId in seriesIdList:
series_count = len(seriesIdList)
for i, seriesId in enumerate(seriesIdList, 1):
show_progress(id='episodes_progress',
name='Syncing episodes of {}...'.format(seriesId['title']),
value=i,
count=series_count)
# Get episodes data for a series from Sonarr
episodes = get_episodes_from_sonarr_api(url=url_sonarr(), apikey_sonarr=apikey_sonarr,
series_id=seriesId['sonarrSeriesId'])
@ -57,6 +63,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))

View File

@ -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
from event_handler import event_stream, show_progress, hide_progress
headers = {"User-Agent": os.environ["SZ_USER_AGENT"]}
@ -60,7 +60,14 @@ def update_movies():
altered_movies = []
# Build new and updated movies
for movie in 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)
if movie['hasFile'] is True:
if 'movieFile' in movie:
if movie['movieFile']['size'] > 20480:
@ -80,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))

View File

@ -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
from event_handler import event_stream, show_progress, hide_progress
headers = {"User-Agent": os.environ["SZ_USER_AGENT"]}
@ -47,7 +47,13 @@ def update_series():
series_to_update = []
series_to_add = []
for show in series:
series_count = len(series)
for i, show in enumerate(series, 1):
show_progress(id='series_progress',
name='Syncing series...',
value=i,
count=series_count)
# Add shows in Sonarr to current shows list
current_shows_sonarr.append(show['id'])
@ -60,6 +66,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))

View File

@ -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
from event_handler import event_stream, show_progress, hide_progress
from embedded_subs_reader import parse_video_metadata
from analytics import track_event
@ -761,6 +761,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']),
value=i,
count=count_episodes_details)
for language in ast.literal_eval(episode['missing_subtitles']):
if language is not None:
audio_language_list = get_audio_profile_languages(episode_id=episode['sonarrEpisodeId'])
@ -801,6 +806,8 @@ def series_download_subtitles(no):
logging.info("BAZARR All providers are throttled")
break
hide_progress(id='series_search_progress_{}'.format(no))
def episode_download_subtitles(no):
episodes_details = database.execute("SELECT table_episodes.path, table_episodes.missing_subtitles, monitored, "
@ -879,6 +886,11 @@ 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']),
value=i,
count=count_movie)
if language is not None:
audio_language_list = get_audio_profile_languages(movie_id=movie['radarrId'])
if len(audio_language_list) > 0:
@ -917,8 +929,10 @@ 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, l, count_episodes):
def wanted_download_subtitles(path):
episodes_details = database.execute("SELECT table_episodes.path, table_episodes.missing_subtitles, "
"table_episodes.sonarrEpisodeId, table_episodes.sonarrSeriesId, "
"table_episodes.audio_language, table_episodes.scene_name,"
@ -991,7 +1005,7 @@ def wanted_download_subtitles(path, l, count_episodes):
0])
def wanted_download_subtitles_movie(path, l, count_movies):
def wanted_download_subtitles_movie(path):
movies_details = database.execute(
"SELECT path, missing_subtitles, radarrId, audio_language, sceneName, "
"failedAttempts, title FROM table_movies WHERE path = ? "
@ -1062,39 +1076,55 @@ def wanted_download_subtitles_movie(path, l, count_movies):
def wanted_search_missing_subtitles_series():
episodes = database.execute("SELECT table_episodes.path, table_shows.tags, table_episodes.monitored, "
"table_shows.seriesType FROM table_episodes INNER JOIN table_shows on "
"table_shows.sonarrSeriesId = table_episodes.sonarrSeriesId WHERE missing_subtitles != "
"'[]'" + get_exclusion_clause('series'))
"table_shows.title, table_episodes.season, table_episodes.episode, table_episodes.title"
" as episodeTitle, table_shows.seriesType FROM table_episodes INNER JOIN table_shows on"
" table_shows.sonarrSeriesId = table_episodes.sonarrSeriesId WHERE missing_subtitles !="
" '[]'" + get_exclusion_clause('series'))
# path_replace
dict_mapper.path_replace(episodes)
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']),
value=i,
count=count_episodes)
providers = get_providers()
if providers:
wanted_download_subtitles(episode['path'], i, count_episodes)
wanted_download_subtitles(episode['path'])
else:
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.')
def wanted_search_missing_subtitles_movies():
movies = database.execute("SELECT path, tags, monitored FROM table_movies WHERE missing_subtitles != '[]'" +
movies = database.execute("SELECT path, tags, monitored, title FROM table_movies WHERE missing_subtitles != '[]'" +
get_exclusion_clause('movie'))
# path_replace
dict_mapper.path_replace_movie(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']),
value=i,
count=count_movies)
providers = get_providers()
if providers:
wanted_download_subtitles_movie(movie['path'], i, count_movies)
wanted_download_subtitles_movie(movie['path'])
else:
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.')
@ -1313,6 +1343,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']),
value=i,
count=count_episode_to_upgrade)
providers = get_providers()
if not providers:
logging.info("BAZARR All providers are throttled")
@ -1367,8 +1402,15 @@ def upgrade_subtitles():
language_code, provider, score, subs_id, subs_path)
send_notifications(episode['sonarrSeriesId'], episode['sonarrEpisodeId'], message)
hide_progress('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']),
value=i,
count=count_movie_to_upgrade)
providers = get_providers()
if not providers:
logging.info("BAZARR All providers are throttled")
@ -1426,6 +1468,8 @@ 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.')

View File

@ -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
from event_handler import event_stream, show_progress, hide_progress
from charamel import Detector
gc.enable()
@ -481,8 +481,15 @@ def list_missing_subtitles_movies(no=None, epno=None, send_event=True):
def series_full_scan_subtitles():
episodes = database.execute("SELECT path FROM table_episodes")
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...',
value=i,
count=count_episodes)
store_subtitles(episode['path'], path_mappings.path_replace(episode['path']))
hide_progress(id='episodes_disk_scan')
gc.collect()
@ -490,9 +497,16 @@ def series_full_scan_subtitles():
def movies_full_scan_subtitles():
movies = database.execute("SELECT path FROM table_movies")
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...',
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()