mirror of
https://github.com/morpheus65535/bazarr
synced 2025-02-21 21:47:15 +00:00
Added scenename and minimum score settings #48
This commit is contained in:
parent
a363560f36
commit
3a87391868
5 changed files with 93 additions and 15 deletions
10
bazarr.py
10
bazarr.py
|
@ -1,4 +1,4 @@
|
|||
bazarr_version = '0.3.6'
|
||||
bazarr_version = '0.3.7'
|
||||
|
||||
import os
|
||||
import sys
|
||||
|
@ -394,10 +394,16 @@ def save_settings():
|
|||
settings_general_single_language = 'False'
|
||||
else:
|
||||
settings_general_single_language = 'True'
|
||||
settings_general_scenename = request.forms.get('settings_general_scenename')
|
||||
if settings_general_scenename is None:
|
||||
settings_general_scenename = 'False'
|
||||
else:
|
||||
settings_general_scenename = 'True'
|
||||
settings_general_minimum_score = request.forms.get('settings_general_minimum_score')
|
||||
|
||||
before = c.execute("SELECT ip, port, base_url FROM table_settings_general").fetchone()
|
||||
after = (unicode(settings_general_ip), int(settings_general_port), unicode(settings_general_baseurl))
|
||||
c.execute("UPDATE table_settings_general SET ip = ?, port = ?, base_url = ?, path_mapping = ?, log_level = ?, branch=?, auto_update=?, single_language=?", (unicode(settings_general_ip), int(settings_general_port), unicode(settings_general_baseurl), unicode(settings_general_pathmapping), unicode(settings_general_loglevel), unicode(settings_general_branch), unicode(settings_general_automatic), unicode(settings_general_single_language)))
|
||||
c.execute("UPDATE table_settings_general SET ip = ?, port = ?, base_url = ?, path_mapping = ?, log_level = ?, branch=?, auto_update=?, single_language=?, minimum_score=?, use_scenename=?", (unicode(settings_general_ip), int(settings_general_port), unicode(settings_general_baseurl), unicode(settings_general_pathmapping), unicode(settings_general_loglevel), unicode(settings_general_branch), unicode(settings_general_automatic), unicode(settings_general_single_language), unicode(settings_general_minimum_score), unicode(settings_general_scenename) ))
|
||||
conn.commit()
|
||||
if after != before:
|
||||
configured()
|
||||
|
|
|
@ -27,8 +27,10 @@ def get_general_settings():
|
|||
branch = general_settings[5]
|
||||
automatic = general_settings[6]
|
||||
single_language = general_settings[9]
|
||||
minimum_score = general_settings[10]
|
||||
use_scenename = general_settings[11]
|
||||
|
||||
return [ip, port, base_url, path_mappings, log_level, branch, automatic, single_language]
|
||||
return [ip, port, base_url, path_mappings, log_level, branch, automatic, single_language, minimum_score, use_scenename]
|
||||
|
||||
def path_replace(path):
|
||||
for path_mapping in path_mappings:
|
||||
|
@ -60,4 +62,6 @@ path_mappings = result[3]
|
|||
log_level = result[4]
|
||||
branch = result[5]
|
||||
automatic = result[6]
|
||||
single_language = result[7]
|
||||
single_language = result[7]
|
||||
minimum_score = result[8]
|
||||
use_scenename = result[9]
|
||||
|
|
|
@ -14,31 +14,34 @@ from notifier import send_notifications
|
|||
region.configure('dogpile.cache.memory')
|
||||
|
||||
def download_subtitle(path, language, hi, providers, providers_auth, sceneName):
|
||||
minimum_score = int(get_general_settings()[8])
|
||||
use_scenename = get_general_settings()[9]
|
||||
try:
|
||||
if sceneName is None:
|
||||
if sceneName is None or use_scenename == "False":
|
||||
used_sceneName = False
|
||||
video = scan_video(path)
|
||||
else:
|
||||
used_sceneName = True
|
||||
video = Video.fromname(sceneName)
|
||||
except Exception as e:
|
||||
logging.exception('Error trying to extract information from this filename: ' + path)
|
||||
return None
|
||||
else:
|
||||
try:
|
||||
best_subtitles = download_best_subtitles([video], {Language(language)}, providers=providers, hearing_impaired=hi, provider_configs=providers_auth)
|
||||
|
||||
best_subtitles = download_best_subtitles([video], {Language(language)}, providers=providers, min_score=minimum_score, hearing_impaired=hi, provider_configs=providers_auth)
|
||||
except Exception as e:
|
||||
logging.exception('Error trying to best subtitles for this file: ' + path)
|
||||
logging.exception('Error trying to get the best subtitles for this file: ' + path)
|
||||
return None
|
||||
else:
|
||||
try:
|
||||
best_subtitle = best_subtitles[video][0]
|
||||
except:
|
||||
pass
|
||||
logging.debug('No subtitles found for ' + path)
|
||||
return None
|
||||
else:
|
||||
single = get_general_settings()[7]
|
||||
try:
|
||||
if sceneName is not None:
|
||||
if used_sceneName == True:
|
||||
video = scan_video(path)
|
||||
if single == 'True':
|
||||
result = save_subtitles(video, [best_subtitle], single=True, encoding='utf-8')
|
||||
|
@ -50,8 +53,8 @@ def download_subtitle(path, language, hi, providers, providers_auth, sceneName):
|
|||
else:
|
||||
downloaded_provider = str(result[0]).strip('<>').split(' ')[0][:-8]
|
||||
downloaded_language = pycountry.languages.lookup(str(str(result[0]).strip('<>').split(' ')[2].strip('[]'))).name
|
||||
if sceneName is not None:
|
||||
message = downloaded_language + " subtitles downloaded from " + downloaded_provider + " using scene name from Sonarr guessing."
|
||||
if used_sceneName == True:
|
||||
message = downloaded_language + " subtitles downloaded from " + downloaded_provider + " using this scene name obtained from Sonarr: " + sceneName
|
||||
else:
|
||||
message = downloaded_language + " subtitles downloaded from " + downloaded_provider + " using filename guessing."
|
||||
|
||||
|
|
14
update_db.py
14
update_db.py
|
@ -58,6 +58,20 @@ if os.path.exists(os.path.join(os.path.dirname(__file__), 'data/db/bazarr.db'))
|
|||
from scheduler import execute_now
|
||||
execute_now('update_all_episodes')
|
||||
|
||||
try:
|
||||
c.execute('alter table table_settings_general add column "minimum_score" "text"')
|
||||
except:
|
||||
pass
|
||||
else:
|
||||
c.execute('UPDATE table_settings_general SET minimum_score="0"')
|
||||
|
||||
try:
|
||||
c.execute('alter table table_settings_general add column "use_scenename" "text"')
|
||||
except:
|
||||
pass
|
||||
else:
|
||||
c.execute('UPDATE table_settings_general SET use_scenename="True"')
|
||||
|
||||
# Commit change to db
|
||||
db.commit()
|
||||
|
||||
|
|
|
@ -366,11 +366,57 @@
|
|||
</div>
|
||||
<div class="ui bottom attached tab segment" data-tab="subliminal">
|
||||
<div class="ui container"><button class="submit ui blue right floated button" type="submit" value="Submit" form="settings_form">Save</button></div>
|
||||
<div class="ui dividing header">Subtitles providers</div>
|
||||
<div class="twelve wide column">
|
||||
<br><br><br>
|
||||
<div class="ui container">
|
||||
<div class="ui info message">
|
||||
<p>Thanks to Diaoul for his work on <a href="https://github.com/Diaoul/subliminal" target="_blank">Subliminal</a> on which Bazarr is based.</p>
|
||||
</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>Use Sonarr scene naming</label>
|
||||
</div>
|
||||
<div class="one wide column">
|
||||
<div id="settings_scenename" class="ui toggle checkbox" data-scenename={{settings_general[11]}}>
|
||||
<input name="settings_general_scenename" type="checkbox">
|
||||
<label></label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="collapsed column">
|
||||
<div class="collapsed center aligned column">
|
||||
<div class="ui basic icon" data-tooltip="Use the scene name from Sonarr if available to circumvent usage of episode file renaming." data-inverted="">
|
||||
<i class="help circle large icon"></i>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="middle aligned row">
|
||||
<div class="right aligned four wide column">
|
||||
<label>Minimum score</label>
|
||||
</div>
|
||||
<div class="two wide column">
|
||||
<div class='field'>
|
||||
<div class="ui input">
|
||||
<input name="settings_general_minimum_score" type="number" min="0" max="100" step="5" onkeydown="return false" value="{{settings_general[10]}}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="collapsed column">
|
||||
<div class="collapsed center aligned column">
|
||||
<div class="ui basic icon" data-tooltip="Minimum score for a subtitle to be downloaded (0 to 100)." 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="twelve wide column">
|
||||
<div class="ui orange message">
|
||||
<p>Be aware that the more providers you enable, the longer it will take everytime you search for a subtitles.</p>
|
||||
</div>
|
||||
|
@ -396,7 +442,6 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="ui dividing header">Providers authentication (optionnal)</div>
|
||||
<div class="twelve wide column">
|
||||
<div class="ui grid">
|
||||
|
@ -596,6 +641,12 @@
|
|||
$("#settings_single_language").checkbox('uncheck');
|
||||
}
|
||||
|
||||
if ($('#settings_scenename').data("scenename") == "True") {
|
||||
$("#settings_scenename").checkbox('check');
|
||||
} else {
|
||||
$("#settings_scenename").checkbox('uncheck');
|
||||
}
|
||||
|
||||
$('.notifier_enabled').each(function(i, obj) {
|
||||
if ($(this).data("enabled") == 1) {
|
||||
$(this).checkbox('check');
|
||||
|
|
Loading…
Reference in a new issue