mirror of
https://github.com/denizsafak/abogen.git
synced 2026-07-18 13:40:27 +02:00
refactored setting selected_lang, actual_subtitle_mode, voice_formula in non-queued conversion - #30
This commit is contained in:
+20
-36
@@ -1284,18 +1284,18 @@ class abogen(QWidget):
|
|||||||
if not self.selected_file:
|
if not self.selected_file:
|
||||||
self.input_box.set_error("Please add a file.")
|
self.input_box.set_error("Please add a file.")
|
||||||
return
|
return
|
||||||
selected_lang = self.get_selected_lang()
|
|
||||||
voice_formula = self.get_voice_formula()
|
|
||||||
actual_subtitle_mode = self.get_actual_subtitle_mode()
|
actual_subtitle_mode = self.get_actual_subtitle_mode()
|
||||||
|
voice_formula = self.get_voice_formula()
|
||||||
|
selected_lang = self.get_selected_lang(voice_formula)
|
||||||
|
|
||||||
item = QueuedItem(
|
item = QueuedItem(
|
||||||
file_name=self.selected_file,
|
file_name=self.selected_file,
|
||||||
lang_code=selected_lang, # TODO copy from start_conversion
|
lang_code=selected_lang,
|
||||||
speed=self.speed_slider.value() / 100.0,
|
speed=self.speed_slider.value() / 100.0,
|
||||||
voice=voice_formula, # TODO copy from start_conversion
|
voice=voice_formula,
|
||||||
save_option=self.save_option,
|
save_option=self.save_option,
|
||||||
output_folder=self.selected_output_folder,
|
output_folder=self.selected_output_folder,
|
||||||
subtitle_mode=actual_subtitle_mode, # TODO copy from start_conversion
|
subtitle_mode=actual_subtitle_mode,
|
||||||
output_format=self.selected_format,
|
output_format=self.selected_format,
|
||||||
total_char_count=self.char_count,
|
total_char_count=self.char_count,
|
||||||
use_gpu=self.gpu_ok
|
use_gpu=self.gpu_ok
|
||||||
@@ -1304,8 +1304,6 @@ class abogen(QWidget):
|
|||||||
# Clear input after adding to queue
|
# Clear input after adding to queue
|
||||||
self.input_box.clear_input()
|
self.input_box.clear_input()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def manage_queue(self):
|
def manage_queue(self):
|
||||||
if not self.queued_items:
|
if not self.queued_items:
|
||||||
self.input_box.set_error("Queue is empty.")
|
self.input_box.set_error("Queue is empty.")
|
||||||
@@ -1359,13 +1357,17 @@ class abogen(QWidget):
|
|||||||
else:
|
else:
|
||||||
return self.selected_voice
|
return self.selected_voice
|
||||||
|
|
||||||
def get_selected_lang(self):
|
def get_selected_lang(self, voice_formula):
|
||||||
if self.selected_profile_name:
|
if self.selected_profile_name:
|
||||||
from voice_profiles import load_profiles
|
from voice_profiles import load_profiles
|
||||||
entry = load_profiles().get(self.selected_profile_name, {})
|
entry = load_profiles().get(self.selected_profile_name, {})
|
||||||
return entry.get("language")
|
selected_lang = entry.get("language")
|
||||||
else:
|
else:
|
||||||
return self.selected_voice[0] if self.selected_voice else None
|
selected_lang = self.selected_voice[0] if self.selected_voice else None
|
||||||
|
# fallback: extract from formula if missing
|
||||||
|
if not selected_lang:
|
||||||
|
m = re.search(r"\b([a-z])", voice_formula)
|
||||||
|
selected_lang = m.group(1) if m else None
|
||||||
|
|
||||||
def get_actual_subtitle_mode(self):
|
def get_actual_subtitle_mode(self):
|
||||||
return (
|
return (
|
||||||
@@ -1416,32 +1418,12 @@ class abogen(QWidget):
|
|||||||
self.btn_cancel.setEnabled(True)
|
self.btn_cancel.setEnabled(True)
|
||||||
|
|
||||||
# Override subtitle_mode to "Disabled" if subtitle_combo is disabled
|
# Override subtitle_mode to "Disabled" if subtitle_combo is disabled
|
||||||
actual_subtitle_mode = (
|
actual_subtitle_mode = self.get_actual_subtitle_mode()
|
||||||
"Disabled"
|
|
||||||
if not self.subtitle_combo.isEnabled()
|
|
||||||
else self.subtitle_mode
|
|
||||||
)
|
|
||||||
|
|
||||||
# if voice formula is not None, use the selected voice
|
# if voice formula is not None, use the selected voice
|
||||||
if self.mixed_voice_state:
|
voice_formula = self.get_voice_formula()
|
||||||
formula_components = [
|
|
||||||
f"{name}*{weight}" for name, weight in self.mixed_voice_state
|
|
||||||
]
|
|
||||||
voice_formula = " + ".join(filter(None, formula_components))
|
|
||||||
else:
|
|
||||||
voice_formula = self.selected_voice
|
|
||||||
# determine selected language: use profile setting if profile selected, else voice code
|
# determine selected language: use profile setting if profile selected, else voice code
|
||||||
if self.selected_profile_name:
|
selected_lang = self.get_selected_lang(voice_formula)
|
||||||
from voice_profiles import load_profiles
|
|
||||||
|
|
||||||
entry = load_profiles().get(self.selected_profile_name, {})
|
|
||||||
selected_lang = entry.get("language")
|
|
||||||
else:
|
|
||||||
selected_lang = self.selected_voice[0] if self.selected_voice else None
|
|
||||||
# fallback: extract from formula if missing
|
|
||||||
if not selected_lang:
|
|
||||||
m = re.search(r"\b([a-z])", voice_formula)
|
|
||||||
selected_lang = m.group(1) if m else None
|
|
||||||
|
|
||||||
self.conversion_thread = ConversionThread(
|
self.conversion_thread = ConversionThread(
|
||||||
self.selected_file,
|
self.selected_file,
|
||||||
@@ -1490,9 +1472,10 @@ class abogen(QWidget):
|
|||||||
self.conversion_thread.conversion_finished.connect(
|
self.conversion_thread.conversion_finished.connect(
|
||||||
self.on_conversion_finished
|
self.on_conversion_finished
|
||||||
)
|
)
|
||||||
self.conversion_thread.conversion_finished.connect(
|
# TODO remove
|
||||||
self.queue_item_conversion_finished
|
# self.conversion_thread.conversion_finished.connect(
|
||||||
)
|
# self.queue_item_conversion_finished
|
||||||
|
# )
|
||||||
|
|
||||||
# Connect chapters_detected signal
|
# Connect chapters_detected signal
|
||||||
self.conversion_thread.chapters_detected.connect(
|
self.conversion_thread.chapters_detected.connect(
|
||||||
@@ -1569,6 +1552,7 @@ class abogen(QWidget):
|
|||||||
self.log_text.moveCursor(QTextCursor.End)
|
self.log_text.moveCursor(QTextCursor.End)
|
||||||
self.log_text.ensureCursorVisible()
|
self.log_text.ensureCursorVisible()
|
||||||
save_config(self.config)
|
save_config(self.config)
|
||||||
|
self.queue_item_conversion_finished()
|
||||||
|
|
||||||
def reset_ui(self):
|
def reset_ui(self):
|
||||||
try:
|
try:
|
||||||
|
|||||||
Reference in New Issue
Block a user