diff --git a/bazarr.py b/bazarr.py index 67521519e..8580ad2cc 100644 --- a/bazarr.py +++ b/bazarr.py @@ -7,7 +7,7 @@ import os import sys reload(sys) sys.setdefaultencoding('utf8') -sys.path.insert(0,os.path.join(os.path.dirname(__file__), 'libs/')) +sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'libs/')) import sqlite3 from init_db import * @@ -61,7 +61,7 @@ from update_modules import * from bottle import route, run, template, static_file, request, redirect, response, HTTPError import bottle -bottle.TEMPLATE_PATH.insert(0,os.path.join(os.path.dirname(__file__), 'views/')) +bottle.TEMPLATE_PATH.insert(0, os.path.join(os.path.dirname(__file__), 'views/')) bottle.debug(True) bottle.TEMPLATES.clear() @@ -79,19 +79,19 @@ import math import ast import hashlib -from get_languages import * +from get_languages import load_language_in_db, language_from_alpha3 from get_providers import * from get_series import * from get_episodes import * -from get_general_settings import * -from get_sonarr_settings import * -from check_update import * -from list_subtitles import * -from get_subtitle import * -from utils import * +from get_general_settings import base_url, ip, port, path_replace, path_replace_movie +from get_sonarr_settings import get_sonarr_settings +from check_update import check_and_apply_update +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, wanted_download_subtitles, wanted_search_missing_subtitles +from utils import history_log, history_log_movie from scheduler import * -from notifier import send_notifications +from notifier import send_notifications, send_notifications_movie # Reset restart required warning on start conn = sqlite3.connect(os.path.join(os.path.dirname(__file__), 'data/db/bazarr.db'), timeout=30) @@ -216,7 +216,6 @@ def redirect_root(): @route(base_url + 'series') @custom_auth_basic(check_credentials) def series(): - import update_db single_language = get_general_settings()[7] db = sqlite3.connect(os.path.join(os.path.dirname(__file__), 'data/db/bazarr.db'), timeout=30) @@ -361,7 +360,7 @@ def edit_serieseditor(): @route(base_url + 'episodes/', method='GET') @custom_auth_basic(check_credentials) def episodes(no): - single_language = get_general_settings()[7] + # single_language = get_general_settings()[7] url_sonarr_short = get_sonarr_settings()[1] conn = sqlite3.connect(os.path.join(os.path.dirname(__file__), 'data/db/bazarr.db'), timeout=30) @@ -378,7 +377,7 @@ def episodes(no): c.close() episodes = reversed(sorted(episodes, key=operator.itemgetter(2))) seasons_list = [] - for key,season in itertools.groupby(episodes,operator.itemgetter(2)): + for key, season in itertools.groupby(episodes,operator.itemgetter(2)): seasons_list.append(list(season)) return template('episodes', __file__=__file__, bazarr_version=bazarr_version, no=no, details=series_details, languages=languages, seasons=seasons_list, url_sonarr_short=url_sonarr_short, base_url=base_url, tvdbid=tvdbid, number=number) @@ -386,7 +385,6 @@ def episodes(no): @route(base_url + 'movies') @custom_auth_basic(check_credentials) def movies(): - import update_db single_language = get_general_settings()[7] db = sqlite3.connect(os.path.join(os.path.dirname(__file__), 'data/db/bazarr.db'), timeout=30) @@ -498,7 +496,7 @@ def edit_movie(no): @custom_auth_basic(check_credentials) def movie(no): from get_radarr_settings import get_radarr_settings - single_language = get_general_settings()[7] + # single_language = get_general_settings()[7] url_radarr_short = get_radarr_settings()[1] conn = sqlite3.connect(os.path.join(os.path.dirname(__file__), 'data/db/bazarr.db'), timeout=30) @@ -1235,132 +1233,132 @@ def execute_task(taskid): @route(base_url + 'remove_subtitles', method='POST') @custom_auth_basic(check_credentials) def remove_subtitles(): - episodePath = request.forms.get('episodePath') - language = request.forms.get('language') - subtitlesPath = request.forms.get('subtitlesPath') - sonarrSeriesId = request.forms.get('sonarrSeriesId') - sonarrEpisodeId = request.forms.get('sonarrEpisodeId') + episodePath = request.forms.get('episodePath') + language = request.forms.get('language') + subtitlesPath = request.forms.get('subtitlesPath') + sonarrSeriesId = request.forms.get('sonarrSeriesId') + sonarrEpisodeId = request.forms.get('sonarrEpisodeId') - try: - os.remove(subtitlesPath) - result = language_from_alpha3(language) + " subtitles deleted from disk." - history_log(0, sonarrSeriesId, sonarrEpisodeId, result) - except OSError: - pass - store_subtitles(unicode(episodePath)) - list_missing_subtitles(sonarrSeriesId) + try: + os.remove(subtitlesPath) + result = language_from_alpha3(language) + " subtitles deleted from disk." + history_log(0, sonarrSeriesId, sonarrEpisodeId, result) + except OSError: + pass + store_subtitles(unicode(episodePath)) + list_missing_subtitles(sonarrSeriesId) @route(base_url + 'remove_subtitles_movie', method='POST') @custom_auth_basic(check_credentials) def remove_subtitles_movie(): - moviePath = request.forms.get('moviePath') - language = request.forms.get('language') - subtitlesPath = request.forms.get('subtitlesPath') - radarrId = request.forms.get('radarrId') + moviePath = request.forms.get('moviePath') + language = request.forms.get('language') + subtitlesPath = request.forms.get('subtitlesPath') + radarrId = request.forms.get('radarrId') - try: - os.remove(subtitlesPath) - result = language_from_alpha3(language) + " subtitles deleted from disk." - history_log_movie(0, radarrId, result) - except OSError: - pass - store_subtitles_movie(unicode(moviePath)) - list_missing_subtitles_movies(radarrId) + try: + os.remove(subtitlesPath) + result = language_from_alpha3(language) + " subtitles deleted from disk." + history_log_movie(0, radarrId, result) + except OSError: + pass + store_subtitles_movie(unicode(moviePath)) + list_missing_subtitles_movies(radarrId) @route(base_url + 'get_subtitle', method='POST') @custom_auth_basic(check_credentials) def get_subtitle(): - ref = request.environ['HTTP_REFERER'] + ref = request.environ['HTTP_REFERER'] - episodePath = request.forms.get('episodePath') - sceneName = request.forms.get('sceneName') - language = request.forms.get('language') - hi = request.forms.get('hi') - sonarrSeriesId = request.forms.get('sonarrSeriesId') - sonarrEpisodeId = request.forms.get('sonarrEpisodeId') - tvdbid = request.forms.get('tvdbid') + episodePath = request.forms.get('episodePath') + sceneName = request.forms.get('sceneName') + language = request.forms.get('language') + hi = request.forms.get('hi') + sonarrSeriesId = request.forms.get('sonarrSeriesId') + sonarrEpisodeId = request.forms.get('sonarrEpisodeId') + # tvdbid = request.forms.get('tvdbid') - db = sqlite3.connect(os.path.join(os.path.dirname(__file__), 'data/db/bazarr.db'), timeout=30) - c = db.cursor() - c.execute("SELECT * FROM table_settings_providers WHERE enabled = 1") - enabled_providers = c.fetchall() - c.close() + db = sqlite3.connect(os.path.join(os.path.dirname(__file__), 'data/db/bazarr.db'), timeout=30) + c = db.cursor() + c.execute("SELECT * FROM table_settings_providers WHERE enabled = 1") + enabled_providers = c.fetchall() + c.close() - providers_list = [] - providers_auth = {} - if len(enabled_providers) > 0: - for provider in enabled_providers: - providers_list.append(provider[0]) - try: - if provider[2] is not '' and provider[3] is not '': - provider_auth = providers_auth.append(provider[0]) - provider_auth.update({'username':providers[2], 'password':providers[3]}) - else: - providers_auth = None - except: + providers_list = [] + providers_auth = {} + if len(enabled_providers) > 0: + for provider in enabled_providers: + providers_list.append(provider[0]) + try: + if provider[2] is not '' and provider[3] is not '': + provider_auth = providers_auth.append(provider[0]) + provider_auth.update({'username':providers[2], 'password':providers[3]}) + else: providers_auth = None - else: - providers_list = None - providers_auth = None + except: + providers_auth = None + else: + providers_list = None + providers_auth = None - try: - result = download_subtitle(episodePath, language, hi, providers_list, providers_auth, sceneName, 'series') - if result is not None: - history_log(1, sonarrSeriesId, sonarrEpisodeId, result) - send_notifications(sonarrSeriesId, sonarrEpisodeId, result) - store_subtitles(unicode(episodePath)) - list_missing_subtitles(sonarrSeriesId) - redirect(ref) - except OSError: - pass + try: + result = download_subtitle(episodePath, language, hi, providers_list, providers_auth, sceneName, 'series') + if result is not None: + history_log(1, sonarrSeriesId, sonarrEpisodeId, result) + send_notifications(sonarrSeriesId, sonarrEpisodeId, result) + store_subtitles(unicode(episodePath)) + list_missing_subtitles(sonarrSeriesId) + redirect(ref) + except OSError: + pass @route(base_url + 'get_subtitle_movie', method='POST') @custom_auth_basic(check_credentials) def get_subtitle_movie(): - ref = request.environ['HTTP_REFERER'] + ref = request.environ['HTTP_REFERER'] - moviePath = request.forms.get('moviePath') - sceneName = request.forms.get('sceneName') - language = request.forms.get('language') - hi = request.forms.get('hi') - radarrId = request.forms.get('radarrId') - tmdbid = request.forms.get('tmdbid') + moviePath = request.forms.get('moviePath') + sceneName = request.forms.get('sceneName') + language = request.forms.get('language') + hi = request.forms.get('hi') + radarrId = request.forms.get('radarrId') + # tmdbid = request.forms.get('tmdbid') - db = sqlite3.connect(os.path.join(os.path.dirname(__file__), 'data/db/bazarr.db'), timeout=30) - c = db.cursor() - c.execute("SELECT * FROM table_settings_providers WHERE enabled = 1") - enabled_providers = c.fetchall() - c.close() + db = sqlite3.connect(os.path.join(os.path.dirname(__file__), 'data/db/bazarr.db'), timeout=30) + c = db.cursor() + c.execute("SELECT * FROM table_settings_providers WHERE enabled = 1") + enabled_providers = c.fetchall() + c.close() - providers_list = [] - providers_auth = {} - if len(enabled_providers) > 0: - for provider in enabled_providers: - providers_list.append(provider[0]) - try: - if provider[2] is not '' and provider[3] is not '': - provider_auth = providers_auth.append(provider[0]) - provider_auth.update({'username':providers[2], 'password':providers[3]}) - else: - providers_auth = None - except: + providers_list = [] + providers_auth = {} + if len(enabled_providers) > 0: + for provider in enabled_providers: + providers_list.append(provider[0]) + try: + if provider[2] is not '' and provider[3] is not '': + provider_auth = providers_auth.append(provider[0]) + provider_auth.update({'username':providers[2], 'password':providers[3]}) + else: providers_auth = None - else: - providers_list = None - providers_auth = None + except: + providers_auth = None + else: + providers_list = None + providers_auth = None - try: - result = download_subtitle(moviePath, language, hi, providers_list, providers_auth, sceneName, 'movies') - if result is not None: - history_log_movie(1, radarrId, result) - send_notifications_movie(radarrId, result) - store_subtitles_movie(unicode(moviePath)) - list_missing_subtitles_movies(radarrId) - redirect(ref) - except OSError: - pass + try: + result = download_subtitle(moviePath, language, hi, providers_list, providers_auth, sceneName, 'movies') + if result is not None: + history_log_movie(1, radarrId, result) + send_notifications_movie(radarrId, result) + store_subtitles_movie(unicode(moviePath)) + list_missing_subtitles_movies(radarrId) + redirect(ref) + except OSError: + pass def configured(): conn = sqlite3.connect(os.path.join(os.path.dirname(__file__), 'data/db/bazarr.db'), timeout=30) diff --git a/check_update.py b/check_update.py index f34bf3dff..c52da92c9 100644 --- a/check_update.py +++ b/check_update.py @@ -1,4 +1,4 @@ -from get_general_settings import * +from get_general_settings import get_general_settings import os import logging diff --git a/get_episodes.py b/get_episodes.py index 920f0a483..6365a624a 100644 --- a/get_episodes.py +++ b/get_episodes.py @@ -3,8 +3,8 @@ import sqlite3 import requests import logging -from get_general_settings import * -from list_subtitles import * +from get_general_settings import path_replace +from list_subtitles import list_missing_subtitles, store_subtitles, series_full_scan_subtitles, movies_full_scan_subtitles def update_all_episodes(): series_full_scan_subtitles() diff --git a/get_movies.py b/get_movies.py index 4318daa4f..5ae671ead 100644 --- a/get_movies.py +++ b/get_movies.py @@ -3,13 +3,13 @@ import sqlite3 import requests import logging -from get_general_settings import * -from list_subtitles import * +from get_general_settings import get_general_settings, path_replace_movie +from list_subtitles import store_subtitles_movie, list_missing_subtitles_movies def update_movies(): from get_radarr_settings import get_radarr_settings url_radarr = get_radarr_settings()[0] - url_radarr_short = get_radarr_settings()[1] + # url_radarr_short = get_radarr_settings()[1] apikey_radarr = get_radarr_settings()[2] movie_default_enabled = get_general_settings()[18] movie_default_language = get_general_settings()[19] @@ -108,7 +108,7 @@ def update_movies(): def get_profile_list(): from get_radarr_settings import get_radarr_settings url_radarr = get_radarr_settings()[0] - url_radarr_short = get_radarr_settings()[1] + # url_radarr_short = get_radarr_settings()[1] apikey_radarr = get_radarr_settings()[2] # Get profiles data from radarr diff --git a/get_providers.py b/get_providers.py index 7c001e64a..99dd819a8 100644 --- a/get_providers.py +++ b/get_providers.py @@ -1,6 +1,6 @@ import sqlite3 import os -from subliminal import * +from subliminal import provider_manager # Get providers list from subliminal providers_list = sorted(provider_manager.names()) diff --git a/get_series.py b/get_series.py index b57798be9..83527821c 100644 --- a/get_series.py +++ b/get_series.py @@ -3,13 +3,12 @@ import sqlite3 import requests import logging -from get_general_settings import * -from list_subtitles import * +from get_general_settings import get_general_settings +from list_subtitles import list_missing_subtitles def update_series(): from get_sonarr_settings import get_sonarr_settings url_sonarr = get_sonarr_settings()[0] - url_sonarr_short = get_sonarr_settings()[1] apikey_sonarr = get_sonarr_settings()[2] serie_default_enabled = get_general_settings()[15] serie_default_language = get_general_settings()[16] @@ -87,7 +86,7 @@ def update_series(): def get_profile_list(): from get_sonarr_settings import get_sonarr_settings url_sonarr = get_sonarr_settings()[0] - url_sonarr_short = get_sonarr_settings()[1] + # url_sonarr_short = get_sonarr_settings()[1] apikey_sonarr = get_sonarr_settings()[2] # Get profiles data from Sonarr diff --git a/get_subtitle.py b/get_subtitle.py index 531de4237..00e42281c 100644 --- a/get_subtitle.py +++ b/get_subtitle.py @@ -3,13 +3,13 @@ import sqlite3 import ast import logging import subprocess -from babelfish import * -from subliminal import * -from get_languages import * +from babelfish import Language +from subliminal import region, scan_video, Video, download_best_subtitles, compute_score, save_subtitles +from get_languages import language_from_alpha3, alpha2_from_alpha3, alpha3_from_alpha2 from bs4 import UnicodeDammit -from get_general_settings import * -from list_subtitles import * -from utils import * +from get_general_settings import get_general_settings, pp_replace, path_replace, path_replace_movie, path_replace_reverse, path_replace_reverse_movie +from list_subtitles import store_subtitles, list_missing_subtitles, store_subtitles_movie, list_missing_subtitles_movies +from utils import history_log, history_log_movie from notifier import send_notifications, send_notifications_movie # configure the cache diff --git a/list_subtitles.py b/list_subtitles.py index ca3ab80a7..940bf56e1 100644 --- a/list_subtitles.py +++ b/list_subtitles.py @@ -2,20 +2,21 @@ import gc import os import enzyme import babelfish -from subliminal import * +import logging +from subliminal import core import sqlite3 import ast import langdetect from bs4 import UnicodeDammit from itertools import islice -from get_general_settings import * -from get_languages import * +from get_general_settings import path_replace_reverse, path_replace, path_replace_reverse_movie, path_replace_movie, get_general_settings +from get_languages import alpha2_from_alpha3 gc.enable() def store_subtitles(file): - languages = [] + # languages = [] actual_subtitles = [] if os.path.exists(file): if os.path.splitext(file)[1] == '.mkv': @@ -70,7 +71,7 @@ def store_subtitles(file): def store_subtitles_movie(file): - languages = [] + # languages = [] actual_subtitles = [] if os.path.exists(file): if os.path.splitext(file)[1] == '.mkv': diff --git a/scheduler.py b/scheduler.py index 52290726d..ac6764453 100644 --- a/scheduler.py +++ b/scheduler.py @@ -1,13 +1,13 @@ -from get_general_settings import * +from get_general_settings import automatic from get_sonarr_settings import get_sonarr_settings from get_radarr_settings import get_radarr_settings from get_general_settings import get_general_settings -from get_series import * -from get_episodes import * -from get_movies import * -from list_subtitles import * -from get_subtitle import * -from check_update import * +from get_series import update_series +from get_episodes import update_all_episodes, update_all_movies, sync_episodes +from get_movies import update_movies +from list_subtitles import store_subtitles +from get_subtitle import download_best_subtitles, wanted_search_missing_subtitles +from check_update import check_and_apply_update from apscheduler.schedulers.background import BackgroundScheduler from datetime import datetime