Skip to content

Commit

Permalink
add translation outputs field
Browse files Browse the repository at this point in the history
  • Loading branch information
zackees committed May 10, 2023
1 parent 0b201fe commit 006809d
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 6 deletions.
22 changes: 17 additions & 5 deletions src/video_subtitles/gui.py
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,7 @@ def __init__(self, on_drop_callback):
self.output_label = QLabel(self)
self.output_label.setText("Translation Outputs:")
self.output_text = QLineEdit(self)
self.output_text.setText(",".join(settings.languages()))
output_layout.addWidget(self.output_label)
output_layout.addWidget(self.output_text)
output_layout.setAlignment(QtCore.Qt.AlignmentFlag.AlignLeft)
Expand Down Expand Up @@ -125,6 +126,9 @@ def save_settings(self) -> None:
settings.set_deepl_key(deepl_api_key) # write api key to settings
model = self.model_select.currentText().strip()
settings.set_model(model)
languages = self.output_text.text().strip().split(",")
languages = [lang.strip() for lang in languages]
settings.set_languages(languages)
settings.save() # save settings to file

def dropEvent(self, event):
Expand All @@ -133,31 +137,39 @@ def dropEvent(self, event):
files = [u.toLocalFile() for u in event.mimeData().urls()]
deepl_api_key = self.deepl_input.text().strip() # get api key from input field
model = self.model_select.currentText().strip()
languages = self.output_text.text().strip().split(",")
languages = [lang.strip() for lang in languages]
for f in files:
self.on_drop_callback(f, deepl_api_key, model) # pass api key to callback
self.on_drop_callback(
f, deepl_api_key, languages, model
) # pass api key to callback


def run_gui() -> None:
"""Runs the gui."""
app = QApplication(sys.argv)

def callback(videofile: str, deepl_api_key: str | None, model: str):
def callback(
videofile: str, deepl_api_key: str | None, languages: list[str], model: str
):
# path, _ = os.path.splitext(videofile)
# os.makedirs(path, exist_ok=True)
# open_folder(path)
if not deepl_api_key:
deepl_api_key = None

# Open folder in the OS
def _generate_subtitles(videofile, deeply_api_key, model):
def _generate_subtitles(
videofile: str, deeply_api_key: str | None, languages: list[str], model: str
):
# perform the actual work here
os.chdir(os.path.dirname(videofile))
videofile = os.path.basename(videofile)
try:
out = run(
file=videofile,
deepl_api_key=deeply_api_key,
out_languages=["en", "zh", "it", "es", "fr"],
out_languages=languages,
model=model,
)
except Exception as e: # pylint: disable=broad-except
Expand All @@ -171,7 +183,7 @@ def _generate_subtitles(videofile, deeply_api_key, model):

Thread(
target=_generate_subtitles,
args=(videofile, deepl_api_key, model),
args=(videofile, deepl_api_key, languages, model),
daemon=True,
).start()

Expand Down
13 changes: 12 additions & 1 deletion src/video_subtitles/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ class Settings:
"""Settings class."""

def __init__(self) -> None:
self.data: dict[str, str | int | dict] = {}
self.data: dict[str, str | int | dict | list] = {}
self.load()

def deepl_key(self) -> str | None:
Expand All @@ -33,6 +33,17 @@ def set_model(self, model: str) -> None:
"""Set the model."""
self.data["model"] = model

def languages(self) -> list[str]:
"""Return the languages."""
out = self.data.get(
"languages", ["en", "es", "fr", "de", "it", "pt", "ru", "zh"]
)
return out # type: ignore

def set_languages(self, languages: list[str]) -> None:
"""Set the languages."""
self.data["languages"] = languages

def save(self) -> None:
"""Save the settings."""
# dump json to file
Expand Down

0 comments on commit 006809d

Please sign in to comment.