Skip to content

Commit

Permalink
fix: cli producing blank filenames
Browse files Browse the repository at this point in the history
  • Loading branch information
chidiwilliams committed Feb 24, 2024
1 parent 397dadd commit 5aa44b4
Show file tree
Hide file tree
Showing 12 changed files with 28 additions and 54 deletions.
5 changes: 3 additions & 2 deletions buzz/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@

from PyQt6.QtCore import QCommandLineParser, QCommandLineOption

from buzz.widgets.application import Application
from buzz.model_loader import ModelType, WhisperModelSize, TranscriptionModel
from buzz.store.keyring_store import KeyringStore
from buzz.transcriber.transcriber import (
Expand All @@ -15,6 +14,7 @@
LANGUAGES,
OutputFormat,
)
from buzz.widgets.application import Application


class CommandLineError(Exception):
Expand Down Expand Up @@ -185,7 +185,8 @@ def parse(app: Application, parser: QCommandLineParser):
openai_access_token=openai_access_token,
)
file_transcription_options = FileTranscriptionOptions(
file_paths=file_paths, output_formats=output_formats
file_paths=file_paths,
output_formats=output_formats,
)

for file_path in file_paths:
Expand Down
6 changes: 6 additions & 0 deletions buzz/settings/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,3 +62,9 @@ def end_group(self) -> None:

def sync(self):
self.settings.sync()

def get_default_export_file_template(self) -> str:
return self.value(
Settings.Key.DEFAULT_EXPORT_FILE_NAME,
"{{ input_file_name }} ({{ task }}d on {{ date_time }})",
)
12 changes: 8 additions & 4 deletions buzz/transcriber/transcriber.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@

from buzz.locale import _
from buzz.model_loader import TranscriptionModel
from buzz.settings.settings import Settings

DEFAULT_WHISPER_TEMPERATURE = (0.0, 0.2, 0.4, 0.6, 0.8, 1.0)

Expand Down Expand Up @@ -153,7 +154,6 @@ class FileTranscriptionOptions:
file_paths: Optional[List[str]] = None
url: Optional[str] = None
output_formats: Set["OutputFormat"] = field(default_factory=set)
default_output_file_name: str = ""


@dataclass_json
Expand Down Expand Up @@ -238,10 +238,14 @@ class Stopped(Exception):
def get_output_file_path(task: FileTranscriptionTask, output_format: OutputFormat):
input_file_name = os.path.splitext(os.path.basename(task.file_path))[0]
date_time_now = datetime.datetime.now().strftime("%d-%b-%Y %H-%M-%S")

export_file_name_template = Settings().value(
Settings.Key.DEFAULT_EXPORT_FILE_NAME,
"{{ input_file_name }} ({{ task }}d on {{ date_time }})",
)

output_file_name = (
task.file_transcription_options.default_output_file_name.replace(
"{{ input_file_name }}", input_file_name
)
export_file_name_template.replace("{{ input_file_name }}", input_file_name)
.replace("{{ task }}", task.transcription_options.task.value)
.replace("{{ language }}", task.transcription_options.language or "")
.replace("{{ model_type }}", task.transcription_options.model.model_type.value)
Expand Down
17 changes: 0 additions & 17 deletions buzz/widgets/main_window.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,10 +59,6 @@ def __init__(self, tasks_cache=TasksCache()):

self.shortcut_settings = ShortcutSettings(settings=self.settings)
self.shortcuts = self.shortcut_settings.load()
self.default_export_file_name = self.settings.value(
Settings.Key.DEFAULT_EXPORT_FILE_NAME,
"{{ input_file_name }} ({{ task }}d on {{ date_time }})",
)

self.tasks = {}

Expand All @@ -85,7 +81,6 @@ def __init__(self, tasks_cache=TasksCache()):
self.preferences = self.load_preferences(settings=self.settings)
self.menu_bar = MenuBar(
shortcuts=self.shortcuts,
default_export_file_name=self.default_export_file_name,
preferences=self.preferences,
parent=self,
)
Expand All @@ -99,9 +94,6 @@ def __init__(self, tasks_cache=TasksCache()):
self.menu_bar.openai_api_key_changed.connect(
self.on_openai_access_token_changed
)
self.menu_bar.default_export_file_name_changed.connect(
self.default_export_file_name_changed
)
self.menu_bar.preferences_changed.connect(self.on_preferences_changed)
self.setMenuBar(self.menu_bar)

Expand Down Expand Up @@ -132,7 +124,6 @@ def __init__(self, tasks_cache=TasksCache()):
self.folder_watcher = TranscriptionTaskFolderWatcher(
tasks=self.tasks,
preferences=self.preferences.folder_watch,
default_export_file_name=self.default_export_file_name,
)
self.folder_watcher.task_found.connect(self.add_task)
self.folder_watcher.find_tasks()
Expand Down Expand Up @@ -259,7 +250,6 @@ def open_file_transcriber_widget(
file_transcriber_window = FileTranscriberWidget(
file_paths=file_paths,
url=url,
default_output_file_name=self.default_export_file_name,
parent=self,
flags=Qt.WindowType.Window,
)
Expand All @@ -273,13 +263,6 @@ def open_file_transcriber_widget(
def on_openai_access_token_changed(access_token: str):
KeyringStore().set_password(KeyringStore.Key.OPENAI_API_KEY, access_token)

def default_export_file_name_changed(self, default_export_file_name: str):
self.default_export_file_name = default_export_file_name
self.settings.set_value(
Settings.Key.DEFAULT_EXPORT_FILE_NAME, default_export_file_name
)
self.folder_watcher.default_export_file_name = default_export_file_name

def open_transcript_viewer(self):
selected_rows = self.table_widget.selectionModel().selectedRows()
for selected_row in selected_rows:
Expand Down
7 changes: 0 additions & 7 deletions buzz/widgets/menu_bar.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,21 +20,18 @@ class MenuBar(QMenuBar):
import_url_action_triggered = pyqtSignal()
shortcuts_changed = pyqtSignal(dict)
openai_api_key_changed = pyqtSignal(str)
default_export_file_name_changed = pyqtSignal(str)
preferences_changed = pyqtSignal(Preferences)
preferences_dialog: Optional[PreferencesDialog] = None

def __init__(
self,
shortcuts: Dict[str, str],
default_export_file_name: str,
preferences: Preferences,
parent: Optional[QWidget] = None,
):
super().__init__(parent)

self.shortcuts = shortcuts
self.default_export_file_name = default_export_file_name
self.preferences = preferences

self.import_action = QAction(_("Import File..."), self)
Expand Down Expand Up @@ -70,15 +67,11 @@ def on_about_action_triggered(self):
def on_preferences_action_triggered(self):
preferences_dialog = PreferencesDialog(
shortcuts=self.shortcuts,
default_export_file_name=self.default_export_file_name,
preferences=self.preferences,
parent=self,
)
preferences_dialog.shortcuts_changed.connect(self.shortcuts_changed)
preferences_dialog.openai_api_key_changed.connect(self.openai_api_key_changed)
preferences_dialog.default_export_file_name_changed.connect(
self.default_export_file_name_changed
)
preferences_dialog.finished.connect(self.on_preferences_dialog_finished)
preferences_dialog.open()

Expand Down
12 changes: 9 additions & 3 deletions buzz/widgets/preferences_dialog/general_preferences_widget.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,17 @@
from PyQt6.QtWidgets import QWidget, QFormLayout, QPushButton, QMessageBox
from openai import AuthenticationError, OpenAI

from buzz.settings.settings import Settings
from buzz.store.keyring_store import KeyringStore
from buzz.widgets.line_edit import LineEdit
from buzz.widgets.openai_api_key_line_edit import OpenAIAPIKeyLineEdit


class GeneralPreferencesWidget(QWidget):
openai_api_key_changed = pyqtSignal(str)
default_export_file_name_changed = pyqtSignal(str)

def __init__(
self,
default_export_file_name: str,
keyring_store=KeyringStore(),
parent: Optional[QWidget] = None,
):
Expand All @@ -41,15 +40,22 @@ def __init__(
layout.addRow("OpenAI API key", self.openai_api_key_line_edit)
layout.addRow("", self.test_openai_api_key_button)

self.settings = Settings()

default_export_file_name = self.settings.get_default_export_file_template()

default_export_file_name_line_edit = LineEdit(default_export_file_name, self)
default_export_file_name_line_edit.textChanged.connect(
self.default_export_file_name_changed
self.on_default_export_file_name_changed
)
default_export_file_name_line_edit.setMinimumWidth(200)
layout.addRow("Default export file name", default_export_file_name_line_edit)

self.setLayout(layout)

def on_default_export_file_name_changed(self, text: str):
self.settings.set_value(Settings.Key.DEFAULT_EXPORT_FILE_NAME, text)

def update_test_openai_api_key_button(self):
self.test_openai_api_key_button.setEnabled(len(self.openai_api_key) > 0)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,6 @@ def to_transcription_options(
openai_access_token: Optional[str],
file_paths: Optional[List[str]] = None,
url: Optional[str] = None,
default_output_file_name: str = "",
) -> Tuple[TranscriptionOptions, FileTranscriptionOptions]:
return (
TranscriptionOptions(
Expand All @@ -97,6 +96,5 @@ def to_transcription_options(
output_formats=self.output_formats,
file_paths=file_paths,
url=url,
default_output_file_name=default_output_file_name,
),
)
9 changes: 1 addition & 8 deletions buzz/widgets/preferences_dialog/preferences_dialog.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,14 +27,12 @@ class PreferencesDialog(QDialog):
shortcuts_changed = pyqtSignal(dict)
openai_api_key_changed = pyqtSignal(str)
folder_watch_config_changed = pyqtSignal(FolderWatchPreferences)
default_export_file_name_changed = pyqtSignal(str)
preferences_changed = pyqtSignal(Preferences)

def __init__(
self,
# TODO: move shortcuts and default export file name into preferences
shortcuts: Dict[str, str],
default_export_file_name: str,
preferences: Preferences,
parent: Optional[QWidget] = None,
) -> None:
Expand All @@ -47,13 +45,8 @@ def __init__(
layout = QVBoxLayout(self)
tab_widget = QTabWidget(self)

general_tab_widget = GeneralPreferencesWidget(
default_export_file_name=default_export_file_name, parent=self
)
general_tab_widget = GeneralPreferencesWidget(parent=self)
general_tab_widget.openai_api_key_changed.connect(self.openai_api_key_changed)
general_tab_widget.default_export_file_name_changed.connect(
self.default_export_file_name_changed
)
tab_widget.addTab(general_tab_widget, _("General"))

models_tab_widget = ModelsPreferencesWidget(parent=self)
Expand Down
2 changes: 0 additions & 2 deletions buzz/widgets/transcriber/file_transcriber_widget.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@ class FileTranscriberWidget(QWidget):

def __init__(
self,
default_output_file_name: str,
file_paths: Optional[List[str]] = None,
url: Optional[str] = None,
parent: Optional[QWidget] = None,
Expand All @@ -66,7 +65,6 @@ def __init__(
openai_access_token=openai_access_token,
file_paths=self.file_paths,
url=url,
default_output_file_name=default_output_file_name,
)

layout = QVBoxLayout(self)
Expand Down
3 changes: 0 additions & 3 deletions buzz/widgets/transcription_task_folder_watcher.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,10 @@ def __init__(
self,
tasks: Dict[int, FileTranscriptionTask],
preferences: FolderWatchPreferences,
default_export_file_name: str,
parent: QObject = None,
):
super().__init__(parent)
self.tasks = tasks
self.default_export_file_name = default_export_file_name
self.set_preferences(preferences)
self.directoryChanged.connect(self.find_tasks)

Expand Down Expand Up @@ -58,7 +56,6 @@ def find_tasks(self):
file_transcription_options,
) = self.preferences.file_transcription_options.to_transcription_options(
openai_access_token=openai_access_token,
default_output_file_name=self.default_export_file_name,
file_paths=[file_path],
)
model_path = transcription_options.model.get_local_model_path()
Expand Down
2 changes: 0 additions & 2 deletions tests/widgets/file_transcriber_widget_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,13 @@ class TestFileTranscriberWidget:
def test_should_set_window_title(self, qtbot: QtBot):
widget = FileTranscriberWidget(
file_paths=["testdata/whisper-french.mp3"],
default_output_file_name="",
)
qtbot.add_widget(widget)
assert widget.windowTitle() == "whisper-french.mp3"

def test_should_emit_triggered_event(self, qtbot: QtBot):
widget = FileTranscriberWidget(
file_paths=["testdata/whisper-french.mp3"],
default_output_file_name="",
)
qtbot.add_widget(widget)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,7 @@

class TestGeneralPreferencesWidget:
def test_should_disable_test_button_if_no_api_key(self, qtbot):
widget = GeneralPreferencesWidget(
keyring_store=self.get_keyring_store(""), default_export_file_name=""
)
widget = GeneralPreferencesWidget(keyring_store=self.get_keyring_store(""))
qtbot.add_widget(widget)

test_button = widget.findChild(QPushButton)
Expand All @@ -30,7 +28,6 @@ def test_should_disable_test_button_if_no_api_key(self, qtbot):
def test_should_test_openai_api_key(self, qtbot):
widget = GeneralPreferencesWidget(
keyring_store=self.get_keyring_store("wrong-api-key"),
default_export_file_name="",
)
qtbot.add_widget(widget)

Expand Down

0 comments on commit 5aa44b4

Please sign in to comment.