mirror of
https://github.com/morpheus65535/bazarr.git
synced 2024-09-21 07:55:59 +08:00
Add feature #154 and chmod option is now available only for linux
This commit is contained in:
parent
b6623c61d4
commit
181e71fe65
|
@ -35,7 +35,9 @@ defaults = {
|
||||||
'enabled_providers': '',
|
'enabled_providers': '',
|
||||||
'throtteled_providers': '',
|
'throtteled_providers': '',
|
||||||
'multithreading': 'True',
|
'multithreading': 'True',
|
||||||
'chmod': '0640'
|
'chmod': '0640',
|
||||||
|
'subfolder': 'current',
|
||||||
|
'subfolder_custom': ''
|
||||||
},
|
},
|
||||||
'auth': {
|
'auth': {
|
||||||
'type': 'None',
|
'type': 'None',
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
# coding=utf-8
|
# coding=utf-8
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
import sys
|
||||||
import sqlite3
|
import sqlite3
|
||||||
import ast
|
import ast
|
||||||
import logging
|
import logging
|
||||||
|
@ -24,7 +25,7 @@ from get_languages import language_from_alpha3, alpha2_from_alpha3, alpha3_from_
|
||||||
from bs4 import UnicodeDammit
|
from bs4 import UnicodeDammit
|
||||||
from config import settings
|
from config import settings
|
||||||
from helper import path_replace, path_replace_movie, path_replace_reverse, \
|
from helper import path_replace, path_replace_movie, path_replace_reverse, \
|
||||||
path_replace_reverse_movie, pp_replace
|
path_replace_reverse_movie, pp_replace, get_target_folder, force_unicode
|
||||||
from list_subtitles import store_subtitles, list_missing_subtitles, store_subtitles_movie, list_missing_subtitles_movies
|
from list_subtitles import store_subtitles, list_missing_subtitles, store_subtitles_movie, list_missing_subtitles_movies
|
||||||
from utils import history_log, history_log_movie
|
from utils import history_log, history_log_movie
|
||||||
from notifier import send_notifications, send_notifications_movie
|
from notifier import send_notifications, send_notifications_movie
|
||||||
|
@ -99,25 +100,6 @@ def get_scores(video, media_type, min_score_movie_perc=60 * 100 / 120.0, min_sco
|
||||||
return min_score, max_score, set(scores)
|
return min_score, max_score, set(scores)
|
||||||
|
|
||||||
|
|
||||||
def force_unicode(s):
|
|
||||||
"""
|
|
||||||
Ensure a string is unicode, not encoded; used for enforcing file paths to be unicode upon saving a subtitle,
|
|
||||||
to prevent encoding issues when saving a subtitle to a non-ascii path.
|
|
||||||
:param s: string
|
|
||||||
:return: unicode string
|
|
||||||
"""
|
|
||||||
if not isinstance(s, types.UnicodeType):
|
|
||||||
try:
|
|
||||||
s = s.decode("utf-8")
|
|
||||||
except UnicodeDecodeError:
|
|
||||||
t = chardet.detect(s)
|
|
||||||
try:
|
|
||||||
s = s.decode(t["encoding"])
|
|
||||||
except UnicodeDecodeError:
|
|
||||||
s = UnicodeDammit(s).unicode_markup
|
|
||||||
return s
|
|
||||||
|
|
||||||
|
|
||||||
def download_subtitle(path, language, hi, providers, providers_auth, sceneName, title, media_type):
|
def download_subtitle(path, language, hi, providers, providers_auth, sceneName, title, media_type):
|
||||||
# fixme: supply all missing languages, not only one, to hit providers only once who support multiple languages in
|
# fixme: supply all missing languages, not only one, to hit providers only once who support multiple languages in
|
||||||
# one query
|
# one query
|
||||||
|
@ -183,10 +165,12 @@ def download_subtitle(path, language, hi, providers, providers_auth, sceneName,
|
||||||
continue
|
continue
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
fld = get_target_folder(path)
|
||||||
|
chmod = int(settings.general.chmod) if sys.platform.startswith('linux') else None
|
||||||
saved_subtitles = save_subtitles(video.original_path, subtitles, single=single,
|
saved_subtitles = save_subtitles(video.original_path, subtitles, single=single,
|
||||||
tags=None, # fixme
|
tags=None, # fixme
|
||||||
directory=None, # fixme
|
directory=fld,
|
||||||
chmod=int(settings.general.chmod), # fixme
|
chmod=chmod,
|
||||||
# formats=("srt", "vtt")
|
# formats=("srt", "vtt")
|
||||||
path_decoder=force_unicode
|
path_decoder=force_unicode
|
||||||
)
|
)
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
import ast
|
import ast
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
|
import types
|
||||||
|
|
||||||
from config import settings
|
from config import settings
|
||||||
|
|
||||||
|
@ -63,3 +64,50 @@ def pp_replace(pp_command, episode, subtitles, language, language_code2, languag
|
||||||
pp_command = pp_command.replace('{{subtitles_language_code2}}', language_code2)
|
pp_command = pp_command.replace('{{subtitles_language_code2}}', language_code2)
|
||||||
pp_command = pp_command.replace('{{subtitles_language_code3}}', language_code3)
|
pp_command = pp_command.replace('{{subtitles_language_code3}}', language_code3)
|
||||||
return pp_command
|
return pp_command
|
||||||
|
|
||||||
|
|
||||||
|
def get_subtitle_destination_folder():
|
||||||
|
fld_custom = str(settings.general.subfolder_custom).strip() if settings.general.subfolder_custom else None
|
||||||
|
return fld_custom or (
|
||||||
|
settings.general.subfolder if settings.general.subfolder != "current" else None)
|
||||||
|
|
||||||
|
|
||||||
|
def get_target_folder(file_path):
|
||||||
|
fld = None
|
||||||
|
fld_custom = str(settings.general.subfolder_custom).strip() \
|
||||||
|
if settings.general.subfolder_custom else None
|
||||||
|
|
||||||
|
if fld_custom or settings.general.subfolder != "current":
|
||||||
|
# specific subFolder requested, create it if it doesn't exist
|
||||||
|
fld_base = os.path.split(file_path)[0]
|
||||||
|
if fld_custom:
|
||||||
|
if fld_custom.startswith("/"):
|
||||||
|
# absolute folder
|
||||||
|
fld = fld_custom
|
||||||
|
else:
|
||||||
|
fld = os.path.join(fld_base, fld_custom)
|
||||||
|
else:
|
||||||
|
fld = os.path.join(fld_base, settings.general.subfolder)
|
||||||
|
fld = force_unicode(fld)
|
||||||
|
if not os.path.exists(fld):
|
||||||
|
os.makedirs(fld)
|
||||||
|
return fld
|
||||||
|
|
||||||
|
|
||||||
|
def force_unicode(s):
|
||||||
|
"""
|
||||||
|
Ensure a string is unicode, not encoded; used for enforcing file paths to be unicode upon saving a subtitle,
|
||||||
|
to prevent encoding issues when saving a subtitle to a non-ascii path.
|
||||||
|
:param s: string
|
||||||
|
:return: unicode string
|
||||||
|
"""
|
||||||
|
if not isinstance(s, types.UnicodeType):
|
||||||
|
try:
|
||||||
|
s = s.decode("utf-8")
|
||||||
|
except UnicodeDecodeError:
|
||||||
|
t = chardet.detect(s)
|
||||||
|
try:
|
||||||
|
s = s.decode(t["encoding"])
|
||||||
|
except UnicodeDecodeError:
|
||||||
|
s = UnicodeDammit(s).unicode_markup
|
||||||
|
return s
|
||||||
|
|
|
@ -19,7 +19,7 @@ from get_args import args
|
||||||
from get_languages import alpha2_from_alpha3
|
from get_languages import alpha2_from_alpha3
|
||||||
from config import settings
|
from config import settings
|
||||||
from helper import path_replace, path_replace_movie, path_replace_reverse, \
|
from helper import path_replace, path_replace_movie, path_replace_reverse, \
|
||||||
path_replace_reverse_movie
|
path_replace_reverse_movie, get_subtitle_destination_folder
|
||||||
|
|
||||||
from queueconfig import q4ws
|
from queueconfig import q4ws
|
||||||
|
|
||||||
|
@ -54,8 +54,8 @@ def store_subtitles(file):
|
||||||
|
|
||||||
brazilian_portuguese = [".pt-br", ".pob", "pb"]
|
brazilian_portuguese = [".pt-br", ".pob", "pb"]
|
||||||
try:
|
try:
|
||||||
# fixme: set subliminal_patch.core.CUSTOM_PATHS to a list of absolute folders or subfolders to support
|
dest_folder = get_subtitle_destination_folder()
|
||||||
# subtitles outside the media file folder
|
subliminal_patch.core.CUSTOM_PATHS = [dest_folder] if dest_folder else []
|
||||||
subtitles = search_external_subtitles(file)
|
subtitles = search_external_subtitles(file)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logging.exception("BAZARR unable to index external subtitles.")
|
logging.exception("BAZARR unable to index external subtitles.")
|
||||||
|
@ -134,9 +134,9 @@ def store_subtitles_movie(file):
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
logging.debug("BAZARR This file isn't an .mkv file.")
|
logging.debug("BAZARR This file isn't an .mkv file.")
|
||||||
|
|
||||||
# fixme: set subliminal_patch.core.CUSTOM_PATHS to a list of absolute folders or subfolders to support
|
dest_folder = get_subtitle_destination_folder()
|
||||||
# subtitles outside the media file folder
|
subliminal_patch.core.CUSTOM_PATHS = [dest_folder] if dest_folder else []
|
||||||
subtitles = search_external_subtitles(file)
|
subtitles = search_external_subtitles(file)
|
||||||
brazilian_portuguese = [".pt-br", ".pob", "pb"]
|
brazilian_portuguese = [".pt-br", ".pob", "pb"]
|
||||||
try:
|
try:
|
||||||
|
|
|
@ -46,7 +46,7 @@ from utils import history_log, history_log_movie
|
||||||
from scheduler import *
|
from scheduler import *
|
||||||
from notifier import send_notifications, send_notifications_movie
|
from notifier import send_notifications, send_notifications_movie
|
||||||
from config import settings, url_sonarr, url_radarr, url_radarr_short, url_sonarr_short, base_url
|
from config import settings, url_sonarr, url_radarr, url_radarr_short, url_sonarr_short, base_url
|
||||||
from helper import path_replace_movie
|
from helper import path_replace_movie, get_subtitle_destination_folder
|
||||||
from subliminal_patch.extensions import provider_registry as provider_manager
|
from subliminal_patch.extensions import provider_registry as provider_manager
|
||||||
|
|
||||||
reload(sys)
|
reload(sys)
|
||||||
|
@ -268,6 +268,13 @@ def save_wizard():
|
||||||
settings_general_use_radarr = 'False'
|
settings_general_use_radarr = 'False'
|
||||||
else:
|
else:
|
||||||
settings_general_use_radarr = 'True'
|
settings_general_use_radarr = 'True'
|
||||||
|
settings_general_embedded = request.forms.get('settings_general_embedded')
|
||||||
|
if settings_general_embedded is None:
|
||||||
|
settings_general_embedded = 'False'
|
||||||
|
else:
|
||||||
|
settings_general_embedded = 'True'
|
||||||
|
settings_subfolder = request.forms.get('settings_subfolder')
|
||||||
|
settings_subfolder_custom = request.forms.get('settings_subfolder_custom')
|
||||||
|
|
||||||
settings.general.ip = text_type(settings_general_ip)
|
settings.general.ip = text_type(settings_general_ip)
|
||||||
settings.general.port = text_type(settings_general_port)
|
settings.general.port = text_type(settings_general_port)
|
||||||
|
@ -277,6 +284,9 @@ def save_wizard():
|
||||||
settings.general.use_sonarr = text_type(settings_general_use_sonarr)
|
settings.general.use_sonarr = text_type(settings_general_use_sonarr)
|
||||||
settings.general.use_radarr = text_type(settings_general_use_radarr)
|
settings.general.use_radarr = text_type(settings_general_use_radarr)
|
||||||
settings.general.path_mappings_movie = text_type(settings_general_pathmapping_movie)
|
settings.general.path_mappings_movie = text_type(settings_general_pathmapping_movie)
|
||||||
|
settings.general.subfolder = text_type(settings_subfolder)
|
||||||
|
settings.general.subfolder_custom = text_type(settings_subfolder_custom)
|
||||||
|
settings.general.use_embedded_subs = text_type(settings_general_embedded)
|
||||||
|
|
||||||
settings_sonarr_ip = request.forms.get('settings_sonarr_ip')
|
settings_sonarr_ip = request.forms.get('settings_sonarr_ip')
|
||||||
settings_sonarr_port = request.forms.get('settings_sonarr_port')
|
settings_sonarr_port = request.forms.get('settings_sonarr_port')
|
||||||
|
@ -1163,6 +1173,8 @@ def save_settings():
|
||||||
else:
|
else:
|
||||||
settings_general_use_radarr = 'True'
|
settings_general_use_radarr = 'True'
|
||||||
settings_page_size = request.forms.get('settings_page_size')
|
settings_page_size = request.forms.get('settings_page_size')
|
||||||
|
settings_subfolder = request.forms.get('settings_subfolder')
|
||||||
|
settings_subfolder_custom = request.forms.get('settings_subfolder_custom')
|
||||||
|
|
||||||
before = (unicode(settings.general.ip), int(settings.general.port), unicode(settings.general.base_url),
|
before = (unicode(settings.general.ip), int(settings.general.port), unicode(settings.general.base_url),
|
||||||
unicode(settings.general.path_mappings), unicode(settings.general.getboolean('use_sonarr')),
|
unicode(settings.general.path_mappings), unicode(settings.general.getboolean('use_sonarr')),
|
||||||
|
@ -1188,6 +1200,8 @@ def save_settings():
|
||||||
settings.general.use_radarr = text_type(settings_general_use_radarr)
|
settings.general.use_radarr = text_type(settings_general_use_radarr)
|
||||||
settings.general.path_mappings_movie = text_type(settings_general_pathmapping_movie)
|
settings.general.path_mappings_movie = text_type(settings_general_pathmapping_movie)
|
||||||
settings.general.page_size = text_type(settings_page_size)
|
settings.general.page_size = text_type(settings_page_size)
|
||||||
|
settings.general.subfolder = text_type(settings_subfolder)
|
||||||
|
settings.general.subfolder_custom = text_type(settings_subfolder_custom)
|
||||||
settings.general.minimum_score_movie = text_type(settings_general_minimum_score_movies)
|
settings.general.minimum_score_movie = text_type(settings_general_minimum_score_movies)
|
||||||
settings.general.use_embedded_subs = text_type(settings_general_embedded)
|
settings.general.use_embedded_subs = text_type(settings_general_embedded)
|
||||||
settings.general.adaptive_searching = text_type(settings_general_adaptive_searching)
|
settings.general.adaptive_searching = text_type(settings_general_adaptive_searching)
|
||||||
|
@ -1601,12 +1615,13 @@ def remove_subtitles():
|
||||||
language = request.forms.get('language')
|
language = request.forms.get('language')
|
||||||
subtitlesPath = request.forms.get('subtitlesPath')
|
subtitlesPath = request.forms.get('subtitlesPath')
|
||||||
sonarrSeriesId = request.forms.get('sonarrSeriesId')
|
sonarrSeriesId = request.forms.get('sonarrSeriesId')
|
||||||
sonarrEpisodeId = request.forms.get('sonarrEpisodeId')
|
subfolder = ('\\' + get_subtitle_destination_folder() + '\\') if get_subtitle_destination_folder() else '\\'
|
||||||
|
subtitlesPath = os.path.split(subtitlesPath)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
os.remove(subtitlesPath)
|
os.remove(subtitlesPath[0] + subfolder + subtitlesPath[1])
|
||||||
result = language_from_alpha3(language) + " subtitles deleted from disk."
|
result = language_from_alpha3(language) + " subtitles deleted from disk."
|
||||||
history_log(0, sonarrSeriesId, sonarrEpisodeId, result)
|
history_log_movie(0, radarrId, result)
|
||||||
except OSError:
|
except OSError:
|
||||||
pass
|
pass
|
||||||
store_subtitles(unicode(episodePath))
|
store_subtitles(unicode(episodePath))
|
||||||
|
@ -1621,9 +1636,11 @@ def remove_subtitles_movie():
|
||||||
language = request.forms.get('language')
|
language = request.forms.get('language')
|
||||||
subtitlesPath = request.forms.get('subtitlesPath')
|
subtitlesPath = request.forms.get('subtitlesPath')
|
||||||
radarrId = request.forms.get('radarrId')
|
radarrId = request.forms.get('radarrId')
|
||||||
|
subfolder = ('\\' + get_subtitle_destination_folder() + '\\') if get_subtitle_destination_folder() else '\\'
|
||||||
|
subtitlesPath = os.path.split(subtitlesPath)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
os.remove(subtitlesPath)
|
os.remove(subtitlesPath[0] + subfolder + subtitlesPath[1])
|
||||||
result = language_from_alpha3(language) + " subtitles deleted from disk."
|
result = language_from_alpha3(language) + " subtitles deleted from disk."
|
||||||
history_log_movie(0, radarrId, result)
|
history_log_movie(0, radarrId, result)
|
||||||
except OSError:
|
except OSError:
|
||||||
|
|
|
@ -152,7 +152,8 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
% import sys
|
||||||
|
% if sys.platform.startswith('linux'):
|
||||||
<div class="middle aligned row">
|
<div class="middle aligned row">
|
||||||
<div class="right aligned four wide column">
|
<div class="right aligned four wide column">
|
||||||
<label>Set subtitle file permissions to</label>
|
<label>Set subtitle file permissions to</label>
|
||||||
|
@ -172,6 +173,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
%end
|
||||||
|
|
||||||
<div class="middle aligned row">
|
<div class="middle aligned row">
|
||||||
<div class="right aligned four wide column">
|
<div class="right aligned four wide column">
|
||||||
|
@ -1059,6 +1061,52 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="middle aligned row">
|
||||||
|
<div class="right aligned four wide column">
|
||||||
|
<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">Current</option>
|
||||||
|
<option value="sub">sub</option>
|
||||||
|
<option value="subs">subs</option>
|
||||||
|
<option value="subtitle">subtitle</option>
|
||||||
|
<option value="subtitles">subtitles</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="collapsed center aligned column">
|
||||||
|
<div class="ui basic icon"
|
||||||
|
data-tooltip='"current" is the folder the current media file lives in'
|
||||||
|
data-inverted="">
|
||||||
|
<i class="help circle large icon"></i>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="middle aligned row">
|
||||||
|
<div class="right aligned four wide column">
|
||||||
|
<label>Custom Subtitle folder</label>
|
||||||
|
</div>
|
||||||
|
<div class="five wide column">
|
||||||
|
<div class='field'>
|
||||||
|
<div class="ui fluid input">
|
||||||
|
<input id="settings_subfolder_custom" name="settings_subfolder_custom"
|
||||||
|
type="text" value="{{ settings.general.subfolder_custom }}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="collapsed center aligned column">
|
||||||
|
<div class="ui basic icon"
|
||||||
|
data-tooltip='overrides "Subtitle Folder"; computes to real paths'
|
||||||
|
data-inverted="">
|
||||||
|
<i class="help circle large icon"></i>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="middle aligned row">
|
<div class="middle aligned row">
|
||||||
<div class="right aligned four wide column">
|
<div class="right aligned four wide column">
|
||||||
<label>Use embedded subtitles</label>
|
<label>Use embedded subtitles</label>
|
||||||
|
@ -2049,6 +2097,8 @@
|
||||||
$('#settings_loglevel').dropdown('set selected','{{!settings.general.getboolean('debug')}}');
|
$('#settings_loglevel').dropdown('set selected','{{!settings.general.getboolean('debug')}}');
|
||||||
$('#settings_page_size').dropdown('clear');
|
$('#settings_page_size').dropdown('clear');
|
||||||
$('#settings_page_size').dropdown('set selected','{{!settings.general.page_size}}');
|
$('#settings_page_size').dropdown('set selected','{{!settings.general.page_size}}');
|
||||||
|
$('#settings_subfolder').dropdown('clear');
|
||||||
|
$('#settings_subfolder').dropdown('set selected', '{{!settings.general.subfolder}}');
|
||||||
$('#settings_proxy_type').dropdown('clear');
|
$('#settings_proxy_type').dropdown('clear');
|
||||||
$('#settings_proxy_type').dropdown('set selected','{{!settings.proxy.type}}');
|
$('#settings_proxy_type').dropdown('set selected','{{!settings.proxy.type}}');
|
||||||
$('#settings_providers').dropdown('clear');
|
$('#settings_providers').dropdown('clear');
|
||||||
|
@ -2103,6 +2153,8 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
% if sys.platform.startswith('linux')
|
||||||
|
:
|
||||||
settings_general_chmod: {
|
settings_general_chmod: {
|
||||||
rules: [
|
rules: [
|
||||||
{
|
{
|
||||||
|
@ -2111,6 +2163,8 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
%
|
||||||
|
end
|
||||||
settings_auth_password : {
|
settings_auth_password : {
|
||||||
depends: 'settings_auth_username',
|
depends: 'settings_auth_username',
|
||||||
rules : [
|
rules : [
|
||||||
|
|
|
@ -335,6 +335,82 @@
|
||||||
Prev
|
Prev
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="ui dividing header">Subtitles options</div>
|
||||||
|
<div class="twelve wide column">
|
||||||
|
<div class="ui grid">
|
||||||
|
|
||||||
|
<div class="middle aligned row">
|
||||||
|
<div class="right aligned four wide column">
|
||||||
|
<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">Current</option>
|
||||||
|
<option value="sub">sub</option>
|
||||||
|
<option value="subs">subs</option>
|
||||||
|
<option value="subtitle">subtitle</option>
|
||||||
|
<option value="subtitles">subtitles</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="collapsed center aligned column">
|
||||||
|
<div class="ui basic icon"
|
||||||
|
data-tooltip='"current" is the folder the current media file lives in'
|
||||||
|
data-inverted="">
|
||||||
|
<i class="help circle large icon"></i>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="middle aligned row">
|
||||||
|
<div class="right aligned four wide column">
|
||||||
|
<label>Custom Subtitle folder</label>
|
||||||
|
</div>
|
||||||
|
<div class="five wide column">
|
||||||
|
<div class='field'>
|
||||||
|
<div class="ui fluid input">
|
||||||
|
<input id="settings_subfolder_custom" name="settings_subfolder_custom"
|
||||||
|
type="text" value="{{ settings.general.subfolder_custom }}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="collapsed center aligned column">
|
||||||
|
<div class="ui basic icon"
|
||||||
|
data-tooltip='overrides "Subtitle Folder"; computes to real paths'
|
||||||
|
data-inverted="">
|
||||||
|
<i class="help circle large icon"></i>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="middle aligned row">
|
||||||
|
<div class="right aligned four wide column">
|
||||||
|
<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') }}>
|
||||||
|
<input name="settings_general_embedded" type="checkbox">
|
||||||
|
<label></label>
|
||||||
|
</div>
|
||||||
|
</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="">
|
||||||
|
<i class="help circle large icon"></i>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="ui dividing header">Subtitles providers</div>
|
<div class="ui dividing header">Subtitles providers</div>
|
||||||
<div class="twelve wide column">
|
<div class="twelve wide column">
|
||||||
<div class="ui grid">
|
<div class="ui grid">
|
||||||
|
@ -1288,6 +1364,11 @@ $(function() {
|
||||||
} else {
|
} else {
|
||||||
$("#radarr_ssl_div").checkbox('uncheck');
|
$("#radarr_ssl_div").checkbox('uncheck');
|
||||||
}
|
}
|
||||||
|
if ($('#settings_embedded').data("embedded") === "True") {
|
||||||
|
$("#settings_embedded").checkbox('check');
|
||||||
|
} else {
|
||||||
|
$("#settings_embedded").checkbox('uncheck');
|
||||||
|
}
|
||||||
|
|
||||||
if ($('#settings_addic7ed_random_agents').data("randomagents") === "True") {
|
if ($('#settings_addic7ed_random_agents').data("randomagents") === "True") {
|
||||||
$("#settings_addic7ed_random_agents").checkbox('check');
|
$("#settings_addic7ed_random_agents").checkbox('check');
|
||||||
|
@ -1448,6 +1529,8 @@ $(function() {
|
||||||
$('#settings_providers').dropdown('set selected',{{!enabled_providers}});
|
$('#settings_providers').dropdown('set selected',{{!enabled_providers}});
|
||||||
$('#settings_languages').dropdown('clear');
|
$('#settings_languages').dropdown('clear');
|
||||||
$('#settings_languages').dropdown('set selected',{{!enabled_languages}});
|
$('#settings_languages').dropdown('set selected',{{!enabled_languages}});
|
||||||
|
$('#settings_subfolder').dropdown('clear');
|
||||||
|
$('#settings_subfolder').dropdown('set selected', '{{!settings.general.subfolder}}');
|
||||||
|
|
||||||
$('#settings_providers').dropdown();
|
$('#settings_providers').dropdown();
|
||||||
$('#settings_languages').dropdown();
|
$('#settings_languages').dropdown();
|
||||||
|
|
Loading…
Reference in a new issue