From bfa438df7c4ef3ce2a435a71fcf3ec290a290be5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Louis=20V=C3=A9zina?= <5130500+morpheus65535@users.noreply.github.com> Date: Wed, 12 Feb 2020 23:16:22 -0500 Subject: [PATCH] WIP --- bazarr/analytics.py | 4 +- bazarr/api.py | 18 +- bazarr/check_update.py | 1 - bazarr/config.py | 1 - bazarr/database.py | 1 - bazarr/embedded_subs_reader.py | 3 - bazarr/get_args.py | 1 - bazarr/get_episodes.py | 4 - bazarr/get_languages.py | 3 - bazarr/get_movies.py | 27 +- bazarr/get_series.py | 7 +- bazarr/get_subtitle.py | 111 ++++---- bazarr/helper.py | 1 - bazarr/init.py | 4 +- bazarr/list_subtitles.py | 12 +- bazarr/logger.py | 7 +- bazarr/main.py | 463 ++++++++++----------------------- bazarr/notifier.py | 1 - bazarr/queueconfig.py | 1 - bazarr/scheduler.py | 14 +- bazarr/utils.py | 1 - views/wantedmovies.html | 19 +- views/wantedseries.html | 19 +- 23 files changed, 267 insertions(+), 456 deletions(-) diff --git a/bazarr/analytics.py b/bazarr/analytics.py index 2dd5274ad..f6f3a1b05 100644 --- a/bazarr/analytics.py +++ b/bazarr/analytics.py @@ -1,8 +1,6 @@ # coding=utf-8 -from __future__ import absolute_import -import six.moves.cPickle as pickle -import base64 +import pickle import random import platform import os diff --git a/bazarr/api.py b/bazarr/api.py index 14dd7920c..e413ca7a0 100644 --- a/bazarr/api.py +++ b/bazarr/api.py @@ -7,7 +7,6 @@ import pretty import time from operator import itemgetter -from get_args import args from config import settings, base_url from init import * @@ -17,7 +16,8 @@ from helper import path_replace, path_replace_reverse, path_replace_movie, path_ from get_languages import language_from_alpha3, language_from_alpha2, alpha2_from_alpha3, alpha2_from_language, \ alpha3_from_language, alpha3_from_alpha2 from get_subtitle import download_subtitle, series_download_subtitles, movies_download_subtitles, \ - manual_search, manual_download_subtitle, manual_upload_subtitle + manual_search, manual_download_subtitle, manual_upload_subtitle, wanted_search_missing_subtitles_series, \ + wanted_search_missing_subtitles_movies from notifier import send_notifications, send_notifications_movie from list_subtitles import store_subtitles, store_subtitles_movie, series_scan_subtitles, movies_scan_subtitles, \ list_missing_subtitles, list_missing_subtitles_movies @@ -1029,6 +1029,18 @@ class WantedMovies(Resource): return jsonify(draw=draw, recordsTotal=row_count, recordsFiltered=row_count, data=data) +class SearchWantedSeries(Resource): + def get(self): + wanted_search_missing_subtitles_series() + return '', 200 + + +class SearchWantedMovies(Resource): + def get(self): + wanted_search_missing_subtitles_movies() + return '', 200 + + api.add_resource(Badges, '/badges') api.add_resource(Languages, '/languages') @@ -1060,3 +1072,5 @@ api.add_resource(HistoryMovies, '/history_movies') api.add_resource(WantedSeries, '/wanted_series') api.add_resource(WantedMovies, '/wanted_movies') +api.add_resource(SearchWantedSeries, '/search_wanted_series') +api.add_resource(SearchWantedMovies, '/search_wanted_movies') diff --git a/bazarr/check_update.py b/bazarr/check_update.py index 965973828..d9dd3faa9 100644 --- a/bazarr/check_update.py +++ b/bazarr/check_update.py @@ -1,5 +1,4 @@ # coding=utf-8 -from __future__ import absolute_import import os import logging import json diff --git a/bazarr/config.py b/bazarr/config.py index 80fc097b2..8991569bf 100644 --- a/bazarr/config.py +++ b/bazarr/config.py @@ -1,5 +1,4 @@ # coding=utf-8 -from __future__ import absolute_import import os from simpleconfigparser import simpleconfigparser diff --git a/bazarr/database.py b/bazarr/database.py index 685638f5f..ceca85b77 100644 --- a/bazarr/database.py +++ b/bazarr/database.py @@ -1,6 +1,5 @@ import os from sqlite3worker import Sqlite3Worker -from six import string_types from get_args import args from helper import path_replace, path_replace_movie, path_replace_reverse, path_replace_reverse_movie diff --git a/bazarr/embedded_subs_reader.py b/bazarr/embedded_subs_reader.py index 3cc5c98b4..085228284 100644 --- a/bazarr/embedded_subs_reader.py +++ b/bazarr/embedded_subs_reader.py @@ -1,10 +1,7 @@ -from __future__ import absolute_import import enzyme from enzyme.exceptions import MalformedMKVError import logging import os -import subprocess -import locale from utils import get_binary from pyprobe.pyprobe import VideoFileParser diff --git a/bazarr/get_args.py b/bazarr/get_args.py index 0c1512c76..498762c32 100644 --- a/bazarr/get_args.py +++ b/bazarr/get_args.py @@ -1,5 +1,4 @@ # coding=utf-8 -from __future__ import absolute_import import os import argparse diff --git a/bazarr/get_episodes.py b/bazarr/get_episodes.py index 2a2830374..c30d9ba1e 100644 --- a/bazarr/get_episodes.py +++ b/bazarr/get_episodes.py @@ -1,13 +1,9 @@ # coding=utf-8 -from __future__ import absolute_import -import os import requests import logging -import re from queueconfig import notifications from database import database, dict_converter -from get_args import args from config import settings, url_sonarr from helper import path_replace from list_subtitles import list_missing_subtitles, store_subtitles, series_full_scan_subtitles diff --git a/bazarr/get_languages.py b/bazarr/get_languages.py index 5e61e789e..4d0d128ce 100644 --- a/bazarr/get_languages.py +++ b/bazarr/get_languages.py @@ -1,10 +1,7 @@ # coding=utf-8 -from __future__ import absolute_import -import os import pycountry -from get_args import args from subzero.language import Language from database import database diff --git a/bazarr/get_movies.py b/bazarr/get_movies.py index 8a8837d4f..32337ebdf 100644 --- a/bazarr/get_movies.py +++ b/bazarr/get_movies.py @@ -1,13 +1,10 @@ # coding=utf-8 -from __future__ import absolute_import import os -import six import requests import logging from queueconfig import notifications -from get_args import args from config import settings, url_radarr from helper import path_replace_movie from utils import get_radarr_version @@ -77,7 +74,7 @@ def update_movies(): if movie["path"] != None and movie['movieFile']['relativePath'] != None: try: - overview = six.text_type(movie['overview']) + overview = str(movie['overview']) except: overview = "" try: @@ -131,19 +128,19 @@ def update_movies(): audioCodec = None # Add movies in radarr to current movies list - current_movies_radarr.append(six.text_type(movie['tmdbId'])) + current_movies_radarr.append(str(movie['tmdbId'])) - if six.text_type(movie['tmdbId']) in current_movies_db_list: + if str(movie['tmdbId']) in current_movies_db_list: movies_to_update.append({'radarrId': int(movie["id"]), 'title': movie["title"], 'path': movie["path"] + separator + movie['movieFile']['relativePath'], - 'tmdbId': six.text_type(movie["tmdbId"]), + 'tmdbId': str(movie["tmdbId"]), 'poster': poster, 'fanart': fanart, 'audio_language': profile_id_to_language(movie['qualityProfileId'], audio_profiles), 'sceneName': sceneName, - 'monitored': six.text_type(bool(movie['monitored'])), - 'year': six.text_type(movie['year']), + 'monitored': str(bool(movie['monitored'])), + 'year': str(movie['year']), 'sortTitle': movie['sortTitle'], 'alternativeTitles': alternativeTitles, 'format': format, @@ -158,7 +155,7 @@ def update_movies(): movies_to_add.append({'radarrId': int(movie["id"]), 'title': movie["title"], 'path': movie["path"] + separator + movie['movieFile']['relativePath'], - 'tmdbId': six.text_type(movie["tmdbId"]), + 'tmdbId': str(movie["tmdbId"]), 'languages': movie_default_language, 'subtitles': '[]', 'hearing_impaired': movie_default_hi, @@ -167,9 +164,9 @@ def update_movies(): 'fanart': fanart, 'audio_language': profile_id_to_language(movie['qualityProfileId'], audio_profiles), 'sceneName': sceneName, - 'monitored': six.text_type(bool(movie['monitored'])), + 'monitored': str(bool(movie['monitored'])), 'sortTitle': movie['sortTitle'], - 'year': six.text_type(movie['year']), + 'year': str(movie['year']), 'alternativeTitles': alternativeTitles, 'format': format, 'resolution': resolution, @@ -182,7 +179,7 @@ def update_movies(): movies_to_add.append({'radarrId': int(movie["id"]), 'title': movie["title"], 'path': movie["path"] + separator + movie['movieFile']['relativePath'], - 'tmdbId': six.text_type(movie["tmdbId"]), + 'tmdbId': str(movie["tmdbId"]), 'languages': None, 'subtitles': '[]', 'hearing_impaired': None, @@ -191,9 +188,9 @@ def update_movies(): 'fanart': fanart, 'audio_language': profile_id_to_language(movie['qualityProfileId'], audio_profiles), 'sceneName': sceneName, - 'monitored': six.text_type(bool(movie['monitored'])), + 'monitored': str(bool(movie['monitored'])), 'sortTitle': movie['sortTitle'], - 'year': six.text_type(movie['year']), + 'year': str(movie['year']), 'alternativeTitles': alternativeTitles, 'format': format, 'resolution': resolution, diff --git a/bazarr/get_series.py b/bazarr/get_series.py index d60626e65..9138b152b 100644 --- a/bazarr/get_series.py +++ b/bazarr/get_series.py @@ -1,11 +1,8 @@ # coding=utf-8 -from __future__ import absolute_import -from __future__ import print_function import os import requests import logging -import six from queueconfig import notifications from config import settings, url_sonarr @@ -108,7 +105,7 @@ def update_series(): 'fanart': fanart, 'audio_language': audio_language, 'sortTitle': show['sortTitle'], - 'year': six.text_type(show['year']), + 'year': str(show['year']), 'alternateTitles': alternate_titles, 'forced': serie_default_forced}) else: @@ -121,7 +118,7 @@ def update_series(): 'fanart': fanart, 'audio_language': audio_language, 'sortTitle': show['sortTitle'], - 'year': six.text_type(show['year']), + 'year': str(show['year']), 'alternateTitles': alternate_titles}) # Remove old series from DB diff --git a/bazarr/get_subtitle.py b/bazarr/get_subtitle.py index b01ed0c4f..fc0a3fca2 100644 --- a/bazarr/get_subtitle.py +++ b/bazarr/get_subtitle.py @@ -1,19 +1,15 @@ # coding=utf-8 -from __future__ import absolute_import import os import sys import ast import logging import subprocess import time -import six.moves.cPickle as pickle +import pickle import codecs -import types import re import subliminal -import platform -import operator from datetime import datetime, timedelta from subzero.language import Language from subzero.video import parse_video @@ -31,15 +27,11 @@ from list_subtitles import store_subtitles, list_missing_subtitles, store_subtit from utils import history_log, history_log_movie, get_binary from notifier import send_notifications, send_notifications_movie from get_providers import get_providers, get_providers_auth, provider_throttle, provider_pool -from get_args import args from queueconfig import notifications from pyprobe.pyprobe import VideoFileParser from database import database, dict_mapper from analytics import track_event -import six -from six.moves import range -from functools import reduce from locale import getpreferredencoding @@ -189,7 +181,7 @@ def download_subtitle(path, language, hi, forced, providers, providers_auth, sce saved_any = False if downloaded_subtitles: - for video, subtitles in six.iteritems(downloaded_subtitles): + for video, subtitles in downloaded_subtitles.items(): if not subtitles: continue @@ -225,10 +217,10 @@ def download_subtitle(path, language, hi, forced, providers, providers_auth, sce else: action = "downloaded" if video.used_scene_name: - message = downloaded_language + is_forced_string + " subtitles " + action + " from " + downloaded_provider + " with a score of " + six.text_type( + message = downloaded_language + is_forced_string + " subtitles " + action + " from " + downloaded_provider + " with a score of " + str( round(subtitle.score * 100 / max_score, 2)) + "% using this scene name: " + sceneName else: - message = downloaded_language + is_forced_string + " subtitles " + action + " from " + downloaded_provider + " with a score of " + six.text_type( + message = downloaded_language + is_forced_string + " subtitles " + action + " from " + downloaded_provider + " with a score of " + str( round(subtitle.score * 100 / max_score, 2)) + "% using filename guessing." if use_postprocessing is True: @@ -426,7 +418,7 @@ def manual_download_subtitle(path, language, hi, forced, subtitle, provider, pro downloaded_path = saved_subtitle.storage_path logging.debug('BAZARR Subtitles file saved to disk: ' + downloaded_path) is_forced_string = " forced" if subtitle.language.forced else "" - message = downloaded_language + is_forced_string + " Subtitles downloaded from " + downloaded_provider + " with a score of " + six.text_type( + message = downloaded_language + is_forced_string + " Subtitles downloaded from " + downloaded_provider + " with a score of " + str( score) + "% using manual search." if use_postprocessing is True: @@ -680,7 +672,7 @@ def wanted_download_subtitles(path, l, count_episodes): for episode in episodes_details: attempt = episode['failedAttempts'] - if type(attempt) == six.text_type: + if type(attempt) == str: attempt = ast.literal_eval(attempt) for language in ast.literal_eval(episode['missing_subtitles']): if attempt is None: @@ -692,7 +684,7 @@ def wanted_download_subtitles(path, l, count_episodes): attempt.append([language, time.time()]) database.execute("UPDATE table_episodes SET failedAttempts=? WHERE sonarrEpisodeId=?", - (six.text_type(attempt), episode['sonarrEpisodeId'])) + (str(attempt), episode['sonarrEpisodeId'])) for i in range(len(attempt)): if attempt[i][0] == language: @@ -733,7 +725,7 @@ def wanted_download_subtitles_movie(path, l, count_movies): for movie in movies_details: attempt = movie['failedAttempts'] - if type(attempt) == six.text_type: + if type(attempt) == str: attempt = ast.literal_eval(attempt) for language in ast.literal_eval(movie['missing_subtitles']): if attempt is None: @@ -745,7 +737,7 @@ def wanted_download_subtitles_movie(path, l, count_movies): attempt.append([language, time.time()]) database.execute("UPDATE table_movies SET failedAttempts=? WHERE radarrId=?", - (six.text_type(attempt), movie['radarrId'])) + (str(attempt), movie['radarrId'])) for i in range(len(attempt)): if attempt[i][0] == language: @@ -776,53 +768,52 @@ def wanted_download_subtitles_movie(path, l, count_movies): 'BAZARR Search is not active for this Movie ' + movie['path'] + ' Language: ' + attempt[i][0]) -def wanted_search_missing_subtitles(): - if settings.general.getboolean('use_sonarr'): - if settings.sonarr.getboolean('only_monitored'): - monitored_only_query_string_sonarr = ' AND monitored = "True"' +def wanted_search_missing_subtitles_series(): + if settings.sonarr.getboolean('only_monitored'): + monitored_only_query_string_sonarr = ' AND monitored = "True"' + else: + monitored_only_query_string_sonarr = "" + + episodes = database.execute("SELECT path FROM table_episodes WHERE missing_subtitles != '[]'" + + monitored_only_query_string_sonarr) + # path_replace + dict_mapper.path_replace(episodes) + + count_episodes = len(episodes) + for i, episode in enumerate(episodes, 1): + providers = get_providers() + if providers: + wanted_download_subtitles(episode['path'], i, count_episodes) else: - monitored_only_query_string_sonarr = "" - - episodes = database.execute("SELECT path FROM table_episodes WHERE missing_subtitles != '[]'" + - monitored_only_query_string_sonarr) - # path_replace - dict_mapper.path_replace(episodes) - - count_episodes = len(episodes) - for i, episode in enumerate(episodes, 1): - providers = get_providers() - if providers: - wanted_download_subtitles(episode['path'], i, count_episodes) - else: - notifications.write(msg='BAZARR All providers are throttled', queue='get_subtitle', duration='long') - logging.info("BAZARR All providers are throttled") - return + notifications.write(msg='BAZARR All providers are throttled', queue='get_subtitle', duration='long') + logging.info("BAZARR All providers are throttled") + return - if settings.general.getboolean('use_radarr'): - if settings.radarr.getboolean('only_monitored'): - monitored_only_query_string_radarr = ' AND monitored = "True"' + logging.info('BAZARR Finished searching for missing Series Subtitles. Check History for more information.') + + +def wanted_search_missing_subtitles_movies(): + if settings.radarr.getboolean('only_monitored'): + monitored_only_query_string_radarr = ' AND monitored = "True"' + else: + monitored_only_query_string_radarr = "" + + movies = database.execute("SELECT path FROM table_movies WHERE missing_subtitles != '[]'" + + monitored_only_query_string_radarr) + # path_replace + dict_mapper.path_replace_movie(movies) + + count_movies = len(movies) + for i, movie in enumerate(movies, 1): + providers = get_providers() + if providers: + wanted_download_subtitles_movie(movie['path'], i, count_movies) else: - monitored_only_query_string_radarr = "" + notifications.write(msg='BAZARR All providers are throttled', queue='get_subtitle', duration='long') + logging.info("BAZARR All providers are throttled") + return - movies = database.execute("SELECT path FROM table_movies WHERE missing_subtitles != '[]'" + - monitored_only_query_string_radarr) - # path_replace - dict_mapper.path_replace_movie(movies) - - count_movies = len(movies) - for i, movie in enumerate(movies, 1): - providers = get_providers() - if providers: - wanted_download_subtitles_movie(movie['path'], i, count_movies) - else: - notifications.write(msg='BAZARR All providers are throttled', queue='get_subtitle', duration='long') - logging.info("BAZARR All providers are throttled") - return - - logging.info('BAZARR Finished searching for missing Subtitles. Check History for more information.') - - notifications.write(msg='Searching completed. Please reload the page.', type='success', duration='permanent', - button='refresh', queue='get_subtitle') + logging.info('BAZARR Finished searching for missing Movies Subtitles. Check History for more information.') def search_active(timestamp): diff --git a/bazarr/helper.py b/bazarr/helper.py index feef91067..92c0f53c7 100644 --- a/bazarr/helper.py +++ b/bazarr/helper.py @@ -1,5 +1,4 @@ # coding=utf-8 -from __future__ import absolute_import import ast import os import re diff --git a/bazarr/init.py b/bazarr/init.py index 13d64c772..e966fb03a 100644 --- a/bazarr/init.py +++ b/bazarr/init.py @@ -1,6 +1,5 @@ # coding=utf-8 -from __future__ import absolute_import, print_function import os import time import rarfile @@ -53,8 +52,7 @@ import logging # create random api_key if there's none in config.ini if not settings.auth.apikey: from binascii import hexlify - from six import text_type - settings.auth.apikey = text_type(hexlify(os.urandom(16))) + settings.auth.apikey = str(hexlify(os.urandom(16))) with open(os.path.join(args.config_dir, 'config', 'config.ini'), 'w+') as handle: settings.write(handle) diff --git a/bazarr/list_subtitles.py b/bazarr/list_subtitles.py index ca8721e5e..0f36842c6 100644 --- a/bazarr/list_subtitles.py +++ b/bazarr/list_subtitles.py @@ -1,6 +1,5 @@ # coding=utf-8 -from __future__ import absolute_import import gc import os import logging @@ -23,7 +22,6 @@ from helper import path_replace, path_replace_movie, path_replace_reverse, \ from queueconfig import notifications from embedded_subs_reader import embedded_subs_reader from websocket_handler import event_stream -import six gc.enable() @@ -68,7 +66,7 @@ def store_subtitles(original_path, reversed_path): logging.exception("BAZARR unable to index external subtitles.") pass else: - for subtitle, language in six.iteritems(subtitles): + for subtitle, language in subtitles.items(): subtitle_path = get_external_subtitles_path(reversed_path, subtitle) if str(os.path.splitext(subtitle)[0]).lower().endswith(tuple(brazilian_portuguese)): logging.debug("BAZARR external subtitles detected: " + "pb") @@ -143,7 +141,7 @@ def store_subtitles_movie(original_path, reversed_path): logging.exception("BAZARR unable to index external subtitles.") pass else: - for subtitle, language in six.iteritems(subtitles): + for subtitle, language in subtitles.items(): subtitle_path = get_external_subtitles_path(reversed_path, subtitle) if str(os.path.splitext(subtitle)[0]).lower().endswith(tuple(brazilian_portuguese)): logging.debug("BAZARR external subtitles detected: " + "pb") @@ -187,7 +185,7 @@ def list_missing_subtitles(no=None, epno=None): "FROM table_episodes LEFT JOIN table_shows " "on table_episodes.sonarrSeriesId = table_shows.sonarrSeriesId" + episodes_subtitles_clause) - if isinstance(episodes_subtitles, six.string_types): + if isinstance(episodes_subtitles, str): logging.error("BAZARR list missing subtitles query to DB returned this instead of rows: " + episodes_subtitles) return @@ -249,7 +247,7 @@ def list_missing_subtitles_movies(no=None): movies_subtitles = database.execute("SELECT radarrId, subtitles, languages, forced FROM table_movies" + movies_subtitles_clause) - if isinstance(movies_subtitles, six.string_types): + if isinstance(movies_subtitles, str): logging.error("BAZARR list missing subtitles query to DB returned this instead of rows: " + movies_subtitles) return @@ -367,7 +365,7 @@ def get_external_subtitles_path(file, subtitle): def guess_external_subtitles(dest_folder, subtitles): - for subtitle, language in six.iteritems(subtitles): + for subtitle, language in subtitles.items(): if not language: subtitle_path = os.path.join(dest_folder, subtitle) if os.path.exists(subtitle_path) and os.path.splitext(subtitle_path)[1] in core.SUBTITLE_EXTENSIONS: diff --git a/bazarr/logger.py b/bazarr/logger.py index 49af82261..385bbef6d 100644 --- a/bazarr/logger.py +++ b/bazarr/logger.py @@ -1,13 +1,10 @@ # coding=utf-8 -from __future__ import absolute_import import os import logging import re -import types import platform import warnings -import six from logging.handlers import TimedRotatingFileHandler from get_args import args @@ -119,7 +116,7 @@ class ArgsFilteringFilter(logging.Filter): if isinstance(record.args, (list, tuple)): final_args = [] for arg in record.args: - if not isinstance(arg, six.string_types): + if not isinstance(arg, str): final_args.append(arg) continue @@ -127,7 +124,7 @@ class ArgsFilteringFilter(logging.Filter): record.args = type(record.args)(final_args) elif isinstance(record.args, dict): for key, arg in record.args.items(): - if not isinstance(arg, six.string_types): + if not isinstance(arg, str): continue record.args[key] = func(arg) diff --git a/bazarr/main.py b/bazarr/main.py index b71926dad..fbaab0b06 100644 --- a/bazarr/main.py +++ b/bazarr/main.py @@ -11,22 +11,13 @@ import sys import libs import io -import six -from six.moves import zip -from functools import reduce - -import itertools -import operator import pretty -import math import ast import hashlib -import six.moves.urllib.request, six.moves.urllib.parse, six.moves.urllib.error import warnings import queueconfig import platform import apprise -import operator from get_args import args @@ -41,9 +32,8 @@ from notifier import update_notifier from cherrypy.wsgiserver import CherryPyWSGIServer -from io import BytesIO -from six import text_type -from datetime import timedelta, datetime +from urllib.parse import unquote +from datetime import datetime from get_languages import load_language_in_db, language_from_alpha3, language_from_alpha2, alpha2_from_alpha3 from flask import make_response, request, redirect, abort, render_template, Response, session, flash, url_for, \ send_file, stream_with_context @@ -53,16 +43,9 @@ from get_series import * from get_episodes import * from get_movies import * -from list_subtitles import store_subtitles, store_subtitles_movie, series_scan_subtitles, movies_scan_subtitles, \ - list_missing_subtitles, list_missing_subtitles_movies -from get_subtitle import download_subtitle, series_download_subtitles, movies_download_subtitles, \ - manual_search, manual_download_subtitle, manual_upload_subtitle from utils import history_log, history_log_movie, get_sonarr_version, get_radarr_version -from helper import path_replace, path_replace_movie, path_replace_reverse, path_replace_reverse_movie from scheduler import Scheduler -from notifier import send_notifications, send_notifications_movie from subliminal_patch.extensions import provider_registry as provider_manager -from subliminal_patch.core import SUBTITLE_EXTENSIONS from functools import wraps from app import create_app, socketio @@ -202,7 +185,7 @@ def doShutdown(): except Exception as e: logging.error('BAZARR Cannot create bazarr.stop file.') else: - stop_file.write(six.text_type('')) + stop_file.write(str('')) stop_file.close() sys.exit(0) return '' @@ -223,7 +206,7 @@ def restart(): logging.error('BAZARR Cannot create bazarr.restart file.') else: logging.info('Bazarr is being restarted...') - restart_file.write(six.text_type('')) + restart_file.write(str('')) restart_file.close() sys.exit(0) return '' @@ -293,20 +276,20 @@ def save_wizard(): else: settings_upgrade_manual = 'True' - settings.general.ip = text_type(settings_general_ip) - settings.general.port = text_type(settings_general_port) - settings.general.base_url = text_type(settings_general_baseurl) - settings.general.path_mappings = text_type(settings_general_pathmapping) - settings.general.single_language = text_type(settings_general_single_language) - settings.general.use_sonarr = text_type(settings_general_use_sonarr) - settings.general.use_radarr = text_type(settings_general_use_radarr) - settings.general.path_mappings_movie = text_type(settings_general_pathmapping_movie) - settings.general.subfolder = text_type(settings_subfolder) - settings.general.subfolder_custom = text_type(settings_subfolder_custom) - settings.general.use_embedded_subs = text_type(settings_general_embedded) - settings.general.upgrade_subs = text_type(settings_upgrade_subs) - settings.general.days_to_upgrade_subs = text_type(settings_days_to_upgrade_subs) - settings.general.upgrade_manual = text_type(settings_upgrade_manual) + settings.general.ip = str(settings_general_ip) + settings.general.port = str(settings_general_port) + settings.general.base_url = str(settings_general_baseurl) + settings.general.path_mappings = str(settings_general_pathmapping) + settings.general.single_language = str(settings_general_single_language) + settings.general.use_sonarr = str(settings_general_use_sonarr) + settings.general.use_radarr = str(settings_general_use_radarr) + settings.general.path_mappings_movie = str(settings_general_pathmapping_movie) + settings.general.subfolder = str(settings_subfolder) + settings.general.subfolder_custom = str(settings_subfolder_custom) + settings.general.use_embedded_subs = str(settings_general_embedded) + settings.general.upgrade_subs = str(settings_upgrade_subs) + settings.general.days_to_upgrade_subs = str(settings_days_to_upgrade_subs) + settings.general.upgrade_manual = str(settings_upgrade_manual) settings_sonarr_ip = request.form.get('settings_sonarr_ip') settings_sonarr_port = request.form.get('settings_sonarr_port') @@ -323,12 +306,12 @@ def save_wizard(): else: settings_sonarr_only_monitored = 'True' - settings.sonarr.ip = text_type(settings_sonarr_ip) - settings.sonarr.port = text_type(settings_sonarr_port) - settings.sonarr.base_url = text_type(settings_sonarr_baseurl) - settings.sonarr.ssl = text_type(settings_sonarr_ssl) - settings.sonarr.apikey = text_type(settings_sonarr_apikey) - settings.sonarr.only_monitored = text_type(settings_sonarr_only_monitored) + settings.sonarr.ip = str(settings_sonarr_ip) + settings.sonarr.port = str(settings_sonarr_port) + settings.sonarr.base_url = str(settings_sonarr_baseurl) + settings.sonarr.ssl = str(settings_sonarr_ssl) + settings.sonarr.apikey = str(settings_sonarr_apikey) + settings.sonarr.only_monitored = str(settings_sonarr_only_monitored) settings_radarr_ip = request.form.get('settings_radarr_ip') settings_radarr_port = request.form.get('settings_radarr_port') @@ -345,12 +328,12 @@ def save_wizard(): else: settings_radarr_only_monitored = 'True' - settings.radarr.ip = text_type(settings_radarr_ip) - settings.radarr.port = text_type(settings_radarr_port) - settings.radarr.base_url = text_type(settings_radarr_baseurl) - settings.radarr.ssl = text_type(settings_radarr_ssl) - settings.radarr.apikey = text_type(settings_radarr_apikey) - settings.radarr.only_monitored = text_type(settings_radarr_only_monitored) + settings.radarr.ip = str(settings_radarr_ip) + settings.radarr.port = str(settings_radarr_port) + settings.radarr.base_url = str(settings_radarr_baseurl) + settings.radarr.ssl = str(settings_radarr_ssl) + settings.radarr.apikey = str(settings_radarr_apikey) + settings.radarr.only_monitored = str(settings_radarr_only_monitored) settings_subliminal_providers = request.form.getlist('settings_subliminal_providers') settings.general.enabled_providers = u'' if not settings_subliminal_providers else ','.join( @@ -382,7 +365,7 @@ def save_wizard(): settings.addic7ed.username = request.form.get('settings_addic7ed_username') or '' settings.addic7ed.password = request.form.get('settings_addic7ed_password') or '' - settings.addic7ed.random_agents = text_type(settings_addic7ed_random_agents) or '' + settings.addic7ed.random_agents = str(settings_addic7ed_random_agents) or '' settings.assrt.token = request.form.get('settings_assrt_token') or '' settings.legendasdivx.username = request.form.get('settings_legendasdivx_username') or '' settings.legendasdivx.password = request.form.get('settings_legendasdivx_password') or '' @@ -390,9 +373,9 @@ def save_wizard(): settings.legendastv.password = request.form.get('settings_legendastv_password') or '' settings.opensubtitles.username = request.form.get('settings_opensubtitles_username') or '' settings.opensubtitles.password = request.form.get('settings_opensubtitles_password') or '' - settings.opensubtitles.vip = text_type(settings_opensubtitles_vip) - settings.opensubtitles.ssl = text_type(settings_opensubtitles_ssl) - settings.opensubtitles.skip_wrong_fps = text_type(settings_opensubtitles_skip_wrong_fps) + settings.opensubtitles.vip = str(settings_opensubtitles_vip) + settings.opensubtitles.ssl = str(settings_opensubtitles_ssl) + settings.opensubtitles.skip_wrong_fps = str(settings_opensubtitles_skip_wrong_fps) settings.xsubs.username = request.form.get('settings_xsubs_username') or '' settings.xsubs.password = request.form.get('settings_xsubs_password') or '' settings.napisy24.username = request.form.get('settings_napisy24_username') or '' @@ -415,41 +398,41 @@ def save_wizard(): settings_serie_default_enabled = 'False' else: settings_serie_default_enabled = 'True' - settings.general.serie_default_enabled = text_type(settings_serie_default_enabled) + settings.general.serie_default_enabled = str(settings_serie_default_enabled) settings_serie_default_languages = str(request.form.getlist('settings_serie_default_languages')) if settings_serie_default_languages == "['None']": settings_serie_default_languages = 'None' - settings.general.serie_default_language = text_type(settings_serie_default_languages) + settings.general.serie_default_language = str(settings_serie_default_languages) settings_serie_default_hi = request.form.get('settings_serie_default_hi') if settings_serie_default_hi is None: settings_serie_default_hi = 'False' else: settings_serie_default_hi = 'True' - settings.general.serie_default_hi = text_type(settings_serie_default_hi) + settings.general.serie_default_hi = str(settings_serie_default_hi) settings_movie_default_enabled = request.form.get('settings_movie_default_enabled') if settings_movie_default_enabled is None: settings_movie_default_enabled = 'False' else: settings_movie_default_enabled = 'True' - settings.general.movie_default_enabled = text_type(settings_movie_default_enabled) + settings.general.movie_default_enabled = str(settings_movie_default_enabled) settings_movie_default_languages = str(request.form.getlist('settings_movie_default_languages')) if settings_movie_default_languages == "['None']": settings_movie_default_languages = 'None' - settings.general.movie_default_language = text_type(settings_movie_default_languages) + settings.general.movie_default_language = str(settings_movie_default_languages) settings_movie_default_hi = request.form.get('settings_movie_default_hi') if settings_movie_default_hi is None: settings_movie_default_hi = 'False' else: settings_movie_default_hi = 'True' - settings.general.movie_default_hi = text_type(settings_movie_default_hi) + settings.general.movie_default_hi = str(settings_movie_default_hi) settings_movie_default_forced = str(request.form.get('settings_movie_default_forced')) - settings.general.movie_default_forced = text_type(settings_movie_default_forced) + settings.general.movie_default_forced = str(settings_movie_default_forced) with open(os.path.join(args.config_dir, 'config', 'config.ini'), 'w+') as handle: settings.write(handle) @@ -579,23 +562,6 @@ def movie(no): return render_template('movie.html', id=str(no)) -@app.route('/scan_disk_movie/', methods=['GET']) -@login_required -def scan_disk_movie(no): - movies_scan_subtitles(no) - return '', 200 - - -@app.route('/search_missing_subtitles_movie/', methods=['GET']) -@login_required -def search_missing_subtitles_movie(no): - - ref = request.environ['HTTP_REFERER'] - - scheduler.add_job(movies_download_subtitles, args=[no], name=('movies_download_subtitles_' + str(no))) - redirect(ref) - - @app.route('/historyseries/') @login_required def historyseries(): @@ -620,16 +586,6 @@ def wantedmovies(): return render_template('wantedmovies.html') -@app.route('/wanted_search_missing_subtitles') -@login_required -def wanted_search_missing_subtitles_list(): - - ref = request.environ['HTTP_REFERER'] - - scheduler.add_job(wanted_search_missing_subtitles, name='manual_wanted_search_missing_subtitles') - redirect(ref) - - @app.route('/settings/') @login_required def _settings(): @@ -765,47 +721,47 @@ def save_settings(): settings_death_by_captcha_username = request.form.get('settings_death_by_captcha_username') settings_death_by_captcha_password = request.form.get('settings_death_by_captcha_password') - before = (six.text_type(settings.general.ip), int(settings.general.port), six.text_type(settings.general.base_url), - six.text_type(settings.general.path_mappings), six.text_type(settings.general.getboolean('use_sonarr')), - six.text_type(settings.general.getboolean('use_radarr')), six.text_type(settings.general.path_mappings_movie)) - after = (six.text_type(settings_general_ip), int(settings_general_port), six.text_type(settings_general_baseurl), - six.text_type(settings_general_pathmapping), six.text_type(settings_general_use_sonarr), - six.text_type(settings_general_use_radarr), six.text_type(settings_general_pathmapping_movie)) + before = (str(settings.general.ip), int(settings.general.port), str(settings.general.base_url), + str(settings.general.path_mappings), str(settings.general.getboolean('use_sonarr')), + str(settings.general.getboolean('use_radarr')), str(settings.general.path_mappings_movie)) + after = (str(settings_general_ip), int(settings_general_port), str(settings_general_baseurl), + str(settings_general_pathmapping), str(settings_general_use_sonarr), + str(settings_general_use_radarr), str(settings_general_pathmapping_movie)) - settings.general.ip = text_type(settings_general_ip) - settings.general.port = text_type(settings_general_port) - settings.general.base_url = text_type(settings_general_baseurl) - settings.general.path_mappings = text_type(settings_general_pathmapping) - settings.general.debug = text_type(settings_general_debug) - settings.general.chmod_enabled = text_type(settings_general_chmod_enabled) - settings.general.chmod = text_type(settings_general_chmod) - settings.general.branch = text_type(settings_general_branch) - settings.general.auto_update = text_type(settings_general_automatic) - settings.general.update_restart = text_type(settings_general_update_restart) - settings.analytics.enabled = text_type(settings_analytics_enabled) - settings.general.single_language = text_type(settings_general_single_language) - settings.general.minimum_score = text_type(settings_general_minimum_score) - settings.general.wanted_search_frequency = text_type(settings_general_wanted_search_frequency) - settings.general.use_scenename = text_type(settings_general_scenename) - settings.general.use_postprocessing = text_type(settings_general_use_postprocessing) - settings.general.postprocessing_cmd = text_type(settings_general_postprocessing_cmd) - settings.general.use_sonarr = text_type(settings_general_use_sonarr) - settings.general.use_radarr = text_type(settings_general_use_radarr) - settings.general.path_mappings_movie = text_type(settings_general_pathmapping_movie) - settings.general.page_size = text_type(settings_page_size) - settings.general.subfolder = text_type(settings_subfolder) + settings.general.ip = str(settings_general_ip) + settings.general.port = str(settings_general_port) + settings.general.base_url = str(settings_general_baseurl) + settings.general.path_mappings = str(settings_general_pathmapping) + settings.general.debug = str(settings_general_debug) + settings.general.chmod_enabled = str(settings_general_chmod_enabled) + settings.general.chmod = str(settings_general_chmod) + settings.general.branch = str(settings_general_branch) + settings.general.auto_update = str(settings_general_automatic) + settings.general.update_restart = str(settings_general_update_restart) + settings.analytics.enabled = str(settings_analytics_enabled) + settings.general.single_language = str(settings_general_single_language) + settings.general.minimum_score = str(settings_general_minimum_score) + settings.general.wanted_search_frequency = str(settings_general_wanted_search_frequency) + settings.general.use_scenename = str(settings_general_scenename) + settings.general.use_postprocessing = str(settings_general_use_postprocessing) + settings.general.postprocessing_cmd = str(settings_general_postprocessing_cmd) + settings.general.use_sonarr = str(settings_general_use_sonarr) + settings.general.use_radarr = str(settings_general_use_radarr) + settings.general.path_mappings_movie = str(settings_general_pathmapping_movie) + settings.general.page_size = str(settings_page_size) + settings.general.subfolder = str(settings_subfolder) if settings.general.subfolder == 'current': settings.general.subfolder_custom = '' else: - settings.general.subfolder_custom = text_type(settings_subfolder_custom) - settings.general.upgrade_subs = text_type(settings_upgrade_subs) - settings.general.upgrade_frequency = text_type(settings_upgrade_subs_frequency) - settings.general.days_to_upgrade_subs = text_type(settings_days_to_upgrade_subs) - settings.general.upgrade_manual = text_type(settings_upgrade_manual) - settings.general.anti_captcha_provider = text_type(settings_anti_captcha_provider) - settings.anticaptcha.anti_captcha_key = text_type(settings_anti_captcha_key) - settings.deathbycaptcha.username = text_type(settings_death_by_captcha_username) - settings.deathbycaptcha.password = text_type(settings_death_by_captcha_password) + settings.general.subfolder_custom = str(settings_subfolder_custom) + settings.general.upgrade_subs = str(settings_upgrade_subs) + settings.general.upgrade_frequency = str(settings_upgrade_subs_frequency) + settings.general.days_to_upgrade_subs = str(settings_days_to_upgrade_subs) + settings.general.upgrade_manual = str(settings_upgrade_manual) + settings.general.anti_captcha_provider = str(settings_anti_captcha_provider) + settings.anticaptcha.anti_captcha_key = str(settings_anti_captcha_key) + settings.deathbycaptcha.username = str(settings_death_by_captcha_username) + settings.deathbycaptcha.password = str(settings_death_by_captcha_password) # set anti-captcha provider and key if settings.general.anti_captcha_provider == 'anti-captcha': @@ -818,12 +774,12 @@ def save_settings(): else: os.environ["ANTICAPTCHA_CLASS"] = '' - settings.general.minimum_score_movie = text_type(settings_general_minimum_score_movies) - settings.general.use_embedded_subs = text_type(settings_general_embedded) - settings.general.utf8_encode = text_type(settings_general_utf8_encode) - settings.general.ignore_pgs_subs = text_type(settings_general_ignore_pgs) - settings.general.adaptive_searching = text_type(settings_general_adaptive_searching) - settings.general.multithreading = text_type(settings_general_multithreading) + settings.general.minimum_score_movie = str(settings_general_minimum_score_movies) + settings.general.use_embedded_subs = str(settings_general_embedded) + settings.general.utf8_encode = str(settings_general_utf8_encode) + settings.general.ignore_pgs_subs = str(settings_general_ignore_pgs) + settings.general.adaptive_searching = str(settings_general_adaptive_searching) + settings.general.multithreading = str(settings_general_multithreading) if after != before: configured() @@ -835,22 +791,22 @@ def save_settings(): settings_proxy_password = request.form.get('settings_proxy_password') settings_proxy_exclude = request.form.get('settings_proxy_exclude') - before_proxy_password = (six.text_type(settings.proxy.type), six.text_type(settings.proxy.exclude)) + before_proxy_password = (str(settings.proxy.type), str(settings.proxy.exclude)) if before_proxy_password[0] != settings_proxy_type: configured() if before_proxy_password[1] == settings_proxy_password: - settings.proxy.type = text_type(settings_proxy_type) - settings.proxy.url = text_type(settings_proxy_url) - settings.proxy.port = text_type(settings_proxy_port) - settings.proxy.username = text_type(settings_proxy_username) - settings.proxy.exclude = text_type(settings_proxy_exclude) + settings.proxy.type = str(settings_proxy_type) + settings.proxy.url = str(settings_proxy_url) + settings.proxy.port = str(settings_proxy_port) + settings.proxy.username = str(settings_proxy_username) + settings.proxy.exclude = str(settings_proxy_exclude) else: - settings.proxy.type = text_type(settings_proxy_type) - settings.proxy.url = text_type(settings_proxy_url) - settings.proxy.port = text_type(settings_proxy_port) - settings.proxy.username = text_type(settings_proxy_username) - settings.proxy.password = text_type(settings_proxy_password) - settings.proxy.exclude = text_type(settings_proxy_exclude) + settings.proxy.type = str(settings_proxy_type) + settings.proxy.url = str(settings_proxy_url) + settings.proxy.port = str(settings_proxy_port) + settings.proxy.username = str(settings_proxy_username) + settings.proxy.password = str(settings_proxy_password) + settings.proxy.exclude = str(settings_proxy_exclude) settings_auth_type = request.form.get('settings_auth_type') settings_auth_username = request.form.get('settings_auth_username') @@ -859,11 +815,11 @@ def save_settings(): if settings.auth.type != settings_auth_type: configured() if settings.auth.password == settings_auth_password: - settings.auth.type = text_type(settings_auth_type) - settings.auth.username = text_type(settings_auth_username) + settings.auth.type = str(settings_auth_type) + settings.auth.username = str(settings_auth_username) else: - settings.auth.type = text_type(settings_auth_type) - settings.auth.username = text_type(settings_auth_username) + settings.auth.type = str(settings_auth_type) + settings.auth.username = str(settings_auth_username) settings.auth.password = hashlib.md5(settings_auth_password.encode('utf-8')).hexdigest() settings.auth.apikey = request.form.get('settings_auth_apikey') @@ -885,15 +841,15 @@ def save_settings(): settings_sonarr_sync_day = request.form.get('settings_sonarr_sync_day') settings_sonarr_sync_hour = request.form.get('settings_sonarr_sync_hour') - settings.sonarr.ip = text_type(settings_sonarr_ip) - settings.sonarr.port = text_type(settings_sonarr_port) - settings.sonarr.base_url = text_type(settings_sonarr_baseurl) - settings.sonarr.ssl = text_type(settings_sonarr_ssl) - settings.sonarr.apikey = text_type(settings_sonarr_apikey) - settings.sonarr.only_monitored = text_type(settings_sonarr_only_monitored) - settings.sonarr.full_update = text_type(settings_sonarr_sync) - settings.sonarr.full_update_day = text_type(settings_sonarr_sync_day) - settings.sonarr.full_update_hour = text_type(settings_sonarr_sync_hour) + settings.sonarr.ip = str(settings_sonarr_ip) + settings.sonarr.port = str(settings_sonarr_port) + settings.sonarr.base_url = str(settings_sonarr_baseurl) + settings.sonarr.ssl = str(settings_sonarr_ssl) + settings.sonarr.apikey = str(settings_sonarr_apikey) + settings.sonarr.only_monitored = str(settings_sonarr_only_monitored) + settings.sonarr.full_update = str(settings_sonarr_sync) + settings.sonarr.full_update_day = str(settings_sonarr_sync_day) + settings.sonarr.full_update_hour = str(settings_sonarr_sync_hour) settings_radarr_ip = request.form.get('settings_radarr_ip') settings_radarr_port = request.form.get('settings_radarr_port') @@ -913,15 +869,15 @@ def save_settings(): settings_radarr_sync_day = request.form.get('settings_radarr_sync_day') settings_radarr_sync_hour = request.form.get('settings_radarr_sync_hour') - settings.radarr.ip = text_type(settings_radarr_ip) - settings.radarr.port = text_type(settings_radarr_port) - settings.radarr.base_url = text_type(settings_radarr_baseurl) - settings.radarr.ssl = text_type(settings_radarr_ssl) - settings.radarr.apikey = text_type(settings_radarr_apikey) - settings.radarr.only_monitored = text_type(settings_radarr_only_monitored) - settings.radarr.full_update = text_type(settings_radarr_sync) - settings.radarr.full_update_day = text_type(settings_radarr_sync_day) - settings.radarr.full_update_hour = text_type(settings_radarr_sync_hour) + settings.radarr.ip = str(settings_radarr_ip) + settings.radarr.port = str(settings_radarr_port) + settings.radarr.base_url = str(settings_radarr_baseurl) + settings.radarr.ssl = str(settings_radarr_ssl) + settings.radarr.apikey = str(settings_radarr_apikey) + settings.radarr.only_monitored = str(settings_radarr_only_monitored) + settings.radarr.full_update = str(settings_radarr_sync) + settings.radarr.full_update_day = str(settings_radarr_sync_day) + settings.radarr.full_update_hour = str(settings_radarr_sync_hour) settings_subliminal_providers = request.form.getlist('settings_subliminal_providers') settings.general.enabled_providers = u'' if not settings_subliminal_providers else ','.join( @@ -953,7 +909,7 @@ def save_settings(): settings.addic7ed.username = request.form.get('settings_addic7ed_username') settings.addic7ed.password = request.form.get('settings_addic7ed_password') - settings.addic7ed.random_agents = text_type(settings_addic7ed_random_agents) + settings.addic7ed.random_agents = str(settings_addic7ed_random_agents) settings.assrt.token = request.form.get('settings_assrt_token') settings.legendasdivx.username = request.form.get('settings_legendasdivx_username') settings.legendasdivx.password = request.form.get('settings_legendasdivx_password') @@ -961,9 +917,9 @@ def save_settings(): settings.legendastv.password = request.form.get('settings_legendastv_password') settings.opensubtitles.username = request.form.get('settings_opensubtitles_username') settings.opensubtitles.password = request.form.get('settings_opensubtitles_password') - settings.opensubtitles.vip = text_type(settings_opensubtitles_vip) - settings.opensubtitles.ssl = text_type(settings_opensubtitles_ssl) - settings.opensubtitles.skip_wrong_fps = text_type(settings_opensubtitles_skip_wrong_fps) + settings.opensubtitles.vip = str(settings_opensubtitles_vip) + settings.opensubtitles.ssl = str(settings_opensubtitles_ssl) + settings.opensubtitles.skip_wrong_fps = str(settings_opensubtitles_skip_wrong_fps) settings.xsubs.username = request.form.get('settings_xsubs_username') settings.xsubs.password = request.form.get('settings_xsubs_password') settings.napisy24.username = request.form.get('settings_napisy24_username') @@ -984,44 +940,44 @@ def save_settings(): settings_serie_default_enabled = 'False' else: settings_serie_default_enabled = 'True' - settings.general.serie_default_enabled = text_type(settings_serie_default_enabled) + settings.general.serie_default_enabled = str(settings_serie_default_enabled) settings_serie_default_languages = str(request.form.getlist('settings_serie_default_languages')) if settings_serie_default_languages == "['None']": settings_serie_default_languages = 'None' - settings.general.serie_default_language = text_type(settings_serie_default_languages) + settings.general.serie_default_language = str(settings_serie_default_languages) settings_serie_default_hi = request.form.get('settings_serie_default_hi') if settings_serie_default_hi is None: settings_serie_default_hi = 'False' else: settings_serie_default_hi = 'True' - settings.general.serie_default_hi = text_type(settings_serie_default_hi) + settings.general.serie_default_hi = str(settings_serie_default_hi) settings_serie_default_forced = str(request.form.get('settings_serie_default_forced')) - settings.general.serie_default_forced = text_type(settings_serie_default_forced) + settings.general.serie_default_forced = str(settings_serie_default_forced) settings_movie_default_enabled = request.form.get('settings_movie_default_enabled') if settings_movie_default_enabled is None: settings_movie_default_enabled = 'False' else: settings_movie_default_enabled = 'True' - settings.general.movie_default_enabled = text_type(settings_movie_default_enabled) + settings.general.movie_default_enabled = str(settings_movie_default_enabled) settings_movie_default_languages = str(request.form.getlist('settings_movie_default_languages')) if settings_movie_default_languages == "['None']": settings_movie_default_languages = 'None' - settings.general.movie_default_language = text_type(settings_movie_default_languages) + settings.general.movie_default_language = str(settings_movie_default_languages) settings_movie_default_hi = request.form.get('settings_movie_default_hi') if settings_movie_default_hi is None: settings_movie_default_hi = 'False' else: settings_movie_default_hi = 'True' - settings.general.movie_default_hi = text_type(settings_movie_default_hi) + settings.general.movie_default_hi = str(settings_movie_default_hi) settings_movie_default_forced = str(request.form.get('settings_movie_default_forced')) - settings.general.movie_default_forced = text_type(settings_movie_default_forced) + settings.general.movie_default_forced = str(settings_movie_default_forced) with open(os.path.join(args.config_dir, 'config', 'config.ini'), 'w+') as handle: settings.write(handle) @@ -1113,161 +1069,6 @@ def execute_task(taskid): return '', 200 -@app.route('/remove_subtitles_movie', methods=['POST']) -@login_required -def remove_subtitles_movie(): - moviePath = request.form.get('moviePath') - language = request.form.get('language') - subtitlesPath = request.form.get('subtitlesPath') - radarrId = request.form.get('radarrId') - - try: - os.remove(subtitlesPath) - result = language_from_alpha3(language) + " subtitles deleted from disk." - history_log_movie(0, radarrId, result, language=alpha2_from_alpha3(language)) - except OSError as e: - logging.exception('BAZARR cannot delete subtitles file: ' + subtitlesPath) - store_subtitles_movie(path_replace_reverse_movie(moviePath), moviePath) - - -@app.route('/get_subtitle_movie', methods=['POST']) -@login_required -def get_subtitle_movie(): - - ref = request.environ['HTTP_REFERER'] - - moviePath = request.form.get('moviePath') - sceneName = request.form.get('sceneName') - if sceneName == "null": - sceneName = "None" - language = request.form.get('language') - hi = request.form.get('hi').capitalize() - forced = request.form.get('forced').capitalize() - radarrId = request.form.get('radarrId') - title = request.form.get('title') - providers_list = get_providers() - providers_auth = get_providers_auth() - - try: - result = download_subtitle(moviePath, language, hi, forced, providers_list, providers_auth, sceneName, title, - 'movie') - if result is not None: - message = result[0] - path = result[1] - forced = result[5] - language_code = result[2] + ":forced" if forced else result[2] - provider = result[3] - score = result[4] - history_log_movie(1, radarrId, message, path, language_code, provider, score) - send_notifications_movie(radarrId, message) - store_subtitles_movie(path, moviePath) - redirect(ref) - except OSError: - pass - - -@app.route('/manual_search_movie', methods=['POST']) -@login_required -def manual_search_movie_json(): - - - moviePath = request.form.get('moviePath') - sceneName = request.form.get('sceneName') - if sceneName == "null": - sceneName = "None" - language = request.form.get('language') - hi = request.form.get('hi').capitalize() - forced = request.form.get('forced').capitalize() - title = request.form.get('title') - providers_list = get_providers() - providers_auth = get_providers_auth() - - data = manual_search(moviePath, language, hi, forced, providers_list, providers_auth, sceneName, title, 'movie') - return dict(data=data) - - -@app.route('/manual_get_subtitle_movie', methods=['POST']) -@login_required -def manual_get_subtitle_movie(): - - ref = request.environ['HTTP_REFERER'] - - moviePath = request.form.get('moviePath') - sceneName = request.form.get('sceneName') - if sceneName == "null": - sceneName = "None" - language = request.form.get('language') - hi = request.form.get('hi').capitalize() - forced = request.form.get('forced').capitalize() - selected_provider = request.form.get('provider') - subtitle = request.form.get('subtitle') - radarrId = request.form.get('radarrId') - title = request.form.get('title') - providers_auth = get_providers_auth() - - try: - result = manual_download_subtitle(moviePath, language, hi, forced, subtitle, selected_provider, providers_auth, - sceneName, title, 'movie') - if result is not None: - message = result[0] - path = result[1] - forced = result[5] - language_code = result[2] + ":forced" if forced else result[2] - provider = result[3] - score = result[4] - history_log_movie(2, radarrId, message, path, language_code, provider, score) - send_notifications_movie(radarrId, message) - store_subtitles_movie(path, moviePath) - redirect(ref) - except OSError: - pass - - -@app.route('/manual_upload_subtitle_movie', methods=['POST']) -@login_required -def perform_manual_upload_subtitle_movie(): - - ref = request.environ['HTTP_REFERER'] - - moviePath = request.form.get('moviePath') - sceneName = request.form.get('sceneName') - if sceneName == "null": - sceneName = "None" - language = request.form.get('language') - forced = True if request.form.get('forced') == '1' else False - upload = request.files.get('upload') - radarrId = request.form.get('radarrId') - title = request.form.get('title') - - _, ext = os.path.splitext(upload.filename) - - if ext not in SUBTITLE_EXTENSIONS: - raise ValueError('A subtitle of an invalid format was uploaded.') - - try: - result = manual_upload_subtitle(path=moviePath, - language=language, - forced=forced, - title=title, - scene_name=sceneName, - media_type='series', - subtitle=upload) - - if result is not None: - message = result[0] - path = result[1] - language_code = language + ":forced" if forced else language - provider = "manual" - score = 120 - history_log_movie(4, radarrId, message, path, language_code, provider, score) - send_notifications_movie(radarrId, message) - store_subtitles_movie(path, moviePath) - - redirect(ref) - except OSError: - pass - - def configured(): database.execute("UPDATE system SET configured = 1") @@ -1336,7 +1137,7 @@ def api_movies_history(): @login_required def test_url(protocol, url): - url = six.moves.urllib.parse.unquote(url) + url = unquote(url) try: result = requests.get(protocol + "://" + url, allow_redirects=False, verify=False).json()['version'] except: @@ -1349,7 +1150,7 @@ def test_url(protocol, url): @login_required def test_notification(protocol, provider): - provider = six.moves.urllib.parse.unquote(provider) + provider = unquote(provider) apobj = apprise.Apprise() apobj.add(protocol + "://" + provider) diff --git a/bazarr/notifier.py b/bazarr/notifier.py index c9761ac98..0349f641d 100644 --- a/bazarr/notifier.py +++ b/bazarr/notifier.py @@ -1,6 +1,5 @@ # coding=utf-8 -from __future__ import absolute_import import apprise import logging diff --git a/bazarr/queueconfig.py b/bazarr/queueconfig.py index 55ece9b9c..ff5968d23 100644 --- a/bazarr/queueconfig.py +++ b/bazarr/queueconfig.py @@ -1,4 +1,3 @@ -from __future__ import absolute_import from collections import deque import json diff --git a/bazarr/scheduler.py b/bazarr/scheduler.py index 2fab39767..09b4811a8 100644 --- a/bazarr/scheduler.py +++ b/bazarr/scheduler.py @@ -1,11 +1,10 @@ # coding=utf-8 -from __future__ import absolute_import from get_episodes import sync_episodes, update_all_episodes from get_movies import update_movies, update_all_movies from get_series import update_series from config import settings -from get_subtitle import wanted_search_missing_subtitles, upgrade_subtitles +from get_subtitle import wanted_search_missing_subtitles_series, wanted_search_missing_subtitles_movies, upgrade_subtitles from utils import cache_maintenance from get_args import args if not args.no_update: @@ -211,10 +210,15 @@ class Scheduler: id='update_release', name='Update Release Info', replace_existing=True) def __search_wanted_subtitles_task(self): - if settings.general.getboolean('use_sonarr') or settings.general.getboolean('use_radarr'): + if settings.general.getboolean('use_sonarr'): self.aps_scheduler.add_job( - wanted_search_missing_subtitles, IntervalTrigger(hours=int(settings.general.wanted_search_frequency)), - max_instances=1, coalesce=True, misfire_grace_time=15, id='wanted_search_missing_subtitles', + wanted_search_missing_subtitles_series, IntervalTrigger(hours=int(settings.general.wanted_search_frequency)), + max_instances=1, coalesce=True, misfire_grace_time=15, id='wanted_search_missing_subtitles_series', + name='Search for wanted Subtitles', replace_existing=True) + if settings.general.getboolean('use_radarr'): + self.aps_scheduler.add_job( + wanted_search_missing_subtitles_movies, IntervalTrigger(hours=int(settings.general.wanted_search_frequency)), + max_instances=1, coalesce=True, misfire_grace_time=15, id='wanted_search_missing_subtitles_movies', name='Search for wanted Subtitles', replace_existing=True) def __upgrade_subtitles_task(self): diff --git a/bazarr/utils.py b/bazarr/utils.py index 4b40888e6..a820ac2ca 100644 --- a/bazarr/utils.py +++ b/bazarr/utils.py @@ -1,6 +1,5 @@ # coding=utf-8 -from __future__ import absolute_import import os import time import platform diff --git a/views/wantedmovies.html b/views/wantedmovies.html index 8e5603f1b..faa7743e9 100644 --- a/views/wantedmovies.html +++ b/views/wantedmovies.html @@ -3,7 +3,10 @@ {% block title %}Wanted (Movies) - Bazarr{% endblock %} {% block bcleft %} - + {% endblock bcleft %} {% block bcright %} @@ -61,6 +64,20 @@ ] }); + $('#search_button').on('click', function(e){ + e.preventDefault(); + $.ajax({ + url: "{{ url_for('api.searchwantedmovies') }}", + type: 'GET', + beforeSend: function() { + $('#search_button').find("i").addClass('fa-spin'); + }, + complete: function() { + $('#search_button').find("i").removeClass('fa-spin'); + } + }); + }); + $('#wanted_movies').on('click', '.get_subtitle', function(e){ $(this).tooltip('dispose'); e.preventDefault(); diff --git a/views/wantedseries.html b/views/wantedseries.html index 433e0c5e7..cde5eff19 100644 --- a/views/wantedseries.html +++ b/views/wantedseries.html @@ -3,7 +3,10 @@ {% block title %}Wanted (Series) - Bazarr{% endblock %} {% block bcleft %} - + {% endblock bcleft %} {% block bcright %} @@ -65,6 +68,20 @@ ] }); + $('#search_button').on('click', function(e){ + e.preventDefault(); + $.ajax({ + url: "{{ url_for('api.searchwantedseries') }}", + type: 'GET', + beforeSend: function() { + $('#search_button').find("i").addClass('fa-spin'); + }, + complete: function() { + $('#search_button').find("i").removeClass('fa-spin'); + } + }); + }); + $('#wanted_series').on('click', '.get_subtitle', function(e){ $(this).tooltip('dispose'); e.preventDefault();