feat: copy transcript to Obsidian vault on open
Config: obsidian.vault path. On Obsidian button click, file is copied to vault dir then opened via obsidian:// URI. Vault path configurable in settings.
This commit is contained in:
+9
-1
@@ -216,7 +216,15 @@ async def open_file(body: dict, user: dict = Depends(current_user)):
|
||||
mode = body.get("mode", "editor") # "editor" | "folder" | "obsidian"
|
||||
if mode == "obsidian":
|
||||
from urllib.parse import quote
|
||||
subprocess.Popen(["xdg-open", f"obsidian://open?path={quote(path, safe='/')}"])
|
||||
cfg = load_config()
|
||||
vault = cfg.get("obsidian", {}).get("vault", "").strip()
|
||||
if vault and os.path.isdir(vault):
|
||||
dest = os.path.join(vault, os.path.basename(path))
|
||||
shutil.copy2(path, dest)
|
||||
target = dest
|
||||
else:
|
||||
target = path
|
||||
subprocess.Popen(["xdg-open", f"obsidian://open?path={quote(target, safe='/')}"])
|
||||
elif mode == "folder" and shutil.which("dolphin"):
|
||||
subprocess.Popen(["dolphin", "--select", path])
|
||||
elif mode == "folder":
|
||||
|
||||
@@ -33,6 +33,9 @@ DEFAULTS = {
|
||||
"enabled": False,
|
||||
"hf_token": "",
|
||||
},
|
||||
"obsidian": {
|
||||
"vault": "",
|
||||
},
|
||||
"pid_file": os.path.expanduser("~/.local/run/tueit-transcriber.pid"),
|
||||
}
|
||||
|
||||
|
||||
@@ -97,6 +97,10 @@
|
||||
<label>Ollama Modell</label>
|
||||
<select id="ollama-model"></select>
|
||||
</div>
|
||||
<div class="field">
|
||||
<label>Obsidian Vault-Pfad (optional)</label>
|
||||
<input type="text" id="obsidian-vault" placeholder="/mnt/d/.../obsidian">
|
||||
</div>
|
||||
<div class="btn-row">
|
||||
<button class="btn primary" id="save-btn">Speichern</button>
|
||||
</div>
|
||||
|
||||
@@ -62,6 +62,7 @@ async function loadConfig() {
|
||||
const diarCfg = cfg.diarization || {};
|
||||
document.getElementById('diar-enabled').checked = !!diarCfg.enabled;
|
||||
document.getElementById('diar-hf-token').value = diarCfg.hf_token || '';
|
||||
document.getElementById('obsidian-vault').value = (cfg.obsidian && cfg.obsidian.vault) || '';
|
||||
}
|
||||
|
||||
document.getElementById('refresh-devices-btn').addEventListener('click', loadDevices);
|
||||
@@ -103,6 +104,9 @@ document.getElementById('save-btn').addEventListener('click', async function() {
|
||||
base_url: document.getElementById('ollama-url').value,
|
||||
model: document.getElementById('ollama-model').value,
|
||||
},
|
||||
obsidian: {
|
||||
vault: document.getElementById('obsidian-vault').value.trim(),
|
||||
},
|
||||
diarization: {
|
||||
enabled: document.getElementById('diar-enabled').checked,
|
||||
hf_token: document.getElementById('diar-hf-token').value.trim(),
|
||||
|
||||
Reference in New Issue
Block a user