Merge branch 'development' into python3

# Conflicts:
#	bazarr.py
#	bazarr/get_subtitle.py
pull/684/head
Louis Vézina 5 years ago
commit b055d89b4f

@ -1,17 +0,0 @@
---
name: Feature request
about: Suggest an idea for this project
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.

@ -24,7 +24,7 @@ You can reach us for support on [Discord](https://discord.gg/MH2e2eb).
If you find a bug, please open an issue on [Github](https://github.com/morpheus65535/bazarr/issues).
# Feature Requests
If you need something that is not already part of Bazarr, feel free to create a feature request on [Github](https://github.com/morpheus65535/bazarr/issues).
If you need something that is not already part of Bazarr, feel free to create a feature request on [Feature Upvote](http://features.bazarr.media).
## Major Features Include:

@ -7,6 +7,7 @@ import time
import os
import sys
import platform
import re
from bazarr.get_args import args
@ -22,7 +23,7 @@ def check_python_version():
print("Python " + minimum_python3_version + " or greater required. Current version is " + platform.python_version() + ". Please upgrade Python.")
os._exit(0)
elif int(python_version[0]) == minimum_python_version_tuple[0] and (int(python_version[1]) < minimum_python_version_tuple[1] or int(python_version[2].rstrip('+')) < minimum_python_version_tuple[2]):
elif int(python_version[1]) < minimum_python_version_tuple[1] or int(re.search(r'\d+', python_version[2]).group()) < minimum_python_version_tuple[2]:
print("Python " + minimum_python_version + " or greater required. Current version is " + platform.python_version() + ". Please upgrade Python.")
os._exit(0)

@ -75,7 +75,7 @@ def get_video(path, title, sceneName, use_scenename, providers=None, media_type=
refine_from_db(original_path, video)
refine_from_ffprobe(original_path, video)
logging.debug('BAZARR is using those video object properties: %s', vars(video))
logging.debug('BAZARR is using these video object properties: %s', vars(video))
return video
except Exception as e:
@ -205,7 +205,7 @@ def download_subtitle(path, language, hi, forced, providers, providers_auth, sce
path_decoder=None
)
except Exception as e:
logging.exception('BAZARR Error saving subtitles file to disk for this file:' + path)
logging.exception('BAZARR Error saving Subtitles file to disk for this file:' + path)
pass
else:
saved_any = True
@ -275,12 +275,12 @@ def download_subtitle(path, language, hi, forced, providers, providers_auth, sce
return message, reversed_path, downloaded_language_code2, downloaded_provider, subtitle.score, subtitle.language.forced
if not saved_any:
logging.debug('BAZARR No subtitles were found for this file: ' + path)
logging.debug('BAZARR No Subtitles were found for this file: ' + path)
return None
subliminal.region.backend.sync()
logging.debug('BAZARR Ended searching subtitles for file: ' + path)
logging.debug('BAZARR Ended searching Subtitles for file: ' + path)
def manual_search(path, language, hi, forced, providers, providers_auth, sceneName, title, media_type):
@ -343,7 +343,7 @@ def manual_search(path, language, hi, forced, providers, providers_auth, sceneNa
logging.info("BAZARR All providers are throttled")
return None
except Exception as e:
logging.exception("BAZARR Error trying to get subtitle list from provider for this file: " + path)
logging.exception("BAZARR Error trying to get Subtitle list from provider for this file: " + path)
else:
subtitles_list = []
@ -378,8 +378,8 @@ def manual_search(path, language, hi, forced, providers, providers_auth, sceneNa
url=s.page_link, matches=list(matches), dont_matches=list(not_matched)))
final_subtitles = sorted(subtitles_list, key=lambda x: x['score'], reverse=True)
logging.debug('BAZARR ' + str(len(final_subtitles)) + " subtitles have been found for this file: " + path)
logging.debug('BAZARR Ended searching subtitles for this file: ' + path)
logging.debug('BAZARR ' + str(len(final_subtitles)) + " Subtitles have been found for this file: " + path)
logging.debug('BAZARR Ended searching Subtitles for this file: ' + path)
subliminal.region.backend.sync()
@ -388,7 +388,7 @@ def manual_search(path, language, hi, forced, providers, providers_auth, sceneNa
def manual_download_subtitle(path, language, hi, forced, subtitle, provider, providers_auth, sceneName, title,
media_type):
logging.debug('BAZARR Manually downloading subtitles for this file: ' + path)
logging.debug('BAZARR Manually downloading Subtitles for this file: ' + path)
if settings.general.getboolean('utf8_encode'):
os.environ["SZ_KEEP_ENCODING"] = ""
@ -413,11 +413,11 @@ def manual_download_subtitle(path, language, hi, forced, subtitle, provider, pro
logging.info("BAZARR All providers are throttled")
return None
except Exception as e:
logging.exception('BAZARR Error downloading subtitles for this file ' + path)
logging.exception('BAZARR Error downloading Subtitles for this file ' + path)
return None
else:
if not subtitle.is_valid():
logging.exception('BAZARR No valid subtitles file found for this file: ' + path)
logging.exception('BAZARR No valid Subtitles file found for this file: ' + path)
return
try:
score = round(subtitle.score / max_score * 100, 2)
@ -432,7 +432,7 @@ def manual_download_subtitle(path, language, hi, forced, subtitle, provider, pro
path_decoder=None)
except Exception as e:
logging.exception('BAZARR Error saving subtitles file to disk for this file:' + path)
logging.exception('BAZARR Error saving Subtitles file to disk for this file:' + path)
return
else:
if saved_subtitles:
@ -447,7 +447,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 " + six.text_type(
score) + "% using manual search."
if use_postprocessing is True:
@ -493,13 +493,13 @@ def manual_download_subtitle(path, language, hi, forced, subtitle, provider, pro
return message, reversed_path, downloaded_language_code2, downloaded_provider, subtitle.score, subtitle.language.forced
else:
logging.error(
"BAZARR Tried to manually download a subtitles for file: " + path + " but we weren't able to do (probably throttled by " + str(
subtitle.provider_name) + ". Please retry later or select a subtitles from another provider.")
"BAZARR Tried to manually download a Subtitles for file: " + path + " but we weren't able to do (probably throttled by " + str(
subtitle.provider_name) + ". Please retry later or select a Subtitles from another provider.")
return None
subliminal.region.backend.sync()
logging.debug('BAZARR Ended manually downloading subtitles for file: ' + path)
logging.debug('BAZARR Ended manually downloading Subtitles for file: ' + path)
def manual_upload_subtitle(path, language, forced, title, scene_name, media_type, subtitle):
@ -537,7 +537,7 @@ def manual_upload_subtitle(path, language, forced, title, scene_name, media_type
if chmod:
os.chmod(subtitle_path, chmod)
message = language_from_alpha3(language) + (" forced" if forced else "") + " subtitles manually uploaded."
message = language_from_alpha3(language) + (" forced" if forced else "") + " Subtitles manually uploaded."
if media_type == 'series':
reversed_path = path_replace_reverse(path)
@ -583,7 +583,7 @@ def series_download_subtitles(no):
if providers_list:
for language in ast.literal_eval(episode.missing_subtitles):
if language is not None:
notifications.write(msg='Searching for series subtitles...', queue='get_subtitle', item=i,
notifications.write(msg='Searching for Series Subtitles...', queue='get_subtitle', item=i,
length=count_episodes_details)
result = download_subtitle(path_replace(episode.path),
str(alpha3_from_alpha2(language.split(':'))),
@ -611,7 +611,7 @@ def series_download_subtitles(no):
list_missing_subtitles(no)
if count_episodes_details:
notifications.write(msg='Searching completed. Please reload the page.', type='success', duration='permanent',
notifications.write(msg='Search Complete. Please Reload The Page.', type='success', duration='permanent',
button='refresh', queue='get_subtitle')
@ -647,7 +647,7 @@ def episode_download_subtitles(no):
for language in ast.literal_eval(episode.missing_subtitles):
if language is not None:
notifications.write(msg='Searching for ' + str(
language_from_alpha2(language)) + ' subtitles for this episode: ' + path_replace(episode.path),
language_from_alpha2(language)) + ' Subtitles for this episode: ' + path_replace(episode.path),
queue='get_subtitle')
result = download_subtitle(path_replace(episode.path),
str(alpha3_from_alpha2(language.split(':')[0])),
@ -696,7 +696,7 @@ def movies_download_subtitles(no):
for i, language in enumerate(ast.literal_eval(movie.missing_subtitles), 1):
if providers_list:
if language is not None:
notifications.write(msg='Searching for movies subtitles', queue='get_subtitle', item=i,
notifications.write(msg='Searching for Movie Subtitles', queue='get_subtitle', item=i,
length=count_movie)
result = download_subtitle(path_replace_movie(movie.path),
str(alpha3_from_alpha2(language.split(':')[0])),
@ -724,7 +724,7 @@ def movies_download_subtitles(no):
list_missing_subtitles_movies(no)
if count_movie:
notifications.write(msg='Searching completed. Please reload the page.', type='success', duration='permanent',
notifications.write(msg='Search Complete. Please Reload The Page.', type='success', duration='permanent',
button='refresh', queue='get_subtitle')
@ -774,7 +774,7 @@ def wanted_download_subtitles(path, l, count_episodes):
for i in range(len(attempt)):
if attempt[i][0] == language:
if search_active(attempt[i][1]):
notifications.write(msg='Searching for series subtitles...', queue='get_subtitle', item=l,
notifications.write(msg='Searching for Series Subtitles...', queue='get_subtitle', item=l,
length=count_episodes)
result = download_subtitle(path_replace(episode.path),
str(alpha3_from_alpha2(language.split(':')[0])),
@ -843,7 +843,7 @@ def wanted_download_subtitles_movie(path, l, count_movies):
for i in range(len(attempt)):
if attempt[i][0] == language:
if search_active(attempt[i][1]) is True:
notifications.write(msg='Searching for movies subtitles...', queue='get_subtitle', item=l,
notifications.write(msg='Searching for Movie Subtitles...', queue='get_subtitle', item=l,
length=count_movies)
result = download_subtitle(path_replace_movie(movie.path),
str(alpha3_from_alpha2(language.split(':')[0])),
@ -867,7 +867,7 @@ def wanted_download_subtitles_movie(path, l, count_movies):
send_notifications_movie(movie.radarr_id, message)
else:
logging.info(
'BAZARR Search is not active for movie ' + movie.path + ' Language: ' + attempt[i][0])
'BAZARR Search is not active for this Movie ' + movie.path + ' Language: ' + attempt[i][0])
def wanted_search_missing_subtitles():
@ -920,7 +920,7 @@ def wanted_search_missing_subtitles():
logging.info("BAZARR All providers are throttled")
return
logging.info('BAZARR Finished searching for missing subtitles. Check histories for more information.')
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')
@ -1187,7 +1187,7 @@ def upgrade_subtitles():
forced_languages = desired_languages
if episode['language'] in forced_languages:
notifications.write(msg='Upgrading series subtitles...',
notifications.write(msg='Upgrading Series Subtitles...',
queue='upgrade_subtitle', item=i, length=count_episode_to_upgrade)
if episode['language'].endswith('forced'):
@ -1236,7 +1236,7 @@ def upgrade_subtitles():
forced_languages = desired_languages
if movie['language'] in forced_languages:
notifications.write(msg='Upgrading movie subtitles...',
notifications.write(msg='Upgrading Movie Subtitles...',
queue='upgrade_subtitle', item=i, length=count_movie_to_upgrade)
if movie['language'].endswith('forced'):

@ -28,16 +28,16 @@ def sonarr_full_update():
if full_update == "Daily":
scheduler.add_job(update_all_episodes, CronTrigger(hour=settings.sonarr.full_update_hour), max_instances=1, coalesce=True,
misfire_grace_time=15, id='update_all_episodes',
name='Update all episodes subtitles from disk', replace_existing=True)
name='Update all Episode Subtitles from disk', replace_existing=True)
elif full_update == "Weekly":
scheduler.add_job(update_all_episodes, CronTrigger(day_of_week=settings.sonarr.full_update_day, hour=settings.sonarr.full_update_hour), max_instances=1,
coalesce=True,
misfire_grace_time=15, id='update_all_episodes',
name='Update all episodes subtitles from disk', replace_existing=True)
name='Update all Episode Subtitles from disk', replace_existing=True)
elif full_update == "Manually":
scheduler.add_job(update_all_episodes, CronTrigger(year='2100'), max_instances=1, coalesce=True,
misfire_grace_time=15, id='update_all_episodes',
name='Update all episodes subtitles from disk', replace_existing=True)
name='Update all Episode Subtitles from disk', replace_existing=True)
def radarr_full_update():
@ -46,17 +46,17 @@ def radarr_full_update():
if full_update == "Daily":
scheduler.add_job(update_all_movies, CronTrigger(hour=settings.radarr.full_update_hour), max_instances=1, coalesce=True,
misfire_grace_time=15,
id='update_all_movies', name='Update all movies subtitles from disk',
id='update_all_movies', name='Update all Movie Subtitles from disk',
replace_existing=True)
elif full_update == "Weekly":
scheduler.add_job(update_all_movies, CronTrigger(day_of_week=settings.radarr.full_update_day, hour=settings.radarr.full_update_hour), max_instances=1, coalesce=True,
misfire_grace_time=15, id='update_all_movies',
name='Update all movies subtitles from disk',
name='Update all Movie Subtitles from disk',
replace_existing=True)
elif full_update == "Manually":
scheduler.add_job(update_all_movies, CronTrigger(year='2100'), max_instances=1, coalesce=True,
misfire_grace_time=15, id='update_all_movies',
name='Update all movies subtitles from disk',
name='Update all Movie Subtitles from disk',
replace_existing=True)
@ -88,38 +88,38 @@ def schedule_update_job():
if settings.general.getboolean('auto_update'):
scheduler.add_job(check_and_apply_update, IntervalTrigger(hours=6), max_instances=1, coalesce=True,
misfire_grace_time=15, id='update_bazarr',
name='Update bazarr from source on Github' if not args.release_update else 'Update bazarr from release on Github',
name='Update Bazarr from source on Github' if not args.release_update else 'Update Bazarr from release on Github',
replace_existing=True)
else:
scheduler.add_job(check_and_apply_update, CronTrigger(year='2100'), hour=4, id='update_bazarr',
name='Update bazarr from source on Github' if not args.release_update else 'Update bazarr from release on Github',
name='Update Bazarr from source on Github' if not args.release_update else 'Update Bazarr from release on Github',
replace_existing=True)
scheduler.add_job(check_releases, IntervalTrigger(hours=6), max_instances=1, coalesce=True,
misfire_grace_time=15, id='update_release', name='Update release info',
misfire_grace_time=15, id='update_release', name='Update Release Info',
replace_existing=True)
else:
scheduler.add_job(check_releases, IntervalTrigger(hours=6), max_instances=1, coalesce=True,
misfire_grace_time=15,
id='update_release', name='Update release info', replace_existing=True)
id='update_release', name='Update Release Info', replace_existing=True)
if settings.general.getboolean('use_sonarr'):
scheduler.add_job(update_series, IntervalTrigger(minutes=1), max_instances=1, coalesce=True, misfire_grace_time=15,
id='update_series', name='Update series list from Sonarr')
id='update_series', name='Update Series list from Sonarr')
scheduler.add_job(sync_episodes, IntervalTrigger(minutes=5), max_instances=1, coalesce=True, misfire_grace_time=15,
id='sync_episodes', name='Sync episodes with Sonarr')
if settings.general.getboolean('use_radarr'):
scheduler.add_job(update_movies, IntervalTrigger(minutes=5), max_instances=1, coalesce=True, misfire_grace_time=15,
id='update_movies', name='Update movies list from Radarr')
id='update_movies', name='Update Movie list from Radarr')
def schedule_wanted_search():
if settings.general.getboolean('use_sonarr') or settings.general.getboolean('use_radarr'):
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',
name='Search for wanted subtitles', replace_existing=True)
name='Search for wanted Subtitles', replace_existing=True)
def schedule_upgrade_subs():
@ -127,7 +127,7 @@ def schedule_upgrade_subs():
settings.general.getboolean('use_radarr')):
scheduler.add_job(upgrade_subtitles, IntervalTrigger(hours=int(settings.general.upgrade_frequency)),
max_instances=1, coalesce=True, misfire_grace_time=15, id='upgrade_subtitles',
name='Upgrade previously downloaded subtitles', replace_existing=True)
name='Upgrade previously downloaded Subtitles', replace_existing=True)
scheduler.add_job(cache_maintenance, IntervalTrigger(hours=24), max_instances=1, coalesce=True,
misfire_grace_time=15, id='cache_cleanup', name='Cache maintenance')

@ -24,16 +24,15 @@ class SubdivxSubtitle(Subtitle):
provider_name = 'subdivx'
hash_verifiable = False
def __init__(self, language, page_link, download_link, description, title):
def __init__(self, language, page_link, description, title):
super(SubdivxSubtitle, self).__init__(language, hearing_impaired=False,
page_link=page_link)
self.download_link = download_link
self.description = description.lower()
self.title = title
@property
def id(self):
return self.download_link
return self.page_link
def get_matches(self, video):
matches = set()
@ -144,10 +143,8 @@ class SubdivxSubtitlesProvider(Provider):
# body
description = body_soup.find("div", {'id': 'buscador_detalle_sub'}).text
download_link = body_soup.find("div", {'id': 'buscador_detalle_sub_datos'}
).find("a", {'target': 'new'})["href"].replace('http://', 'https://')
subtitle = self.subtitle_class(language, page_link, download_link, description, title)
subtitle = self.subtitle_class(language, page_link, description, title)
logger.debug('Found subtitle %r', subtitle)
subtitles.append(subtitle)
@ -180,12 +177,28 @@ class SubdivxSubtitlesProvider(Provider):
return subtitles
def get_download_link(self, subtitle):
r = self.session.get(subtitle.page_link, timeout=10)
r.raise_for_status()
if r.content:
page_soup = ParserBeautifulSoup(r.content.decode('iso-8859-1', 'ignore'), ['lxml', 'html.parser'])
links_soup = page_soup.find_all("a", {'class': 'detalle_link'})
for link_soup in links_soup:
if link_soup['href'].startswith('bajar'):
return self.server_url + link_soup['href']
logger.debug('No data returned from provider')
return None
def download_subtitle(self, subtitle):
if isinstance(subtitle, SubdivxSubtitle):
# download the subtitle
logger.info('Downloading subtitle %r', subtitle)
r = self.session.get(subtitle.download_link, headers={'Referer': subtitle.page_link},
timeout=30)
# get download link
download_link = self.get_download_link(subtitle)
r = self.session.get(download_link, headers={'Referer': subtitle.page_link}, timeout=30)
r.raise_for_status()
if not r.content:

@ -114,8 +114,8 @@
<div class="four wide right aligned column">
<div class="ui basic icon buttons">
<button id="scan_disk" class="ui button" data-tooltip="Scan disk for subtitles"><i class="ui inverted large compact refresh icon"></i></button>
<button id="search_missing_subtitles" class="ui button" data-tooltip="Download missing subtitles"><i class="ui inverted huge compact search icon"></i></button>
<button id="scan_disk" class="ui button" data-tooltip="Scan Disk For Subtitles"><i class="ui inverted large compact refresh icon"></i></button>
<button id="search_missing_subtitles" class="ui button" data-tooltip="Download Missing Subtitles"><i class="ui inverted huge compact search icon"></i></button>
<%
subs_languages = ast.literal_eval(str(details.languages))
subs_languages_list = []
@ -157,7 +157,7 @@
%if len(seasons) == 0:
<div id="fondblanc" class="ui container">
<h3 class="ui header">No episode files available for this series or Bazarr is still synchronizing with Sonarr. Please come back later.</h3>
<h3 class="ui header">No episode files available for this Series or Bazarr is still synchronizing with Sonarr. Please come back later.</h3>
</div>
%else:
%for season in seasons:
@ -196,10 +196,10 @@
<th class="collapsing"></th>
<th class="collapsing">Episode</th>
<th>Title</th>
<th class="collapsing">Existing<br>subtitles</th>
<th class="collapsing">Missing<br>subtitles</th>
<th class="collapsing">Manual<br>search</th>
<th class="collapsing">Manual<br>upload</th>
<th class="collapsing">Existing<br>Subtitles</th>
<th class="collapsing">Missing<br>Subtitles</th>
<th class="collapsing">Manual<br>Search</th>
<th class="collapsing">Manual<br>Upload</th>
</tr>
</thead>
<tbody>
@ -323,7 +323,7 @@
<div class="ui grid">
<div class="middle aligned row">
<div class="right aligned five wide column">
<label>Audio language</label>
<label>Audio Language</label>
</div>
<div class="nine wide column">
<div id="series_audio_language"></div>
@ -331,7 +331,7 @@
</div>
<div class="middle aligned row">
<div class="right aligned five wide column">
<label>Subtitles languages</label>
<label>Subtitles Language(s)</label>
</div>
<div class="nine wide column">
<select name="languages" id="series_languages" {{!'multiple="" ' if single_language is False else ''}} class="ui fluid selection dropdown">
@ -347,7 +347,7 @@
</div>
<div class="middle aligned row">
<div class="right aligned five wide column">
<label>Hearing-impaired</label>
<label>Hearing-Impaired</label>
</div>
<div class="nine wide column">
<div id="series_hearing-impaired_div" class="ui toggle checkbox">
@ -390,9 +390,9 @@
<tr>
<th style="text-align: left;">Score:</th>
<th style="text-align: left;">Language:</th>
<th style="text-align: left;">Hearing-impaired:</th>
<th style="text-align: left;">Hearing-Impaired:</th>
<th style="text-align: left;">Provider:</th>
<th style="text-align: left;">Based on:</th>
<th style="text-align: left;">Based On:</th>
<th></th>
</tr>
</thead>
@ -462,7 +462,7 @@
<script>
$('#scan_disk').on('click', function(){
$('#loader_text').text("Scanning disk for existing subtitles...");
$('#loader_text').text("Scanning Disk For Existing Subtitles...");
window.location = '{{base_url}}scan_disk/{{no}}';
});
@ -512,7 +512,7 @@
title: "{{!str(details.title).replace("'", "\\'")}}"
};
$('#loader_text').text("Downloading subtitle to disk...");
$('#loader_text').text("Downloading Subtitle...");
$.ajax({
url: "{{base_url}}get_subtitle",
@ -593,7 +593,7 @@
destroy: true,
language: {
loadingRecords: '<br><div class="ui active inverted dimmer" style="width: 95%;"><div class="ui centered inline loader"></div></div><br>',
zeroRecords: 'No subtitles found for this episode'
zeroRecords: 'No Subtitles Found For This Episode'
},
paging: true,
lengthChange: false,
@ -715,7 +715,7 @@
title: "{{!str(details.title).replace("'", "\\'")}}"
};
$('#loader_text').text("Downloading subtitle to disk...");
$('#loader_text').text("Downloading Subtitle...");
$('#loader').addClass('active');
$('.search_dialog').modal('hide');

@ -59,23 +59,23 @@
<tr class="selectable">
<td class="collapsing">
%if row.action == 0:
<div class="ui inverted basic compact icon" data-tooltip="Subtitles file has been erased." data-inverted="" data-position="top left">
<div class="ui inverted basic compact icon" data-tooltip="Subtitle file has been erased." data-inverted="" data-position="top left">
<i class="ui trash icon"></i>
</div>
%elif row.action == 1:
<div class="ui inverted basic compact icon" data-tooltip="Subtitles file has been downloaded." data-inverted="" data-position="top left">
<div class="ui inverted basic compact icon" data-tooltip="Subtitle file has been downloaded." data-inverted="" data-position="top left">
<i class="ui download icon"></i>
</div>
%elif row.action == 2:
<div class="ui inverted basic compact icon" data-tooltip="Subtitles file has been manually downloaded." data-inverted="" data-position="top left">
<div class="ui inverted basic compact icon" data-tooltip="Subtitle file has been manually downloaded." data-inverted="" data-position="top left">
<i class="ui user icon"></i>
</div>
%elif row.action == 3:
<div class="ui inverted basic compact icon" data-tooltip="Subtitles file has been upgraded." data-inverted="" data-position="top left">
<div class="ui inverted basic compact icon" data-tooltip="Subtitle file has been upgraded." data-inverted="" data-position="top left">
<i class="ui recycle icon"></i>
</div>
%elif row[0] == 4:
<div class="ui inverted basic compact icon" data-tooltip="Subtitles file has been manually uploaded." data-inverted="" data-position="top left">
<div class="ui inverted basic compact icon" data-tooltip="Subtitle file has been manually uploaded." data-inverted="" data-position="top left">
<i class="ui cloud upload icon"></i>
</div>
%end
@ -101,7 +101,7 @@
% forced_languages = desired_languages
% end
% if row.languages and row.language and row.language in forced_languages:
<div class="ui inverted basic compact icon" data-tooltip="This subtitles is eligible to an upgrade." data-inverted="" data-position="top left">
<div class="ui inverted basic compact icon" data-tooltip="This Subtitle file is eligible for an upgrade." data-inverted="" data-position="top left">
<i class="ui green recycle icon upgrade"></i>{{row.description}}
</div>
% else:
@ -146,7 +146,7 @@
%end
fast forward icon"></i>
</div>
<div class="right floated right aligned column">Total records: {{row_count}}</div>
<div class="right floated right aligned column">Total Records: {{row_count}}</div>
</div>
</div>
%end
@ -158,7 +158,7 @@
<br>
Movies
<br>
statistics
Statistics
</div>
<div class="label">
@ -169,7 +169,7 @@
{{stats[0]}}
</div>
<div class="label">
Since 24 hours
In 24 Hours
</div>
</div>
<div class="statistic">
@ -177,7 +177,7 @@
{{stats[1]}}
</div>
<div class="label">
Since one week
In One Week
</div>
</div>
<div class="statistic">
@ -185,7 +185,7 @@
{{stats[2]}}
</div>
<div class="label">
Since one year
In One Year
</div>
</div>
<div class="statistic">

@ -61,23 +61,23 @@
<tr class="selectable">
<td class="collapsing">
%if row.action == 0:
<div class="ui inverted basic compact icon" data-tooltip="Subtitles file has been erased." data-inverted="" data-position="top left">
<div class="ui inverted basic compact icon" data-tooltip="Subtitle file has been erased." data-inverted="" data-position="top left">
<i class="ui trash icon"></i>
</div>
%elif row.action == 1:
<div class="ui inverted basic compact icon" data-tooltip="Subtitles file has been downloaded." data-inverted="" data-position="top left">
<div class="ui inverted basic compact icon" data-tooltip="Subtitle file has been downloaded." data-inverted="" data-position="top left">
<i class="ui download icon"></i>
</div>
%elif row.action == 2:
<div class="ui inverted basic compact icon" data-tooltip="Subtitles file has been manually downloaded." data-inverted="" data-position="top left">
<div class="ui inverted basic compact icon" data-tooltip="Subtitle file has been manually downloaded." data-inverted="" data-position="top left">
<i class="ui user icon"></i>
</div>
%elif row.action == 3:
<div class="ui inverted basic compact icon" data-tooltip="Subtitles file has been upgraded." data-inverted="" data-position="top left">
<div class="ui inverted basic compact icon" data-tooltip="Subtitle file has been upgraded." data-inverted="" data-position="top left">
<i class="ui recycle icon"></i>
</div>
%elif row.action == 4:
<div class="ui inverted basic compact icon" data-tooltip="Subtitles file has been manually uploaded." data-inverted="" data-position="top left">
<div class="ui inverted basic compact icon" data-tooltip="Subtitle file has been manually uploaded." data-inverted="" data-position="top left">
<i class="ui cloud upload icon"></i>
</div>
%end
@ -116,7 +116,7 @@
% forced_languages = desired_languages
% end
% if row.language in forced_languages:
<div class="ui inverted basic compact icon" data-tooltip="This subtitles is eligible to an upgrade." data-inverted="" data-position="top left">
<div class="ui inverted basic compact icon" data-tooltip="This Subtitle file is eligible for an upgrade." data-inverted="" data-position="top left">
<i class="ui green recycle icon upgrade"></i>{{row.description}}
</div>
% else:
@ -161,7 +161,7 @@
%end
fast forward icon"></i>
</div>
<div class="right floated right aligned column">Total records: {{row_count}}</div>
<div class="right floated right aligned column">Total Records: {{row_count}}</div>
</div>
</div>
%end
@ -173,7 +173,7 @@
<br>
Series
<br>
statistics
Statistics
</div>
<div class="label">
@ -184,7 +184,7 @@
{{stats[0]}}
</div>
<div class="label">
Since 24 hours
In 24 Hours
</div>
</div>
<div class="statistic">
@ -192,7 +192,7 @@
{{stats[1]}}
</div>
<div class="label">
Since one week
In One Week
</div>
</div>
<div class="statistic">
@ -200,7 +200,7 @@
{{stats[2]}}
</div>
<div class="label">
Since one year
In One Year
</div>
</div>
<div class="statistic">
@ -243,4 +243,4 @@
$('.fast.forward').on('click', function(){
loadURLseries({{int(max_page)}});
});
</script>
</script>

@ -227,11 +227,11 @@
% end
% if restart_required.updated == '1' and restart_required.configured == '1':
<div class='ui center aligned grid'><div class='fifteen wide column'><div class="ui red message">Bazarr need to be restarted to apply last update and changes to general settings. Click <a href=# id="restart_link">here</a> to restart.</div></div></div>
<div class='ui center aligned grid'><div class='fifteen wide column'><div class="ui red message">Bazarr Needs To Be Restarted To Apply The Last Update & Changes To General Settings. Click <a href=# id="restart_link">Here</a> To Restart.</div></div></div>
% elif restart_required.updated == '1':
<div class='ui center aligned grid'><div class='fifteen wide column'><div class="ui red message">Bazarr need to be restarted to apply last update. Click <a href=# id="restart_link">here</a> to restart.</div></div></div>
<div class='ui center aligned grid'><div class='fifteen wide column'><div class="ui red message">Bazarr Needs To Be Restarted To Apply Changes To The Last Update. Click <a href=# id="restart_link">Here</a> To Restart.</div></div></div>
% elif restart_required.configured == '1':
<div class='ui center aligned grid'><div class='fifteen wide column'><div class="ui red message">Bazarr need to be restarted to apply changes to general settings. Click <a href=# id="restart_link">here</a> to restart.</div></div></div>
<div class='ui center aligned grid'><div class='fifteen wide column'><div class="ui red message">Bazarr Needs To Be Restarted To Apply Changes To General Settings. Click <a href=# id="restart_link">Here</a> To Restart.</div></div></div>
% end
</div>
</body>
@ -284,7 +284,7 @@
}
$('#restart_link').on('click', function(){
$('#loader_text').text("Bazarr is restarting, please wait...");
$('#loader_text').text("Bazarr is restarting. Please Wait...");
$.ajax({
url: "{{base_url}}restart",
async: true
@ -378,7 +378,7 @@
button = [ Noty.button('Refresh', 'ui tiny primary button', function () { window.location.reload() }) ];
} else if (button === 'restart') {
// to be completed
button = [ Noty.button('Restart', 'ui tiny primary button', function () { alert('Restart not implemented yet!') }) ];
button = [ Noty.button('Restart', 'ui tiny primary button', function () { alert('Restart Not Implemented Yet!') }) ];
} else {
button = [];
}
@ -490,4 +490,4 @@
$(window).bind('beforeunload', function(){
clearTimeout(tasksTimeout);
});
</script>
</script>

@ -102,9 +102,9 @@
<div class="twelve wide left aligned column">
<h2>
%if details.monitored == 'True':
<span data-tooltip="Movie monitored in Radarr"><i class="bookmark icon"></i></span>
<span data-tooltip="Movie is Monitored in Radarr"><i class="bookmark icon"></i></span>
%else:
<span data-tooltip="Movie unmonitored in Radarr"><i class="bookmark outline icon"></i></span>
<span data-tooltip="Movie is not Monitored in Radarr"><i class="bookmark outline icon"></i></span>
%end
{{details.title}}
</h2>
@ -112,8 +112,8 @@
<div class="four wide right aligned column">
<div class="ui right floated basic icon buttons">
<button id="scan_disk" class="ui button" data-tooltip="Scan disk for subtitles" data-inverted=""><i class="ui inverted large compact refresh icon"></i></button>
<button id="search_missing_subtitles_movie" class="ui button" data-tooltip="Download missing subtitles" data-inverted=""><i class="ui inverted huge compact search icon"></i></button>
<button id="scan_disk" class="ui button" data-tooltip="Scan Disk For Subtitles" data-inverted=""><i class="ui inverted large compact refresh icon"></i></button>
<button id="search_missing_subtitles_movie" class="ui button" data-tooltip="Download Missing Subtitles" data-inverted=""><i class="ui inverted huge compact search icon"></i></button>
<%
subs_languages = ast.literal_eval(str(details.languages))
subs_languages_list = []
@ -124,10 +124,10 @@
end
%>
%if subs_languages is not None:
<button class="manual_search ui button" data-tooltip="Manually search for subtitles" data-inverted="" data-moviePath="{{details.path}}" data-scenename="{{details.scene_name}}" data-language="{{subs_languages_list}}" data-hi="{{details.hearing_impaired}}" data-forced="{{details.forced}}" data-movie_title="{{details.title}}" data-radarrId="{{details.radarr_id}}"><i class="ui inverted large compact user icon"></i></button>
<button class="manual_upload ui button" data-tooltip="Manually upload subtitles" data-inverted="" data-moviePath="{{details.path}}" data-scenename="{{details.scene_name}}" data-language="{{subs_languages_list}}" data-hi="{{details.hearing_impaired}}" data-movie_title="{{details.forced}}" data-radarrId="{{details.title}}"><i class="ui inverted large compact cloud upload icon"></i></button>
<button class="manual_search ui button" data-tooltip="Manually Search For Subtitles" data-inverted="" data-moviePath="{{details.path}}" data-scenename="{{details.scene_name}}" data-language="{{subs_languages_list}}" data-hi="{{details.hearing_impaired}}" data-forced="{{details.forced}}" data-movie_title="{{details.title}}" data-radarrId="{{details.radarr_id}}"><i class="ui inverted large compact user icon"></i></button>
<button class="manual_upload ui button" data-tooltip="Upload Subtitle File" data-inverted="" data-moviePath="{{details.path}}" data-scenename="{{details.scene_name}}" data-language="{{subs_languages_list}}" data-hi="{{details.hearing_impaired}}" data-movie_title="{{details.forced}}" data-radarrId="{{details.title}}"><i class="ui inverted large compact cloud upload icon"></i></button>
%end
<button id="config" class="ui button" data-tooltip="Edit movie" data-inverted="" data-tmdbid="{{details.tmdb_id}}" data-title="{{details.title}}" data-poster="{{details.poster}}" data-audio="{{details.audio_language}}" data-languages="{{!subs_languages_list}}" data-hearing-impaired="{{details.hearing_impaired}}" data-forced="{{details.forced}}"><i class="ui inverted large compact configure icon"></i></button>
<button id="config" class="ui button" data-tooltip="Edit Movie" data-inverted="" data-tmdbid="{{details.tmdb_id}}" data-title="{{details.title}}" data-poster="{{details.poster}}" data-audio="{{details.audio_language}}" data-languages="{{!subs_languages_list}}" data-hearing-impaired="{{details.hearing_impaired}}" data-forced="{{details.forced}}"><i class="ui inverted large compact configure icon"></i></button>
</div>
</div>
</div>
@ -162,8 +162,8 @@
<table class="ui very basic single line selectable table">
<thead>
<tr>
<th>Subtitles path</th>
<th>Language</th>
<th>Subtitles Path</th>
<th>Language(s)</th>
<th></th>
</tr>
</thead>
@ -180,11 +180,11 @@
end
%>
<tr>
<td>{{path_replace_movie(subtitles_file[1]) if subtitles_file[1] is not None else 'Video file subtitles track'}}</td>
<td>{{path_replace_movie(subtitles_file[1]) if subtitles_file[1] is not None else 'Video File Subtitles Track'}}</td>
<td><div class="ui tiny inverted label" style='background-color: #777777;'>{{language_from_alpha2(subtitles_file[0].split(':')[0])}}{{' forced' if forced else ''}}</div></td>
<td>
%if subtitles_file[1] is not None:
<a class="remove_subtitles ui inverted basic compact icon" data-tooltip="Delete subtitles file from disk" data-inverted="" data-position="top right" data-moviePath="{{details.path}}" data-subtitlesPath="{{path_replace_movie(subtitles_file[1])}}" data-language="{{alpha3_from_alpha2(subtitles_file[0].split(':')[0])}}" data-radarrId={{details.radarr_id}}>
<a class="remove_subtitles ui inverted basic compact icon" data-tooltip="Delete Subtitle File" data-inverted="" data-position="top right" data-moviePath="{{details.path}}" data-subtitlesPath="{{path_replace_movie(subtitles_file[1])}}" data-language="{{alpha3_from_alpha2(subtitles_file[0].split(':')[0])}}" data-radarrId={{details.radarr_id}}>
<i class="ui black delete icon"></i>
</a>
%end
@ -194,7 +194,7 @@
end
if len(subtitles_files) == 0:
%>
<tr><td colspan="3">No subtitles detected for this movie.</td></tr>
<tr><td colspan="3">No Subtitles Detected For This Movie.</td></tr>
<%
end
end
@ -213,7 +213,7 @@
<table class="ui very basic single line selectable table">
<thead>
<tr>
<th>Missing subtitles</th>
<th>Missing Subtitles</th>
</tr>
</thead>
</table>
@ -237,7 +237,7 @@
<i style="margin-left:3px; margin-right:0" class="search icon"></i>
</a>
%else:
<a data-tooltip="Automatic searching delayed (adaptive search)" data-position="top left" data-inverted="" class="get_subtitle ui small red label" data-moviePath="{{details.path}}" data-scenename="{{details.scene_name}}" data-language="{{alpha3_from_alpha2(str(missing_subs_language.split(':')[0]))}}" data-hi="{{details.hearing_impaired}}" data-forced="{{details.forced}}" data-radarrId={{details.radarr_id}}>
<a data-tooltip="Automatic Searching Delayed (Adaptive Search)" data-position="top left" data-inverted="" class="get_subtitle ui small red label" data-moviePath="{{details.path}}" data-scenename="{{details.scene_name}}" data-language="{{alpha3_from_alpha2(str(missing_subs_language.split(':')[0]))}}" data-hi="{{details.hearing_impaired}}" data-forced="{{details.forced}}" data-radarrId={{details.radarr_id}}>
{{language_from_alpha2(str(missing_subs_language.split(':')[0]))}}{{' forced' if forced else ''}}
<i style="margin-left:3px; margin-right:0" class="search icon"></i>
</a>
@ -275,7 +275,7 @@
<div class="ui grid">
<div class="middle aligned row">
<div class="right aligned five wide column">
<label>Audio language</label>
<label>Audio Language</label>
</div>
<div class="nine wide column">
<div id="movie_audio_language"></div>
@ -283,7 +283,7 @@
</div>
<div class="middle aligned row">
<div class="right aligned five wide column">
<label>Subtitles languages</label>
<label>Subtitle Languages</label>
</div>
<div class="nine wide column">
<select name="languages" id="movie_languages" {{!'multiple="" ' if single_language is False else ''}} class="ui fluid selection dropdown">
@ -299,7 +299,7 @@
</div>
<div class="middle aligned row">
<div class="right aligned five wide column">
<label>Hearing-impaired</label>
<label>Hearing-Impaired</label>
</div>
<div class="nine wide column">
<div id="movie_hearing-impaired_div" class="ui toggle checkbox">
@ -342,9 +342,9 @@
<tr>
<th style="text-align: left;">Score:</th>
<th style="text-align: left;">Language:</th>
<th style="text-align: left;">Hearing-impaired:</th>
<th style="text-align: left;">Hearing-Impaired:</th>
<th style="text-align: left;">Provider:</th>
<th style="text-align: left;">Based on:</th>
<th style="text-align: left;">Based On:</th>
<th></th>
</tr>
</thead>
@ -413,7 +413,7 @@
<script>
$('#scan_disk').on('click', function(){
$('#loader_text').text("Scanning disk for existing subtitles...");
$('#loader_text').text("Scanning Disk For Existing Subtitles...");
window.location = '{{base_url}}scan_disk_movie/{{no}}';
});
@ -434,7 +434,7 @@
tmdbid: {{tmdbid}}
};
$('#loader_text').text("Deleting subtitle from disk...");
$('#loader_text').text("Deleting Subtitle...");
$.ajax({
url: "{{base_url}}remove_subtitles_movie",
@ -462,7 +462,7 @@
title: "{{!details.title.replace("'", "\\'")}}"
};
$('#loader_text').text("Downloading subtitle to disk...");
$('#loader_text').text("Downloading Subtitle File...");
$.ajax({
url: "{{base_url}}get_subtitle_movie",
@ -538,7 +538,7 @@
destroy: true,
language: {
loadingRecords: '<br><div class="ui active inverted dimmer" style="width: 95%;"><div class="ui centered inline loader"></div></div><br>',
zeroRecords: 'No subtitles found for this movie'
zeroRecords: 'No Subtitles Found For This Movie'
},
paging: true,
lengthChange: false,
@ -654,7 +654,7 @@
title: "{{!details.title.replace("'", "\\'")}}"
};
$('#loader_text').text("Downloading subtitle to disk...");
$('#loader_text').text("Downloading Subtitle File...");
$('#loader').addClass('active');
$('.search_dialog').modal('hide');
@ -669,4 +669,4 @@
window.location.reload();
});
}
</script>
</script>

@ -58,9 +58,9 @@
<th></th>
<th>Name</th>
<th>Path</th>
<th>Audio<br>language</th>
<th>Subtitles<br>languages</th>
<th>Hearing-<br>impaired</th>
<th>Audio<br>Language</th>
<th>Subtitles<br>Languages</th>
<th>Hearing-<br>Impaired</th>
<th>Forced</th>
<th></th>
</tr>
@ -87,7 +87,7 @@
%if os.path.isfile(row.path):
<span data-tooltip="This path seems to be valid." data-inverted="" data-position="top left"><i class="checkmark icon"></i></span>
%else:
<span data-tooltip="This path doesn't seems to be valid." data-inverted="" data-position="top left"><i class="warning sign icon"></i></span>
<span data-tooltip="This path doesn't seem to be valid." data-inverted="" data-position="top left"><i class="warning sign icon"></i></span>
%end
{{row.path}}
</td>
@ -111,7 +111,7 @@
end
end
%>
<div class="config ui inverted basic compact icon" data-tooltip="Edit movies" data-inverted="" data-position="top right" data-no="{{row.radarr_id}}" data-title="{{row.title}}" data-poster="{{row.poster}}" data-languages="{{!subs_languages_list}}" data-forced="{{row.forced}}" data-hearing-impaired="{{row.hearing_impaired}}" data-audio="{{row.audio_language}}">
<div class="config ui inverted basic compact icon" data-tooltip="Edit Movie" data-inverted="" data-position="top right" data-no="{{row.radarr_id}}" data-title="{{row.title}}" data-poster="{{row.poster}}" data-languages="{{!subs_languages_list}}" data-forced="{{row.forced}}" data-hearing-impaired="{{row.hearing_impaired}}" data-audio="{{row.audio_language}}">
<i class="ui black configure icon"></i>
</div>
</td>
@ -149,7 +149,7 @@
%end
fast forward icon"></i>
</div>
<div class="right floated right aligned column">Total records: {{missing_count}}</div>
<div class="right floated right aligned column">Total Records: {{missing_count}}</div>
</div>
</div>
%end
@ -170,7 +170,7 @@
<div class="ui grid">
<div class="middle aligned row">
<div class="right aligned five wide column">
<label>Audio language</label>
<label>Audio Language</label>
</div>
<div class="nine wide column">
<div id="movies_audio_language"></div>
@ -178,7 +178,7 @@
</div>
<div class="middle aligned row">
<div class="right aligned five wide column">
<label>Subtitles languages</label>
<label>Subtitle Languages</label>
</div>
<div class="nine wide column">
<select name="languages" id="movies_languages" {{!'multiple="" ' if single_language is False else ''}}class="ui fluid selection dropdown">
@ -194,7 +194,7 @@
</div>
<div class="middle aligned row">
<div class="right aligned five wide column">
<label>Hearing-impaired</label>
<label>Hearing-Impaired</label>
</div>
<div class="nine wide column">
<div id="movies_hearing-impaired_div" class="ui toggle checkbox">
@ -291,4 +291,4 @@
});
$('#movies_languages').dropdown();
</script>
</script>

@ -61,9 +61,9 @@
</div>
</th>
<th class="sorted ascending">Name</th>
<th>Audio language</th>
<th>Subtitles languages</th>
<th>Hearing-impaired</th>
<th>Audio Language</th>
<th>Subtitles Language(s)</th>
<th>Hearing-Impaired</th>
<th>Forced</th>
</tr>
</thead>
@ -100,9 +100,9 @@
<input type="hidden" name="movies" id="checked" />
<div class="fields">
<div class="eight wide field">
<label style='color: white;'>Subtitles languages</label>
<label style='color: white;'>Subtitles Language(s)</label>
<select name="languages" {{!'multiple="" ' if single_language is False else ''}}class="select ui disabled selection dropdown">
<option value="">No change</option>
<option value="">No Change</option>
<option value="None">None</option>
%for language in languages:
<option value="{{language.code2}}">{{language.name}}</option>
@ -110,7 +110,7 @@
</select>
</div>
<div class="field">
<label style='color: white;'>Hearing-impaired</label>
<label style='color: white;'>Hearing-Impaired</label>
<select name="hearing_impaired" class="select ui disabled selection dropdown">
<option value="">No change</option>
<option value="True">True</option>
@ -127,7 +127,7 @@
</select>
</div>
<div class='field'>
<label style='color: white;'><span id='count'>0</span> movies selected</label>
<label style='color: white;'><span id='count'>0</span> Movies Selected</label>
<button type="submit" id="save" name="save" value="save" class="ui disabled blue approve button">Save</button>
</div>
</div>
@ -186,4 +186,4 @@
});
$('.select').dropdown();
</script>
</script>

@ -3,7 +3,7 @@
<div class="ui grid">
<div class="middle aligned row">
<div class="right aligned four wide column">
<label>Addic7ed (require anti-captcha)</label>
<label>Addic7ed (Requires Anti-Captcha)</label>
</div>
<div class="one wide column">
<div id="addic7ed" class="ui toggle checkbox provider">
@ -35,7 +35,7 @@
</div>
<div class="middle aligned row">
<div class="right aligned six wide column">
<label>Random user-agents</label>
<label>Random User-Agents</label>
</div>
<div class="one wide column">
<div id="settings_addic7ed_random_agents" class="ui toggle checkbox" data-randomagents={{settings.addic7ed.getboolean('random_agents')}}>
@ -45,7 +45,7 @@
</div>
<div class="collapsed column">
<div class="collapsed center aligned column">
<div class="ui basic icon" data-tooltip="Use random user agents" data-inverted="">
<div class="ui basic icon" data-tooltip="Use Random User Agents" data-inverted="">
<i class="help circle large icon"></i>
</div>
</div>
@ -65,7 +65,7 @@
</div>
<div class="collapsed column">
<div class="collapsed center aligned column">
<div class="ui basic icon" data-tooltip="Spanish subtitles provider." data-inverted="">
<div class="ui basic icon" data-tooltip="Spanish Subtitles Provider." data-inverted="">
<i class="help circle large icon"></i>
</div>
</div>
@ -87,7 +87,7 @@
</div>
<div class="collapsed column">
<div class="collapsed center aligned column">
<div class="ui basic icon" data-tooltip="Chinese subtitles provider." data-inverted="">
<div class="ui basic icon" data-tooltip="Chinese Subtitles Provider." data-inverted="">
<i class="help circle large icon"></i>
</div>
</div>
@ -125,7 +125,7 @@
</div>
<div class="collapsed column">
<div class="collapsed center aligned column">
<div class="ui basic icon" data-tooltip="This provider only uses the subtitle filename to find release group matches, subtitles may thus be out of sync." data-inverted="">
<div class="ui basic icon" data-tooltip="This provider only uses the Subtitle filename to find release group matches, Subtitles may thus be out of sync." data-inverted="">
<i class="yellow warning sign icon"></i>
</div>
</div>
@ -156,7 +156,7 @@
</div>
<div class="collapsed column">
<div class="collapsed center aligned column">
<div class="ui basic icon" data-tooltip="Greek subtitles provider." data-inverted="">
<div class="ui basic icon" data-tooltip="Greek Subtitles Provider." data-inverted="">
<i class="help circle large icon"></i>
</div>
</div>
@ -178,7 +178,7 @@
</div>
<div class="collapsed column">
<div class="collapsed center aligned column">
<div class="ui basic icon" data-tooltip="Hungarian subtitles provider." data-inverted="">
<div class="ui basic icon" data-tooltip="Hungarian Subtitles Provider." data-inverted="">
<i class="help circle large icon"></i>
</div>
</div>
@ -200,7 +200,7 @@
</div>
<div class="collapsed column">
<div class="collapsed center aligned column">
<div class="ui basic icon" data-tooltip="Latvian subtitles provider." data-inverted="">
<div class="ui basic icon" data-tooltip="Latvian Subtitles Provider." data-inverted="">
<i class="help circle large icon"></i>
</div>
</div>
@ -222,7 +222,7 @@
</div>
<div class="collapsed column">
<div class="collapsed center aligned column">
<div class="ui basic icon" data-tooltip="Brazilian Portuguese subtitles provider." data-inverted="">
<div class="ui basic icon" data-tooltip="Brazilian Portuguese Subtitles Provider." data-inverted="">
<i class="help circle large icon"></i>
</div>
</div>
@ -263,7 +263,7 @@
</div>
<div class="collapsed column">
<div class="collapsed center aligned column">
<div class="ui basic icon" data-tooltip="Polish subtitles provider." data-inverted="">
<div class="ui basic icon" data-tooltip="Polish Subtitles Provider." data-inverted="">
<i class="help circle large icon"></i>
</div>
</div>
@ -285,7 +285,7 @@
</div>
<div class="collapsed column">
<div class="collapsed center aligned column">
<div class="ui basic icon" data-tooltip="Polish subtitles provider." data-inverted="">
<div class="ui basic icon" data-tooltip="Polish Subtitles Provider." data-inverted="">
<i class="help circle large icon"></i>
</div>
</div>
@ -303,7 +303,7 @@
</div>
<div class="collapsed column">
<div class="collapsed center aligned column">
<div data-tooltip="The provided credentials must have api access. Leave empty to use the defaults." data-inverted="" class="ui basic icon">
<div data-tooltip="The Provided Credentials Must Have API Access. Leave empty to use the defaults." data-inverted="" class="ui basic icon">
<i class="yellow warning circle large icon"></i>
</div>
</div>
@ -365,7 +365,7 @@
</div>
<div class="collapsed column">
<div class="collapsed center aligned column">
<div class="ui basic icon" data-tooltip="ad-free subs, 1000 subs/day, no-cache VIP server: http://v.ht/osvip" data-inverted="">
<div class="ui basic icon" data-tooltip="Ad-Free Subs, 1000 Subs/Day, No-Cache VIP Server: http://v.ht/osvip" data-inverted="">
<i class="help circle large icon"></i>
</div>
</div>
@ -401,7 +401,7 @@
</div>
<div class="collapsed column">
<div class="collapsed center aligned column">
<div class="ui basic icon" data-tooltip="Skip subtitles with a mismatched FPS value; might lead to more results when disabled but also to more false-positives." data-inverted="">
<div class="ui basic icon" data-tooltip="Skip Subtitles with a mismatched FPS value; might lead to more results when disabled but also to more false-positives." data-inverted="">
<i class="help circle large icon"></i>
</div>
</div>
@ -436,7 +436,7 @@
</div>
<div class="collapsed column">
<div class="collapsed center aligned column">
<div class="ui basic icon" data-tooltip="Spanish subtitles provider." data-inverted="">
<div class="ui basic icon" data-tooltip="Spanish Subtitles Provider." data-inverted="">
<i class="help circle large icon"></i>
</div>
</div>
@ -458,7 +458,7 @@
</div>
<div class="collapsed column">
<div class="collapsed center aligned column">
<div class="ui basic icon" data-tooltip="Bulgarian mostly subtitle provider." data-inverted="">
<div class="ui basic icon" data-tooltip="Bulgarian (mostly) Subtitles Provider." data-inverted="">
<i class="help circle large icon"></i>
</div>
</div>
@ -470,7 +470,7 @@
<div class="middle aligned row">
<div class="right aligned four wide column">
<label>Subscene (require anti-captcha)</label>
<label>Subscene (Requires Anti-Captcha)</label>
</div>
<div class="one wide column">
<div id="subscene" class="ui toggle checkbox provider">
@ -530,7 +530,7 @@
</div>
<div class="collapsed column">
<div class="collapsed center aligned column">
<div class="ui basic icon" data-tooltip="Bulgarian mostly subtitle provider." data-inverted="">
<div class="ui basic icon" data-tooltip="Bulgarian (mostly) Subtitles Provider." data-inverted="">
<i class="help circle large icon"></i>
</div>
</div>
@ -552,7 +552,7 @@
</div>
<div class="collapsed column">
<div class="collapsed center aligned column">
<div class="ui basic icon" data-tooltip="Greek subtitles provider." data-inverted="">
<div class="ui basic icon" data-tooltip="Greek Subtitles Provider." data-inverted="">
<i class="help circle large icon"></i>
</div>
</div>
@ -574,7 +574,7 @@
</div>
<div class="collapsed column">
<div class="collapsed center aligned column">
<div class="ui basic icon" data-tooltip="Greek subtitles provider." data-inverted="">
<div class="ui basic icon" data-tooltip="Greek Subtitles Provider." data-inverted="">
<i class="help circle large icon"></i>
</div>
</div>
@ -596,7 +596,7 @@
</div>
<div class="collapsed column">
<div class="collapsed center aligned column">
<div class="ui basic icon" data-tooltip="Latvian subtitles provider." data-inverted="">
<div class="ui basic icon" data-tooltip="Latvian Subtitles Provider." data-inverted="">
<i class="help circle large icon"></i>
</div>
</div>
@ -618,7 +618,7 @@
</div>
<div class="collapsed column">
<div class="collapsed center aligned column">
<div class="ui basic icon" data-tooltip="Greek subtitles provider." data-inverted="">
<div class="ui basic icon" data-tooltip="Greek Subtitles Provider." data-inverted="">
<i class="help circle large icon"></i>
</div>
</div>
@ -685,7 +685,7 @@
</div>
<div class="collapsed column">
<div class="collapsed center aligned column">
<div class="ui basic icon" data-tooltip="Greek subtitles provider." data-inverted="">
<div class="ui basic icon" data-tooltip="Greek Subtitles Provider." data-inverted="">
<i class="help circle large icon"></i>
</div>
</div>
@ -726,7 +726,7 @@
</div>
<div class="collapsed column">
<div class="collapsed center aligned column">
<div class="ui basic icon" data-tooltip="Chinese subtitles provider." data-inverted="">
<div class="ui basic icon" data-tooltip="Chinese Subtitles Provider." data-inverted="">
<i class="help circle large icon"></i>
</div>
</div>

@ -64,9 +64,9 @@
<tr>
<th>Name</th>
<th>Path</th>
<th>Audio language</th>
<th>Subtitles languages</th>
<th>Hearing-impaired</th>
<th>Audio Language</th>
<th>Subtitle Language(s)</th>
<th>Hearing-Impaired</th>
<th>Forced</th>
<th class="two wide">Subtitles</th>
<th></th>
@ -82,7 +82,7 @@
%if os.path.isdir(row.path):
<span data-tooltip="This path seems to be valid." data-inverted="" data-position="top left"><i class="checkmark icon"></i></span>
%else:
<span data-tooltip="This path doesn't seems to be valid." data-inverted="" data-position="top left"><i class="warning sign icon"></i></span>
<span data-tooltip="This path doesn't seem to be valid." data-inverted="" data-position="top left"><i class="warning sign icon"></i></span>
%end
{{row.path}}
</td>
@ -129,7 +129,7 @@
end
end
%>
<div class="config ui inverted basic compact icon" data-tooltip="Edit series" data-inverted="" data-position="top right" data-no="{{row.sonarr_series_id}}" data-title="{{row.title}}" data-poster="{{row.poster}}" data-languages="{{!subs_languages_list}}" data-hearing-impaired="{{row.hearing_impaired}}" data-forced="{{row.forced}}" data-audio="{{row.audio_language}}">
<div class="config ui inverted basic compact icon" data-tooltip="Edit Series" data-inverted="" data-position="top right" data-no="{{row.sonarr_series_id}}" data-title="{{row.title}}" data-poster="{{row.poster}}" data-languages="{{!subs_languages_list}}" data-hearing-impaired="{{row.hearing_impaired}}" data-forced="{{row.forced}}" data-audio="{{row.audio_language}}">
<i class="ui black configure icon"></i>
</div>
</td>
@ -167,7 +167,7 @@
%end
fast forward icon"></i>
</div>
<div class="right floated right aligned column">Total records: {{missing_count}}</div>
<div class="right floated right aligned column">Total Records: {{missing_count}}</div>
</div>
</div>
%end
@ -188,7 +188,7 @@
<div class="ui grid">
<div class="middle aligned row">
<div class="right aligned five wide column">
<label>Audio language</label>
<label>Audio Language</label>
</div>
<div class="nine wide column">
<div id="series_audio_language"></div>
@ -196,7 +196,7 @@
</div>
<div class="middle aligned row">
<div class="right aligned five wide column">
<label>Subtitles languages</label>
<label>Subtitle Language(s)</label>
</div>
<div class="nine wide column">
<select name="languages" id="series_languages" {{!'multiple="" ' if single_language is False else ''}}class="ui fluid selection dropdown">
@ -212,7 +212,7 @@
</div>
<div class="middle aligned row">
<div class="right aligned five wide column">
<label>Hearing-impaired</label>
<label>Hearing-Impaired</label>
</div>
<div class="nine wide column">
<div id="series_hearing-impaired_div" class="ui toggle checkbox">
@ -325,4 +325,4 @@
$(this).progress('set bar label', '0 / 0');
}
});
</script>
</script>

@ -61,9 +61,9 @@
</div>
</th>
<th class="sorted ascending">Name</th>
<th>Audio language</th>
<th>Subtitles languages</th>
<th>Hearing-impaired</th>
<th>Audio Language</th>
<th>Subtitles Language(s)</th>
<th>Hearing-Impaired</th>
<th>Forced</th>
</tr>
</thead>
@ -100,9 +100,9 @@
<input type="hidden" name="series" id="checked" />
<div class="fields">
<div class="eight wide field">
<label style='color: white;'>Subtitles languages</label>
<label style='color: white;'>Subtitles Language(s)</label>
<select name="languages" {{!'multiple="" ' if single_language is False else ''}}class="select ui disabled selection dropdown">
<option value="">No change</option>
<option value="">No Change</option>
<option value="None">None</option>
%for language in languages:
<option value="{{language.code2}}">{{language.name}}</option>
@ -110,9 +110,9 @@
</select>
</div>
<div class="field">
<label style='color: white;'>Hearing-impaired</label>
<label style='color: white;'>Hearing-Impaired</label>
<select name="hearing_impaired" class="select ui disabled selection dropdown">
<option value="">No change</option>
<option value="">No Change</option>
<option value="True">True</option>
<option value="False">False</option>
</select>
@ -127,7 +127,7 @@
</select>
</div>
<div class='field'>
<label style='color: white;'><span id='count'>0</span> series selected</label>
<label style='color: white;'><span id='count'>0</span> Series Selected</label>
<button type="submit" id="save" name="save" value="save" class="ui disabled blue approve button">Save</button>
</div>
</div>
@ -185,4 +185,4 @@
});
$('.select').dropdown();
</script>
</script>

@ -3,7 +3,7 @@
<div class="ui grid">
<div class="middle aligned row">
<div class="right aligned four wide column">
<label>Listening IP address</label>
<label>Listening IP Address</label>
</div>
<div class="five wide column">
<div class='field'>
@ -19,7 +19,7 @@
</div>
</div>
<div class="collapsed center aligned column">
<div class="ui basic icon" data-tooltip="Valid IP4 address or '0.0.0.0' for all interfaces" data-inverted="">
<div class="ui basic icon" data-tooltip="Valid IP4 Address or '0.0.0.0' for all interfaces" data-inverted="">
<i class="help circle large icon"></i>
</div>
</div>
@ -27,7 +27,7 @@
<div class="middle aligned row">
<div class="right aligned four wide column">
<label>Listening port</label>
<label>Listening Port</label>
</div>
<div class="five wide column">
<div class='field'>
@ -78,7 +78,7 @@
<div class="middle aligned row">
<div class="right aligned four wide column">
<label>Enable debug logging</label>
<label>Enable Debug Logging</label>
</div>
<div class="five wide column">
<div id="settings_debug" class="ui toggle checkbox" data-debug={{settings.general.getboolean('debug')}}>
@ -94,7 +94,7 @@
</div>
<div id="chmod_enabled" class="middle aligned row">
<div class="right aligned four wide column">
<label>Enable chmod</label>
<label>Enable CHMOD</label>
</div>
<div class="five wide column">
<div id="settings_chmod_enabled" class="ui toggle checkbox" data-chmod={{settings.general.getboolean('chmod_enabled')}}>
@ -105,7 +105,7 @@
</div>
<div id="chmod" class="middle aligned row">
<div class="right aligned four wide column">
<label>Set subtitle file permissions to</label>
<label>Set Subtitle file permissions to</label>
</div>
<div class="five wide column">
<div class='field'>
@ -125,7 +125,7 @@
<div class="middle aligned row">
<div class="right aligned four wide column">
<label>Page size</label>
<label>Page Size</label>
</div>
<div class="five wide column">
<select name="settings_page_size" id="settings_page_size" class="ui fluid selection dropdown">
@ -154,7 +154,7 @@
<div class="ui grid">
<div class="middle aligned row">
<div class="right aligned four wide column">
<label>Proxy type</label>
<label>Proxy Type</label>
</div>
<div class="five wide column">
<select name="settings_proxy_type" id="settings_proxy_type" class="ui fluid selection dropdown">
@ -264,7 +264,7 @@
</div>
</div>
<div class="ui dividing header">Security settings</div>
<div class="ui dividing header">Security Settings</div>
<div class="twelve wide column">
<div class="ui grid">
<div class="middle aligned row">
@ -322,7 +322,7 @@
<div class="collapsed column">
<div class="collapsed center aligned column">
<div class="ui basic icon" data-tooltip="Authentication send username and password in clear over the network. You should add SSL encryption trough a reverse proxy." data-inverted="">
<div class="ui basic icon" data-tooltip="Authentication send username and password in clear text over the network. You should add SSL encryption through a reverse proxy." data-inverted="">
<i class="help circle large icon"></i>
</div>
</div>
@ -346,7 +346,7 @@
</div>
<div class="collapsed column">
<div class="collapsed center aligned column">
<div class="ui basic icon" data-tooltip="Enable Sonarr integration." data-inverted="">
<div class="ui basic icon" data-tooltip="Enable Sonarr Integration." data-inverted="">
<i class="help circle large icon"></i>
</div>
</div>
@ -365,7 +365,7 @@
</div>
<div class="collapsed column">
<div class="collapsed center aligned column">
<div class="ui basic icon" data-tooltip="Enable Radarr integration." data-inverted="">
<div class="ui basic icon" data-tooltip="Enable Radarr Integration." data-inverted="">
<i class="help circle large icon"></i>
</div>
</div>
@ -374,7 +374,7 @@
</div>
</div>
<div class="ui dividing header">Path Mappings for shows</div>
<div class="ui dividing header">Path Mappings For TV Shows</div>
<div class="twelve wide column">
<div class="ui grid">
%import ast
@ -448,7 +448,7 @@
</div>
</div>
<div class="ui dividing header">Path Mappings for movies</div>
<div class="ui dividing header">Path Mappings For Movies</div>
<div class="twelve wide column">
<div class="ui grid">
%import ast
@ -525,7 +525,7 @@
<div class="ui dividing header">Post-processing</div>
<div class="twelve wide column">
<div class="ui orange message">
<p>Be aware that the execution of post-processing command will prevent the user interface from being accessible until completion when downloading subtitles in interactive mode (meaning you'll see a loader during post-processing).</p>
<p>Be aware that the execution of post-processing command will prevent the user interface from being accessible until completion, when downloading subtitles in interactive mode (meaning you'll see a loader during post-processing).</p>
</div>
<div class="ui grid">
<div class="middle aligned row">
@ -655,7 +655,7 @@
<div class="collapsed column">
<div class="collapsed center aligned column">
<div class="ui basic icon"
data-tooltip="Automatically restart after download and install updates. You will still be able to restart manualy"
data-tooltip="Automatically restart after downloading and installing updates. You will still be able to restart manually"
data-inverted="">
<i class="help circle large icon"></i>
</div>
@ -688,7 +688,7 @@
<i class="help circle large icon"></i>
</div>
<div class="ten wide column">
Send anonymous usage information, nothing that can identify you. This includes information on which providers you use, what languages you search for, Bazarr, Python, Sonarr, Radarr and OS version you are using. We will use this information to prioritize features and bug fixes. Please, keep this enabled as this is the only way we have to better understand how you use Bazarr.
Send anonymous usage information, nothing that can identify you. This includes information on which providers you use, what languages you search for, Bazarr, Python, Sonarr, Radarr and what OS version you are using. We will use this information to prioritize features and bug fixes. Please, keep this enabled as this is the only way we have to better understand how you use Bazarr.
</div>
</div>
</div>
@ -865,4 +865,4 @@
});
</script>
</script>

@ -1,10 +1,10 @@
<div class="ui dividing header">Notifications settings</div>
<div class="twelve wide column">
<div class="ui info message">
<p>Thanks to caronc for his work on <a href="https://github.com/caronc/apprise" target="_blank">apprise</a> on which is based the notifications system.</p>
<p>Thanks to caronc for his work on <a href="https://github.com/caronc/apprise" target="_blank">apprise</a>, which is based the notifications system.</p>
</div>
<div class="ui info message">
<p>Please follow instructions on his <a href="https://github.com/caronc/apprise/wiki" target="_blank">wiki</a> to configure your notifications providers.</p>
<p>Please follow instructions on his <a href="https://github.com/caronc/apprise/wiki" target="_blank">Wiki</a> to configure your notification providers.</p>
</div>
<div class="ui grid">
%for notifier in settings_notifier:
@ -69,4 +69,4 @@
</script>
</script>

@ -3,7 +3,7 @@
<div class="ui grid">
<div class="middle aligned row">
<div class="right aligned four wide column">
<label>Settings validation:</label>
<label>Settings Validation:</label>
</div>
<div class="two wide column">
<button id="radarr_validate" class="test ui blue button" type="button">
@ -13,14 +13,14 @@
<div class="seven wide column">
<div id="radarr_validated" class="ui read-only checkbox">
<input id="radarr_validated_checkbox" type="checkbox">
<label id="radarr_validation_result">Not tested recently</label>
<label id="radarr_validation_result">Not Tested Recently</label>
</div>
</div>
</div>
<div class="middle aligned row">
<div class="right aligned four wide column">
<label>Hostname or IP address</label>
<label>Hostname or IP Address</label>
</div>
<div class="five wide column">
<div class='field'>
@ -38,7 +38,7 @@
<div class="middle aligned row">
<div class="right aligned four wide column">
<label>Listening port</label>
<label>Listening Port</label>
</div>
<div class="five wide column">
<div class='field'>
@ -48,7 +48,7 @@
</div>
</div>
<div class="collapsed center aligned column">
<div class="ui basic icon" data-tooltip="TCP port of Radarr" data-inverted="">
<div class="ui basic icon" data-tooltip="TCP Port of Radarr" data-inverted="">
<i class="help circle large icon"></i>
</div>
</div>
@ -72,7 +72,7 @@
<div class="middle aligned row">
<div class="right aligned four wide column">
<label>SSL enabled</label>
<label>SSL Enabled</label>
</div>
<div class="one wide column">
<div id="radarr_ssl_div" class="ui toggle checkbox" data-ssl={{settings.radarr.getboolean('ssl')}}>
@ -84,7 +84,7 @@
<div class="middle aligned row">
<div class="right aligned four wide column">
<label>API key</label>
<label>API Key</label>
</div>
<div class="five wide column">
<div class='field'>
@ -94,7 +94,7 @@
</div>
</div>
<div class="collapsed center aligned column">
<div class="ui basic icon" data-tooltip="API key for Radarr (32 alphanumeric characters)" data-inverted="">
<div class="ui basic icon" data-tooltip="API Key for Radarr (32 alphanumeric characters)" data-inverted="">
<i class="help circle large icon"></i>
</div>
</div>
@ -102,7 +102,7 @@
<div class="middle aligned row">
<div class="right aligned four wide column">
<label>Download only monitored</label>
<label>Download Only Monitored</label>
</div>
<div class="one wide column">
<div id="settings_only_monitored_radarr" class="ui toggle checkbox" data-monitored={{settings.radarr.getboolean('only_monitored')}}>
@ -112,7 +112,7 @@
</div>
<div class="collapsed column">
<div class="collapsed center aligned column">
<div class="ui basic icon" data-tooltip="Automatic download of subtitles will happen only for monitored movies in Radarr." data-inverted="">
<div class="ui basic icon" data-tooltip="Automatic download of Subtitles will only happen for monitored Movies in Radarr." data-inverted="">
<i class="help circle large icon"></i>
</div>
</div>
@ -126,7 +126,7 @@
<div class="ui grid">
<div class="middle aligned row">
<div class="right aligned four wide column">
<label>Full filesystem scan</label>
<label>Full Filesystem Scan</label>
</div>
<div class="three wide column">
<div class='field'>
@ -221,17 +221,17 @@
$('.radarr_config').on('keyup', function() {
$('#radarr_validated').checkbox('uncheck');
$('#radarr_validation_result').text('You must test your Radarr connection settings before saving settings.').css('color', 'red');
$('#radarr_validation_result').text('You Must Test Your Radarr Connection Settings Before Saving.').css('color', 'red');
$('.form').form('validate form');
$('#loader').removeClass('active');
});
$('#settings_radarr_ssl').on('change', function() {
$('#radarr_validated').checkbox('uncheck');
$('#radarr_validation_result').text('You must test your Radarr connection settings before saving settings.').css('color', 'red');
$('#radarr_validation_result').text('You Must Test Your Radarr Connection Settings Before Saving.').css('color', 'red');
$('.form').form('validate form');
$('#loader').removeClass('active');
});
$("#radarr_validated").checkbox('check');
</script>
</script>

@ -3,7 +3,7 @@
<div class="ui grid">
<div class="middle aligned row">
<div class="right aligned four wide column">
<label>Settings validation:</label>
<label>Settings Validation:</label>
</div>
<div class="two wide column">
<button id="sonarr_validate" class="test ui blue button" type="button">
@ -13,14 +13,14 @@
<div class="seven wide column">
<div id="sonarr_validated" class="ui read-only checkbox">
<input id="sonarr_validated_checkbox" type="checkbox">
<label id="sonarr_validation_result">Not tested recently</label>
<label id="sonarr_validation_result">Not Tested Recently</label>
</div>
</div>
</div>
<div class="middle aligned row">
<div class="right aligned four wide column">
<label>Hostname or IP address</label>
<label>Hostname or IP Address</label>
</div>
<div class="five wide column">
<div class='field'>
@ -30,7 +30,7 @@
</div>
</div>
<div class="collapsed center aligned column">
<div class="ui basic icon" data-tooltip="Hostname or IP4 address of Sonarr" data-inverted="">
<div class="ui basic icon" data-tooltip="Hostname or IP4 Address of Sonarr" data-inverted="">
<i class="help circle large icon"></i>
</div>
</div>
@ -38,7 +38,7 @@
<div class="middle aligned row">
<div class="right aligned four wide column">
<label>Listening port</label>
<label>Listening Port</label>
</div>
<div class="five wide column">
<div class='field'>
@ -48,7 +48,7 @@
</div>
</div>
<div class="collapsed center aligned column">
<div class="ui basic icon" data-tooltip="TCP port of Sonarr" data-inverted="">
<div class="ui basic icon" data-tooltip="TCP Port of Sonarr" data-inverted="">
<i class="help circle large icon"></i>
</div>
</div>
@ -72,7 +72,7 @@
<div class="middle aligned row">
<div class="right aligned four wide column">
<label>SSL enabled</label>
<label>SSL Enabled</label>
</div>
<div class="one wide column">
<div id="sonarr_ssl_div" class="ui toggle checkbox" data-ssl={{settings.sonarr.getboolean('ssl')}}>
@ -84,7 +84,7 @@
<div class="middle aligned row">
<div class="right aligned four wide column">
<label>API key</label>
<label>API Key</label>
</div>
<div class="five wide column">
<div class='field'>
@ -94,7 +94,7 @@
</div>
</div>
<div class="collapsed center aligned column">
<div class="ui basic icon" data-tooltip="API key for Sonarr (32 alphanumeric characters)" data-inverted="">
<div class="ui basic icon" data-tooltip="API Key for Sonarr (32 alphanumeric characters)" data-inverted="">
<i class="help circle large icon"></i>
</div>
</div>
@ -102,7 +102,7 @@
<div class="middle aligned row">
<div class="right aligned four wide column">
<label>Download only monitored</label>
<label>Download Only Monitored</label>
</div>
<div class="one wide column">
<div id="settings_only_monitored_sonarr" class="ui toggle checkbox" data-monitored={{settings.sonarr.getboolean('only_monitored')}}>
@ -112,7 +112,7 @@
</div>
<div class="collapsed column">
<div class="collapsed center aligned column">
<div class="ui basic icon" data-tooltip="Automatic download of subtitles will happen only for monitored episodes in Sonarr." data-inverted="">
<div class="ui basic icon" data-tooltip="Automatic download of Subtitles will only happen for monitored episodes in Sonarr." data-inverted="">
<i class="help circle large icon"></i>
</div>
</div>
@ -126,7 +126,7 @@
<div class="ui grid">
<div class="middle aligned row">
<div class="right aligned four wide column">
<label>Full filesystem scan</label>
<label>Full Filesystem Scan</label>
</div>
<div class="three wide column">
<div class='field'>
@ -207,12 +207,12 @@
$.getJSON("{{base_url}}test_url/" + protocol + "/" + encodeURIComponent(sonarr_url), function (data) {
if (data.status) {
$('#sonarr_validated').checkbox('check');
$('#sonarr_validation_result').text('Test successful: Sonarr v' + data.version).css('color', 'green');
$('#sonarr_validation_result').text('Test Successful: Sonarr v' + data.version).css('color', 'green');
$('.form').form('validate form');
$('#loader').removeClass('active');
} else {
$('#sonarr_validated').checkbox('uncheck');
$('#sonarr_validation_result').text('Test failed').css('color', 'red');
$('#sonarr_validation_result').text('Test Failed').css('color', 'red');
$('.form').form('validate form');
$('#loader').removeClass('active');
}
@ -221,14 +221,14 @@
$('.sonarr_config').on('keyup', function() {
$('#sonarr_validated').checkbox('uncheck');
$('#sonarr_validation_result').text('You must test your Sonarr connection settings before saving settings.').css('color', 'red');
$('#sonarr_validation_result').text('You Must Test Your Sonarr Connection Settings Before Saving.').css('color', 'red');
$('.form').form('validate form');
$('#loader').removeClass('active');
});
$('#settings_sonarr_ssl').on('change', function() {
$('#sonarr_validated').checkbox('uncheck');
$('#sonarr_validation_result').text('You must test your Sonarr connection settings before saving settings.').css('color', 'red');
$('#sonarr_validation_result').text('You Must Test Your Sonarr Connection Settings Before Saving.').css('color', 'red');
$('.form').form('validate form');
$('#loader').removeClass('active');
});
@ -236,4 +236,4 @@
$("#sonarr_validated").checkbox('check');
</script>
</script>

@ -1,10 +1,10 @@
<div class="ui dividing header">Subtitles options</div>
<div class="ui dividing header">Subtitle Options</div>
<div class="twelve wide column">
<div class="ui grid">
<div class="middle aligned row">
<div class="two wide column"></div>
<div class="right aligned four wide column">
<label>Search for missing subtitles frequency (in hours)</label>
<label>Search for missing Subtitles frequency (in hours)</label>
</div>
<div class="five wide column">
<div class='field'>
@ -19,7 +19,7 @@
<div class="middle aligned row">
<div class="right aligned four wide column">
<label>Use scene name when available</label>
<label>Use Scene name when available</label>
</div>
<div class="one wide column">
<div id="settings_scenename" class="ui toggle checkbox" data-scenename={{settings.general.getboolean('use_scenename')}}>
@ -29,7 +29,7 @@
</div>
<div class="collapsed column">
<div class="collapsed center aligned column">
<div class="ui basic icon" data-tooltip="Use the scene name from Sonarr/Radarr if available to circumvent usage of episode file renaming." data-inverted="">
<div class="ui basic icon" data-tooltip="Use the Scene name from Sonarr/Radarr if available to circumvent usage of episode file renaming." data-inverted="">
<i class="help circle large icon"></i>
</div>
</div>
@ -38,7 +38,7 @@
<div class="middle aligned row">
<div class="right aligned four wide column">
<label>Minimum score for episodes</label>
<label>Minimum Score For Episodes</label>
</div>
<div class="two wide column">
<div class='field'>
@ -49,7 +49,7 @@
</div>
<div class="collapsed column">
<div class="collapsed center aligned column">
<div class="ui basic icon" data-tooltip="Minimum score for an episode subtitle to be downloaded (0 to 100)." data-inverted="">
<div class="ui basic icon" data-tooltip="Minimum score for an Episodes Subtitle to be downloaded (0 to 100)." data-inverted="">
<i class="help circle large icon"></i>
</div>
</div>
@ -58,7 +58,7 @@
<div class="middle aligned row">
<div class="right aligned four wide column">
<label>Minimum score for movies</label>
<label>Minimum Score For Movies</label>
</div>
<div class="two wide column">
<div class='field'>
@ -69,7 +69,7 @@
</div>
<div class="collapsed column">
<div class="collapsed center aligned column">
<div class="ui basic icon" data-tooltip="Minimum score for a movie subtitle to be downloaded (0 to 100)." data-inverted="">
<div class="ui basic icon" data-tooltip="Minimum score for a Movie Subtitle to be downloaded (0 to 100)." data-inverted="">
<i class="help circle large icon"></i>
</div>
</div>
@ -78,20 +78,20 @@
<div class="middle aligned row">
<div class="right aligned four wide column">
<label>Subtitle folder</label>
<label>Subtitle Folder</label>
</div>
<div class="five wide column">
<select name="settings_subfolder" id="settings_subfolder"
class="ui fluid selection dropdown">
<option value="current">Alongside media file</option>
<option value="relative">Relative path to media file</option>
<option value="absolute">Absolute path</option>
<option value="current">Alongside Media File</option>
<option value="relative">Relative Path To Media File</option>
<option value="absolute">Absolute Path</option>
</select>
</div>
<div class="collapsed center aligned column">
<div class="ui basic icon"
data-tooltip='Choose folder where you want to store/read the subtitles'
data-tooltip='Choose the folder you wish to store/read the Subtitles'
data-inverted="">
<i class="help circle large icon"></i>
</div>
@ -101,7 +101,7 @@
<div class="middle aligned row subfolder">
<div class="two wide column"></div>
<div class="right aligned four wide column">
<label>Custom Subtitle folder</label>
<label>Custom Subtitle Folder</label>
</div>
<div class="five wide column">
<div class='field'>
@ -114,7 +114,7 @@
<div class="collapsed center aligned column">
<div class="ui basic icon"
data-tooltip='Choose your own folder for the subtitles' data-inverted="">
data-tooltip='Choose your own folder for Subtitles' data-inverted="">
<i class="help circle large icon"></i>
</div>
</div>
@ -122,7 +122,7 @@
<div class="middle aligned row">
<div class="right aligned four wide column">
<label>Upgrade previously downloaded subtitles</label>
<label>Upgrade Previously Downloaded Subtitles</label>
</div>
<div class="one wide column">
<div id="settings_upgrade_subs" class="ui toggle checkbox" data-upgrade={{settings.general.getboolean('upgrade_subs')}}>
@ -133,7 +133,7 @@
<div class="collapsed center aligned column">
<div class="ui basic icon"
data-tooltip='Schedule a task to upgrade subtitles previously downloaded by Bazarr.'
data-tooltip='Schedule a task to upgrade Subtitles previously downloaded by Bazarr.'
data-inverted="">
<i class="help circle large icon"></i>
</div>
@ -143,7 +143,7 @@
<div class="middle aligned row upgrade_subs">
<div class="two wide column"></div>
<div class="right aligned four wide column">
<label>Upgrade frequency (in hours)</label>
<label>Upgrade Frequency (In Hours)</label>
</div>
<div class="five wide column">
<div class='field'>
@ -159,7 +159,7 @@
<div class="middle aligned row upgrade_subs">
<div class="two wide column"></div>
<div class="right aligned four wide column">
<label>Number of days to go back in history to upgrade subtitles (up to 30)</label>
<label>Number of days to go back in history to upgrade Subtitles (up to 30)</label>
</div>
<div class="five wide column">
<div class='field'>
@ -174,7 +174,7 @@
<div class="middle aligned row upgrade_subs">
<div class="two wide column"></div>
<div class="right aligned four wide column">
<label>Upgrade manually downloaded subtitles</label>
<label>Upgrade Manually Downloaded Subtitles</label>
</div>
<div class="one wide column">
<div id="settings_upgrade_manual" class="ui toggle checkbox" data-upgrade-manual={{settings.general.getboolean('upgrade_manual')}}>
@ -185,7 +185,7 @@
<div class="collapsed center aligned column">
<div class="ui basic icon"
data-tooltip='Enable or disable upgrade of manually searched and downloaded subtitles.'
data-tooltip='Enable or disable upgrade of manually searched and downloaded Subtitles.'
data-inverted="">
<i class="help circle large icon"></i>
</div>
@ -194,7 +194,7 @@
<div class="middle aligned row">
<div class="right aligned four wide column">
<label>Use embedded subtitles</label>
<label>Use Embedded Subtitles</label>
</div>
<div class="one wide column">
<div id="settings_embedded" class="ui toggle checkbox" data-embedded={{settings.general.getboolean('use_embedded_subs')}}>
@ -204,7 +204,7 @@
</div>
<div class="collapsed column">
<div class="collapsed center aligned column">
<div class="ui basic icon" data-tooltip="Use embedded subtitles in media files when determining missing ones." data-inverted="">
<div class="ui basic icon" data-tooltip="Use embedded Subtitles in media files when determining missing ones." data-inverted="">
<i class="help circle large icon"></i>
</div>
</div>
@ -213,7 +213,7 @@
<div class="middle aligned row">
<div class="right aligned four wide column">
<label>Ignore embedded PGS subtitles</label>
<label>Ignore Embedded PGS Subtitles</label>
</div>
<div class="one wide column">
<div id="settings_ignore_pgs" class="ui toggle checkbox" data-ignorepgs={{settings.general.getboolean('ignore_pgs_subs')}}>
@ -223,7 +223,7 @@
</div>
<div class="collapsed column">
<div class="collapsed center aligned column">
<div class="ui basic icon" data-tooltip="Ignores pgs subtitles in embedded subtitles detection. Only relevant if 'Use embedded subtitles' is enabled." data-inverted="">
<div class="ui basic icon" data-tooltip="Ignores PGS Subtitles in Embedded Subtitles detection. Only relevant if 'Use embedded Subtitles' is enabled." data-inverted="">
<i class="help circle large icon"></i>
</div>
</div>
@ -232,7 +232,7 @@
<div class="middle aligned row">
<div class="right aligned four wide column">
<label>Adaptive searching</label>
<label>Adaptive Searching</label>
</div>
<div class="one wide column">
<div id="settings_adaptive_searching" class="ui toggle checkbox" data-adaptive={{settings.general.getboolean('adaptive_searching')}}>
@ -242,7 +242,7 @@
</div>
<div class="collapsed column">
<div class="collapsed center aligned column">
<div class="ui basic icon" data-tooltip="When searching for subtitles, Bazarr will search less frequently after sometime to limit call to providers." data-inverted="">
<div class="ui basic icon" data-tooltip="When searching for Subtitles, Bazarr will search less frequently to limit call to providers." data-inverted="">
<i class="help circle large icon"></i>
</div>
</div>
@ -251,7 +251,7 @@
<div class="middle aligned row">
<div class="right aligned four wide column">
<label>Search enabled providers simultaneously</label>
<label>Search Enabled Providers Simultaneously</label>
</div>
<div class="one wide column">
<div id="settings_multithreading" class="ui toggle checkbox"
@ -262,7 +262,7 @@
</div>
<div class="collapsed column">
<div class="collapsed center aligned column">
<div class="ui basic icon" data-tooltip="Search multi providers at once (Don't choose this on low powered devices)" data-inverted="">
<div class="ui basic icon" data-tooltip="Search multiple providers at once (Don't choose this on low powered devices)" data-inverted="">
<i class="help circle large icon"></i>
</div>
</div>
@ -271,7 +271,7 @@
<div class="middle aligned row">
<div class="right aligned four wide column">
<label>Encode subtitles to UTF8</label>
<label>Encode Subtitles To UTF8</label>
</div>
<div class="one wide column">
<div id="settings_utf8_encode" class="ui toggle checkbox" data-utf8encode={{ settings.general.getboolean('utf8_encode') }}>
@ -281,7 +281,7 @@
</div>
<div class="collapsed column">
<div class="collapsed center aligned column">
<div class="ui basic icon" data-tooltip="Re-encode downloaded subtitles to UTF8. Should be left enabled in most case." data-inverted="">
<div class="ui basic icon" data-tooltip="Re-encode downloaded Subtitles to UTF8. Should be left enabled in most case." data-inverted="">
<i class="help circle large icon"></i>
</div>
</div>
@ -290,7 +290,7 @@
</div>
</div>
<div class="ui dividing header">Anti-captcha options</div>
<div class="ui dividing header">Anti-Captcha Options</div>
<div class="twelve wide column">
<div class="ui grid">
<div class="middle aligned row">
@ -307,7 +307,7 @@
<div class="collapsed center aligned column">
<div class="ui basic icon"
data-tooltip='Choose the anti-captcha provider you want to use.'
data-tooltip='Choose the Anti-Captcha provider you want to use.'
data-inverted="">
<i class="help circle large icon"></i>
</div>
@ -317,7 +317,7 @@
<div class="middle aligned row anticaptcha">
<div class="two wide column"></div>
<div class="right aligned four wide column">
<label>Provider website</label>
<label>Provider Website</label>
</div>
<div class="five wide column">
<a href="http://getcaptchasolution.com/eixxo1rsnw" target="_blank">Anti-Captcha.com</a>
@ -342,7 +342,7 @@
<div class="middle aligned row deathbycaptcha">
<div class="two wide column"></div>
<div class="right aligned four wide column">
<label>Provider website</label>
<label>Provider Website</label>
</div>
<div class="five wide column">
<a href="https://www.deathbycaptcha.com" target="_blank">DeathByCaptcha.com</a>
@ -388,7 +388,7 @@
<div class="ui grid">
<div class="middle aligned row">
<div class="right aligned four wide column">
<label>Single language</label>
<label>Single Language</label>
</div>
<div class="one wide column">
<div id="settings_single_language" class="ui toggle checkbox" data-single-language={{settings.general.getboolean('single_language')}}>
@ -398,7 +398,7 @@
</div>
<div class="collapsed column">
<div class="collapsed center aligned column">
<div class="ui basic icon" data-tooltip="Download a single subtitles file and don't add the language code to the filename." data-inverted="">
<div class="ui basic icon" data-tooltip="Download a single Subtitles file without adding the language code to the filename." data-inverted="">
<i class="help circle large icon"></i>
</div>
</div>
@ -407,7 +407,7 @@
<div class="middle aligned row">
<div class="right aligned four wide column">
<label>Enabled languages</label>
<label>Enabled Languages</label>
</div>
<div class="eleven wide column">
<div class='field'>
@ -427,12 +427,12 @@
</div>
</div>
<div class="ui dividing header">Series default settings</div>
<div class="ui dividing header">Series Default Settings</div>
<div class="twelve wide column">
<div class="ui grid">
<div class="middle aligned row">
<div class="right aligned four wide column">
<label>Default enabled</label>
<label>Default Enabled</label>
</div>
<div class="one wide column">
<div class="nine wide column">
@ -470,7 +470,7 @@
<div class="middle aligned row">
<div class="right aligned four wide column">
<label>Hearing-impaired</label>
<label>Hearing-Impaired</label>
</div>
<div class="eleven wide column">
<div class="nine wide column">
@ -499,12 +499,12 @@
</div>
</div>
<div class="ui dividing header">Movies default settings</div>
<div class="ui dividing header">Movie Default Settings</div>
<div class="twelve wide column">
<div class="ui grid">
<div class="middle aligned row">
<div class="right aligned four wide column">
<label>Default enabled</label>
<label>Default Enabled</label>
</div>
<div class="one wide column">
<div class="nine wide column">
@ -516,7 +516,7 @@
</div>
<div class="collapsed column">
<div class="collapsed center aligned column">
<div class="ui basic icon" data-tooltip="Apply only to movies added to Bazarr after enabling this option." data-inverted="">
<div class="ui basic icon" data-tooltip="Apply only to Movies added to Bazarr after enabling this option." data-inverted="">
<i class="help circle large icon"></i>
</div>
</div>
@ -542,7 +542,7 @@
<div class="middle aligned row">
<div id="movie_default_hi_label" class="right aligned four wide column">
<label>Hearing-impaired</label>
<label>Hearing-Impaired</label>
</div>
<div class="eleven wide column">
<div class="nine wide column">
@ -829,4 +829,4 @@
});
</script>
</script>

@ -108,9 +108,9 @@
<div class="row">
<div class="left floatedcolumn">
<div class="ui basic buttons">
<button id="refresh_log" class="ui button"><i class="refresh icon"></i>Refresh current page</button>
<button id="download_log" class="ui button"><i class="download icon"></i>Download log file</button>
<button id="empty_log" class="ui button"><i class="trash icon"></i>Empty log file</button>
<button id="refresh_log" class="ui button"><i class="refresh icon"></i>Refresh Current Page</button>
<button id="download_log" class="ui button"><i class="download icon"></i>Download Log File</button>
<button id="empty_log" class="ui button"><i class="trash icon"></i>Empty Log</button>
</div>
</div>
<div class="right floated right aligned column">
@ -167,7 +167,7 @@
<div class="ui grid">
<div class="middle aligned row">
<div class="right aligned four wide column">
<label>Bazarr version</label>
<label>Bazarr Version:</label>
</div>
<div class="five wide column">
<div class='field'>
@ -180,7 +180,7 @@
% if settings.general.getboolean('use_sonarr'):
<div class="middle aligned row">
<div class="right aligned four wide column">
<label>Sonarr version</label>
<label>Sonarr Version:</label>
</div>
<div class="five wide column">
<div class='field'>
@ -194,7 +194,7 @@
% if settings.general.getboolean('use_radarr'):
<div class="middle aligned row">
<div class="right aligned four wide column">
<label>Radarr version</label>
<label>Radarr Version:</label>
</div>
<div class="five wide column">
<div class='field'>
@ -207,7 +207,7 @@
% end
<div class="middle aligned row">
<div class="right aligned four wide column">
<label>Operating system</label>
<label>Operating System:</label>
</div>
<div class="five wide column">
<div class='field'>
@ -219,7 +219,7 @@
</div>
<div class="middle aligned row">
<div class="right aligned four wide column">
<label>Python version</label>
<label>Python Version:</label>
</div>
<div class="five wide column">
<div class='field'>
@ -231,7 +231,7 @@
</div>
<div class="middle aligned row">
<div class="right aligned four wide column">
<label>Bazarr directory</label>
<label>Bazarr Directory:</label>
</div>
<div class="five wide column">
<div class='field'>
@ -243,7 +243,7 @@
</div>
<div class="middle aligned row">
<div class="right aligned four wide column">
<label>Bazarr config directory</label>
<label>Bazarr Config Directory:</label>
</div>
<div class="five wide column">
<div class='field'>
@ -260,19 +260,19 @@
<div class="ui grid">
<div class="middle aligned row">
<div class="right aligned four wide column">
<label>Home page</label>
<label>Home Page:</label>
</div>
<div class="five wide column">
<div class='field'>
<div class="ui fluid input">
<i class="paper plane icon"></i><a href="https://www.bazarr.media" target="_blank">Bazarr website</a>
<i class="paper plane icon"></i><a href="https://www.bazarr.media" target="_blank">Bazarr Website</a>
</div>
</div>
</div>
</div>
<div class="middle aligned row">
<div class="right aligned four wide column">
<label>Source</label>
<label>Source:</label>
</div>
<div class="five wide column">
<div class='field'>
@ -284,7 +284,7 @@
</div>
<div class="middle aligned row">
<div class="right aligned four wide column">
<label>Wiki</label>
<label>Wiki:</label>
</div>
<div class="five wide column">
<div class='field'>
@ -296,7 +296,7 @@
</div>
<div class="middle aligned row">
<div class="right aligned four wide column">
<label>Discord</label>
<label>Discord:</label>
</div>
<div class="five wide column">
<div class='field'>
@ -315,7 +315,7 @@
%for release in releases:
<h2 class="ui header">
%if release[0][1:] == bazarr_version:
{{release[0]}} <div class="ui green label">Current version</div>
{{release[0]}} <div class="ui green label">Current Version</div>
%else:
{{release[0]}}
%end
@ -563,4 +563,4 @@
$("#exception").html(exception);
$('#modal').modal('show');
});
</script>
</script>

@ -46,7 +46,7 @@
<thead>
<tr>
<th>Movies</th>
<th>Missing subtitles</th>
<th>Missing Subtitle(s)</th>
</tr>
</thead>
<tbody>
@ -54,7 +54,7 @@
%import pretty
%if len(rows) == 0:
<tr>
<td colspan="2">No missing movie subtitles.</td>
<td colspan="2">No Missing Subtitles.</td>
</tr>
%end
%for row in rows:
@ -83,7 +83,7 @@
<i style="margin-left:3px; margin-right:0" class="search icon"></i>
</a>
%else:
<a data-tooltip="Automatic searching delayed (adaptive search)" data-position="top right" data-inverted="" data-moviePath="{{row.path}}" data-sceneName="{{row.scene_name}}" data-language="{{alpha3_from_alpha2(str(language.split(':')[0]))}}" data-hi="{{row.hearing_impaired}}" data-forced="{{forced}}" data-radarrId={{row.radarr_id}} data-title="{{row.title.replace("'", "\'")}}" class="get_subtitle ui tiny label">
<a data-tooltip="Automatic Searching Delayed (Adaptive Search)" data-position="top right" data-inverted="" data-moviePath="{{row.path}}" data-sceneName="{{row.scene_name}}" data-language="{{alpha3_from_alpha2(str(language.split(':')[0]))}}" data-hi="{{row.hearing_impaired}}" data-forced="{{forced}}" data-radarrId={{row.radarr_id}} data-title="{{row.title.replace("'", "\'")}}" class="get_subtitle ui tiny label">
{{language}}
<i style="margin-left:3px; margin-right:0" class="search red icon"></i>
</a>
@ -134,7 +134,7 @@
%end
fast forward icon"></i>
</div>
<div class="right floated right aligned column">Total records: {{missing_count}}</div>
<div class="right floated right aligned column">Total Records: {{missing_count}}</div>
</div>
</div>
%end
@ -179,7 +179,7 @@
radarrId: $(this).attr("data-radarrId"),
title: $(this).attr("data-title")
};
$('#loader_text').text("Downloading subtitles...");
$('#loader_text').text("Downloading Subtitles...");
$('#loader').addClass('active');
$.ajax({
url: "{{base_url}}get_subtitle_movie",
@ -190,4 +190,4 @@
window.location.reload();
});
})
</script>
</script>

@ -48,7 +48,7 @@
<th>Series</th>
<th>Episode</th>
<th>Episode Title</th>
<th>Missing subtitles</th>
<th>Missing Subtitle(s)</th>
</tr>
</thead>
<tbody>
@ -56,7 +56,7 @@
%import pretty
%if rows.count() == 0:
<tr>
<td colspan="4">No missing episode subtitles.</td>
<td colspan="4">No Missing Subtitles.</td>
</tr>
%end
%for row in rows:
@ -90,7 +90,7 @@
<i style="margin-left:3px; margin-right:0" class="search icon"></i>
</a>
%else:
<a data-tooltip="Automatic searching delayed (adaptive search)" data-position="top right" data-inverted="" data-episodePath="{{row.path}}" data-sceneName="{{row.scene_name}}" data-language="{{alpha3_from_alpha2(str(language.split(':')[0]))}}" data-hi="{{row.hearing_impaired}}" data-forced="{{forced}}" data-sonarrSeriesId={{row.sonarr_series_id.sonarr_series_id}} data-sonarrEpisodeId={{row.sonarr_episode_id}} data-title="{{row.seriesTitle.replace("'", "\'")}}" class="get_subtitle ui tiny label">
<a data-tooltip="Automatic Searching Delayed (Adaptive Search)" data-position="top right" data-inverted="" data-episodePath="{{row.path}}" data-sceneName="{{row.scene_name}}" data-language="{{alpha3_from_alpha2(str(language.split(':')[0]))}}" data-hi="{{row.hearing_impaired}}" data-forced="{{forced}}" data-sonarrSeriesId={{row.sonarr_series_id.sonarr_series_id}} data-sonarrEpisodeId={{row.sonarr_episode_id}} data-title="{{row.seriesTitle.replace("'", "\'")}}" class="get_subtitle ui tiny label">
{{language}}
<i style="margin-left:3px; margin-right:0" class="search red icon"></i>
</a>
@ -141,7 +141,7 @@
%end
fast forward icon"></i>
</div>
<div class="right floated right aligned column">Total records: {{missing_count}}</div>
<div class="right floated right aligned column">Total Records: {{missing_count}}</div>
</div>
</div>
%end
@ -187,7 +187,7 @@
sonarrEpisodeId: $(this).attr("data-sonarrEpisodeId"),
title: $(this).attr("data-title")
};
$('#loader_text').text("Downloading subtitles...");
$('#loader_text').text("Downloading Subtitles...");
$('#loader').addClass('active');
$.ajax({
url: "{{base_url}}get_subtitle",
@ -198,4 +198,4 @@
window.location.reload();
});
})
</script>
</script>

@ -48,7 +48,7 @@
</head>
<body>
<div id='loader' class="ui page dimmer">
<div class="ui indeterminate text loader">Saving settings...</div>
<div class="ui indeterminate text loader">Saving Settings...</div>
</div>
<div class="ui modal" id="browsemodal">
@ -58,35 +58,35 @@
<div id="fondblanc" class="ui container">
<form name="wizard_form" id="wizard_form" action="{{base_url}}save_wizard" method="post" class="ui form" autocomplete="off">
<div id="form_validation_error" class="ui error message">
<p>Some fields are in error and you can't save settings until you have corrected them. Be sure to check in every tabs.</p>
<p>Some fields are incorrect and you cannot continue until you have corrected them. Be sure to check every tab.</p>
</div>
<div class="ui top attached mini steps">
<div class="active step" data-tab="general" id="general_tab">
<i class="setting icon"></i>
<div class="content">
<div class="title">General</div>
<div class="description">General settings</div>
<div class="description">General Settings</div>
</div>
</div>
<div class="step" data-tab="subtitles" id="subtitles_tab">
<i class="closed captioning icon"></i>
<div class="content">
<div class="title">Subtitles</div>
<div class="description">Subtitles settings</div>
<div class="description">Subtitles Settings</div>
</div>
</div>
<div class="step" data-tab="sonarr" id="sonarr_tab">
<i class="play icon"></i>
<div class="content">
<div class="title">Sonarr</div>
<div class="description">Sonarr settings</div>
<div class="description">Sonarr Settings</div>
</div>
</div>
<div class="step" data-tab="radarr" id="radarr_tab">
<i class="film icon"></i>
<div class="content">
<div class="title">Radarr</div>
<div class="description">Radarr settings</div>
<div class="description">Radarr Settings</div>
</div>
</div>
</div>

@ -3,7 +3,7 @@
<div class="ui grid">
<div class="middle aligned row">
<div class="right aligned four wide column">
<label>Listening IP address</label>
<label>Listening IP Address</label>
</div>
<div class="five wide column">
<div class='field'>
@ -14,12 +14,12 @@
</div>
<div class="collapsed center aligned column">
<div class="ui basic icon" data-tooltip="Requires restart to take effect" data-inverted="">
<div class="ui basic icon" data-tooltip="Requires A Restart To Take Effect" data-inverted="">
<i class="yellow warning sign icon"></i>
</div>
</div>
<div class="collapsed center aligned column">
<div class="ui basic icon" data-tooltip="Valid IP4 address or '0.0.0.0' for all interfaces" data-inverted="">
<div class="ui basic icon" data-tooltip="Valid IP4 Address or '0.0.0.0' for all interfaces" data-inverted="">
<i class="help circle large icon"></i>
</div>
</div>
@ -27,7 +27,7 @@
<div class="middle aligned row">
<div class="right aligned four wide column">
<label>Listening port</label>
<label>Listening Port</label>
</div>
<div class="five wide column">
<div class='field'>
@ -38,12 +38,12 @@
</div>
<div class="collapsed center aligned column">
<div class="ui basic icon" data-tooltip="Requires restart to take effect" data-inverted="">
<div class="ui basic icon" data-tooltip="Requires A Restart To Take Effect" data-inverted="">
<i class="yellow warning sign icon"></i>
</div>
</div>
<div class="collapsed center aligned column">
<div class="ui basic icon" data-tooltip="Valid TCP port (default: 6767)" data-inverted="">
<div class="ui basic icon" data-tooltip="Valid TCP Port (default: 6767)" data-inverted="">
<i class="help circle large icon"></i>
</div>
</div>
@ -65,12 +65,12 @@
</div>
<div class="collapsed center aligned column">
<div class="ui basic icon" data-tooltip="Requires restart to take effect" data-inverted="">
<div class="ui basic icon" data-tooltip="Requires A Restart To Take Effect" data-inverted="">
<i class="yellow warning sign icon"></i>
</div>
</div>
<div class="collapsed center aligned column">
<div class="ui basic icon" data-tooltip="For reverse proxy support, default is '/'" data-inverted="">
<div class="ui basic icon" data-tooltip="For Reverse Proxy Support, Default Is '/'" data-inverted="">
<i class="help circle large icon"></i>
</div>
</div>
@ -78,7 +78,7 @@
</div>
</div>
<div class="ui dividing header">Path Mappings for shows</div>
<div class="ui dividing header">Path Mappings For TV Shows</div>
<div class="twelve wide column">
<div class="ui grid">
%import ast
@ -152,7 +152,7 @@
</div>
</div>
<div class="ui dividing header">Path Mappings for movies</div>
<div class="ui dividing header">Path Mappings For Movies</div>
<div class="twelve wide column">
<div class="ui grid">
%import ast
@ -228,4 +228,4 @@
<script>
</script>
</script>

@ -3,7 +3,7 @@
<div class="ui grid">
<div class="middle aligned row">
<div class="right aligned four wide column">
<label>Settings validation:</label>
<label>Settings Validation:</label>
</div>
<div class="two wide column">
<button id="radarr_validate" class="test ui blue button" type="button">
@ -13,7 +13,7 @@
<div class="seven wide column">
<div id="radarr_validated" class="ui read-only checkbox">
<input id="radarr_validated_checkbox" type="checkbox">
<label id="radarr_validation_result">Not tested recently</label>
<label id="radarr_validation_result">Not Tested Recently</label>
</div>
</div>
</div>
@ -30,7 +30,7 @@
</div>
<div class="collapsed column">
<div class="collapsed center aligned column">
<div class="ui basic icon" data-tooltip="Enable Radarr integration." data-inverted="">
<div class="ui basic icon" data-tooltip="Enable Radarr Integration." data-inverted="">
<i class="help circle large icon"></i>
</div>
</div>
@ -39,7 +39,7 @@
<div class="radarr_hide middle aligned row">
<div class="right aligned four wide column">
<label>Hostname or IP address</label>
<label>Hostname or IP Address</label>
</div>
<div class="five wide column">
<div class='field'>
@ -49,7 +49,7 @@
</div>
</div>
<div class="collapsed center aligned column">
<div class="ui basic icon" data-tooltip="Hostname or IP4 address of Radarr" data-inverted="">
<div class="ui basic icon" data-tooltip="Hostname or IP4 Address of Radarr" data-inverted="">
<i class="help circle large icon"></i>
</div>
</div>
@ -57,7 +57,7 @@
<div class="radarr_hide middle aligned row">
<div class="right aligned four wide column">
<label>Listening port</label>
<label>Listening Port</label>
</div>
<div class="five wide column">
<div class='field'>
@ -67,7 +67,7 @@
</div>
</div>
<div class="collapsed center aligned column">
<div class="ui basic icon" data-tooltip="TCP port of Radarr" data-inverted="">
<div class="ui basic icon" data-tooltip="TCP Port of Radarr" data-inverted="">
<i class="help circle large icon"></i>
</div>
</div>
@ -91,7 +91,7 @@
<div class="radarr_hide middle aligned row">
<div class="right aligned four wide column">
<label>SSL enabled</label>
<label>SSL Enabled</label>
</div>
<div class="one wide column">
<div id="radarr_ssl_div" class="ui toggle checkbox">
@ -103,7 +103,7 @@
<div class="radarr_hide middle aligned row">
<div class="right aligned four wide column">
<label>API key</label>
<label>API Key</label>
</div>
<div class="five wide column">
<div class='field'>
@ -113,7 +113,7 @@
</div>
</div>
<div class="collapsed center aligned column">
<div class="ui basic icon" data-tooltip="API key for Radarr (32 alphanumeric characters)" data-inverted="">
<div class="ui basic icon" data-tooltip="API Key for Radarr (32 alphanumeric characters)" data-inverted="">
<i class="help circle large icon"></i>
</div>
</div>
@ -121,7 +121,7 @@
<div class="radarr_hide middle aligned row">
<div class="right aligned four wide column">
<label>Download only monitored</label>
<label>Download Only Monitored</label>
</div>
<div class="one wide column">
<div id="settings_only_monitored_radarr" class="ui toggle checkbox" data-monitored={{settings.radarr.getboolean('only_monitored')}}>
@ -131,7 +131,7 @@
</div>
<div class="collapsed column">
<div class="collapsed center aligned column">
<div class="ui basic icon" data-tooltip="Automatic download of subtitles will happen only for monitored movies in Radarr." data-inverted="">
<div class="ui basic icon" data-tooltip="Only Download Subtitles For Monitored Movies in Radarr." data-inverted="">
<i class="help circle large icon"></i>
</div>
</div>
@ -179,7 +179,7 @@
$('#loader').removeClass('active');
} else {
$('#radarr_validated').checkbox('uncheck');
$('#radarr_validation_result').text('Test failed').css('color', 'red');
$('#radarr_validation_result').text('Test Failed').css('color', 'red');
$('.form').form('validate form');
$('#loader').removeClass('active');
}
@ -188,17 +188,17 @@
$('.radarr_config').on('keyup', function() {
$('#radarr_validated').checkbox('uncheck');
$('#radarr_validation_result').text('You must test your Radarr connection settings before saving settings.').css('color', 'red');
$('#radarr_validation_result').text('You Must Test Your Radarr Connection Settings Before Saving.').css('color', 'red');
$('.form').form('validate form');
$('#loader').removeClass('active');
});
$('#settings_radarr_ssl').on('change', function() {
$('#radarr_validated').checkbox('uncheck');
$('#radarr_validation_result').text('You must test your Radarr connection settings before saving settings.').css('color', 'red');
$('#radarr_validation_result').text('You Must Test Your Radarr Connection Settings Before Saving.').css('color', 'red');
$('.form').form('validate form');
$('#loader').removeClass('active');
});
$("#radarr_validated").checkbox('check');
</script>
</script>

@ -1,4 +1,4 @@
<div class="ui dividing header">Connection settings</div>
<div class="ui dividing header">Connection Settings</div>
<div class="twelve wide column">
<div class="ui grid">
<div class="middle aligned row">
@ -13,7 +13,7 @@
<div class="seven wide column">
<div id="sonarr_validated" class="ui read-only checkbox">
<input id="sonarr_validated_checkbox" type="checkbox">
<label id="sonarr_validation_result">Not tested recently</label>
<label id="sonarr_validation_result">Not Tested Recently</label>
</div>
</div>
</div>
@ -30,7 +30,7 @@
</div>
<div class="collapsed column">
<div class="collapsed center aligned column">
<div class="ui basic icon" data-tooltip="Enable Sonarr integration." data-inverted="">
<div class="ui basic icon" data-tooltip="Enable Sonarr Integration." data-inverted="">
<i class="help circle large icon"></i>
</div>
</div>
@ -39,7 +39,7 @@
<div class="sonarr_hide middle aligned row">
<div class="right aligned four wide column">
<label>Hostname or IP address</label>
<label>Hostname or IP Address</label>
</div>
<div class="five wide column">
<div class='field'>
@ -49,7 +49,7 @@
</div>
</div>
<div class="collapsed center aligned column">
<div class="ui basic icon" data-tooltip="Hostname or IP4 address of Sonarr" data-inverted="">
<div class="ui basic icon" data-tooltip="Hostname or IP4 Address of Sonarr" data-inverted="">
<i class="help circle large icon"></i>
</div>
</div>
@ -57,7 +57,7 @@
<div class="sonarr_hide middle aligned row">
<div class="right aligned four wide column">
<label>Listening port</label>
<label>Listening Port</label>
</div>
<div class="five wide column">
<div class='field'>
@ -67,7 +67,7 @@
</div>
</div>
<div class="collapsed center aligned column">
<div class="ui basic icon" data-tooltip="TCP port of Sonarr" data-inverted="">
<div class="ui basic icon" data-tooltip="TCP Port of Sonarr" data-inverted="">
<i class="help circle large icon"></i>
</div>
</div>
@ -91,7 +91,7 @@
<div class="sonarr_hide middle aligned row">
<div class="right aligned four wide column">
<label>SSL enabled</label>
<label>SSL Enabled</label>
</div>
<div class="one wide column">
<div id="sonarr_ssl_div" class="ui toggle checkbox">
@ -103,7 +103,7 @@
<div class="sonarr_hide middle aligned row">
<div class="right aligned four wide column">
<label>API key</label>
<label>API Key</label>
</div>
<div class="five wide column">
<div class='field'>
@ -113,7 +113,7 @@
</div>
</div>
<div class="collapsed center aligned column">
<div class="ui basic icon" data-tooltip="API key for Sonarr (32 alphanumeric characters)" data-inverted="">
<div class="ui basic icon" data-tooltip="API Key for Sonarr (32 alphanumeric characters)" data-inverted="">
<i class="help circle large icon"></i>
</div>
</div>
@ -121,7 +121,7 @@
<div class="sonarr_hide middle aligned row">
<div class="right aligned four wide column">
<label>Download only monitored</label>
<label>Download Only Monitored</label>
</div>
<div class="one wide column">
<div id="settings_only_monitored_sonarr" class="ui toggle checkbox" data-monitored={{settings.sonarr.getboolean('only_monitored')}}>
@ -131,7 +131,7 @@
</div>
<div class="collapsed column">
<div class="collapsed center aligned column">
<div class="ui basic icon" data-tooltip="Automatic download of subtitles will happen only for monitored episodes in Sonarr." data-inverted="">
<div class="ui basic icon" data-tooltip="Only Download Subtitles For Monitored Episodes in Sonarr." data-inverted="">
<i class="help circle large icon"></i>
</div>
</div>
@ -174,12 +174,12 @@
$.getJSON("{{base_url}}test_url/" + protocol + "/" + encodeURIComponent(sonarr_url), function (data) {
if (data.status) {
$('#sonarr_validated').checkbox('check');
$('#sonarr_validation_result').text('Test successful: Sonarr v' + data.version).css('color', 'green');
$('#sonarr_validation_result').text('Test Successful: Sonarr v' + data.version).css('color', 'green');
$('.form').form('validate form');
$('#loader').removeClass('active');
} else {
$('#sonarr_validated').checkbox('uncheck');
$('#sonarr_validation_result').text('Test failed').css('color', 'red');
$('#sonarr_validation_result').text('Test Failed').css('color', 'red');
$('.form').form('validate form');
$('#loader').removeClass('active');
}
@ -188,17 +188,17 @@
$('.sonarr_config').on('keyup', function() {
$('#sonarr_validated').checkbox('uncheck');
$('#sonarr_validation_result').text('You must test your Sonarr connection settings before saving settings.').css('color', 'red');
$('#sonarr_validation_result').text('You Must Test Your Sonarr Connection Settings Before Saving.').css('color', 'red');
$('.form').form('validate form');
$('#loader').removeClass('active');
});
$('#settings_sonarr_ssl').on('change', function() {
$('#sonarr_validated').checkbox('uncheck');
$('#sonarr_validation_result').text('You must test your Sonarr connection settings before saving settings.').css('color', 'red');
$('#sonarr_validation_result').text('You Must Test Your Sonarr Connection Settings Before Saving.').css('color', 'red');
$('.form').form('validate form');
$('#loader').removeClass('active');
});
$("#sonarr_validated").checkbox('check');
</script>
</script>

@ -4,20 +4,20 @@
<div class="middle aligned row">
<div class="right aligned four wide column">
<label>Subtitle folder</label>
<label>Subtitle Folder</label>
</div>
<div class="five wide column">
<select name="settings_subfolder" id="settings_subfolder"
class="ui fluid selection dropdown">
<option value="current">Alongside media file</option>
<option value="relative">Relative path to media file</option>
<option value="absolute">Absolute path</option>
<option value="current">Alongside Media File</option>
<option value="relative">Relative Path To Media File</option>
<option value="absolute">Absolute Path</option>
</select>
</div>
<div class="collapsed center aligned column">
<div class="ui basic icon"
data-tooltip='Choose folder where you want to store/read the subtitles'
data-tooltip='Choose the folder you want to store/read the Subtitles in'
data-inverted="">
<i class="help circle large icon"></i>
</div>
@ -27,7 +27,7 @@
<div class="middle aligned row subfolder">
<div class="two wide column"></div>
<div class="right aligned four wide column">
<label>Custom Subtitle folder</label>
<label>Custom Subtitle Folder</label>
</div>
<div class="five wide column">
<div class='field'>
@ -40,7 +40,7 @@
<div class="collapsed center aligned column">
<div class="ui basic icon"
data-tooltip='Choose your own folder for the subtitles' data-inverted="">
data-tooltip='Choose your own folder for Subtitles' data-inverted="">
<i class="help circle large icon"></i>
</div>
</div>
@ -48,7 +48,7 @@
<div class="middle aligned row">
<div class="right aligned four wide column">
<label>Use embedded subtitles</label>
<label>Use Embedded Subtitles</label>
</div>
<div class="one wide column">
<div id="settings_embedded" class="ui toggle checkbox"
@ -60,7 +60,7 @@
<div class="collapsed column">
<div class="collapsed center aligned column">
<div class="ui basic icon"
data-tooltip="Use embedded subtitles in media files when determining missing ones."
data-tooltip="Use Embedded Subtitles in media files when determining missing ones."
data-inverted="">
<i class="help circle large icon"></i>
</div>
@ -78,7 +78,7 @@
<div class="ui grid">
<div class="middle aligned row">
<div class="right aligned four wide column">
<label>Single language</label>
<label>Single Language</label>
</div>
<div class="one wide column">
<div id="settings_single_language" class="ui toggle checkbox" data-single-language={{settings.general.getboolean('single_language')}}>
@ -88,7 +88,7 @@
</div>
<div class="collapsed column">
<div class="collapsed center aligned column">
<div class="ui basic icon" data-tooltip="Download a single subtitles file and don't add the language code to the filename." data-inverted="">
<div class="ui basic icon" data-tooltip="Download a single subtitle file without adding the language code to the filename." data-inverted="">
<i class="help circle large icon"></i>
</div>
</div>
@ -97,7 +97,7 @@
<div class="middle aligned row">
<div class="right aligned four wide column">
<label>Enabled languages</label>
<label>Enabled Languages</label>
</div>
<div class="eleven wide column">
<div class='field'>
@ -122,7 +122,7 @@
<div class="ui grid">
<div class="middle aligned row">
<div class="right aligned four wide column">
<label>Default enabled</label>
<label>Default Enabled</label>
</div>
<div class="one wide column">
<div class="nine wide column">
@ -134,7 +134,7 @@
</div>
<div class="collapsed column">
<div class="collapsed center aligned column">
<div class="ui basic icon" data-tooltip="Apply only to series added to Bazarr after enabling this option." data-inverted="">
<div class="ui basic icon" data-tooltip="Apply only to Series added to Bazarr after enabling this option." data-inverted="">
<i class="help circle large icon"></i>
</div>
</div>
@ -160,7 +160,7 @@
<div class="middle aligned row">
<div class="right aligned four wide column">
<label>Hearing-impaired</label>
<label>Hearing-Impaired</label>
</div>
<div class="eleven wide column">
<div class="nine wide column">
@ -189,12 +189,12 @@
</div>
</div>
<div class="ui dividing header">Movies default settings</div>
<div class="ui dividing header">Movie Default Settings</div>
<div class="twelve wide column">
<div class="ui grid">
<div class="middle aligned row">
<div class="right aligned four wide column">
<label>Default enabled</label>
<label>Default Enabled</label>
</div>
<div class="one wide column">
<div class="nine wide column">
@ -206,7 +206,7 @@
</div>
<div class="collapsed column">
<div class="collapsed center aligned column">
<div class="ui basic icon" data-tooltip="Apply only to movies added to Bazarr after enabling this option." data-inverted="">
<div class="ui basic icon" data-tooltip="Apply only to Movies added to Bazarr after enabling this option." data-inverted="">
<i class="help circle large icon"></i>
</div>
</div>
@ -232,7 +232,7 @@
<div class="middle aligned row">
<div id="movie_default_hi_label" class="right aligned four wide column">
<label>Hearing-impaired</label>
<label>Hearing-Impaired</label>
</div>
<div class="eleven wide column">
<div class="nine wide column">
@ -425,4 +425,4 @@
$('.subfolder').show();
}
});
</script>
</script>

Loading…
Cancel
Save