From 859eadd6ee245f73d040ddd3036f2266e983e7f6 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 19 Jun 2026 15:26:36 +0000 Subject: [PATCH] Fix Obsidian templates: move file via renameFile to dodge Cyrillic folder bug Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_0171eYx2AScskQeycHYGGncm --- ...0\260 \320\264\320\265\320\275\321\214.md" | 19 ++++++++++--------- ...20\265\320\262\320\275\320\270\320\272.md" | 19 ++++++++++--------- 2 files changed, 20 insertions(+), 18 deletions(-) diff --git "a/obsidian/templates/\320\236\321\202\321\207\321\221\321\202 \320\267\320\260 \320\264\320\265\320\275\321\214.md" "b/obsidian/templates/\320\236\321\202\321\207\321\221\321\202 \320\267\320\260 \320\264\320\265\320\275\321\214.md" index 4e2f660..b9c40b6 100644 --- "a/obsidian/templates/\320\236\321\202\321\207\321\221\321\202 \320\267\320\260 \320\264\320\265\320\275\321\214.md" +++ "b/obsidian/templates/\320\236\321\202\321\207\321\221\321\202 \320\267\320\260 \320\264\320\265\320\275\321\214.md" @@ -1,17 +1,18 @@ <%* // Кладём отчёт в папку «отчёты за день» и именуем по дате создания. +// Перемещаем файл напрямую через API Obsidian, минуя tp.file.move: +// его внутренняя проверка папки ломается на кириллице (NFC/NFD) и +// падает с «Folder already exists». const folder = "отчёты за день"; -// Создаём папку, если её ещё нет (Templater сам вложенные папки не создаёт). -// Если папка уже существует — createFolder бросит ошибку, её игнорируем. -try { - await app.vault.createFolder(folder); -} catch (e) { /* папка уже есть */ } -// Если отчёт на сегодня уже есть — добавляем время, чтобы не было конфликта. +// Создаём папку, если её ещё нет. Если уже есть — ошибку игнорируем. +try { await app.vault.createFolder(folder); } catch (e) { /* папка уже есть */ } +// Имя по дате; при конфликте добавляем время. let fileName = tp.date.now("DD.MM.YYYY"); -if (app.vault.getAbstractFileByPath(`${folder}/${fileName}.md`)) { - fileName += " " + tp.date.now("HH-mm"); +let newPath = `${folder}/${fileName}.md`; +if (await app.vault.adapter.exists(newPath)) { + newPath = `${folder}/${fileName} ${tp.date.now("HH-mm")}.md`; } -await tp.file.move(`${folder}/${fileName}`); +await app.fileManager.renameFile(tp.config.target_file, newPath); -%> --- date: <% tp.date.now("YYYY-MM-DD") %> diff --git "a/obsidian/templates/\320\242\320\276\321\200\320\263\320\276\320\262\321\213\320\271 \320\264\320\275\320\265\320\262\320\275\320\270\320\272.md" "b/obsidian/templates/\320\242\320\276\321\200\320\263\320\276\320\262\321\213\320\271 \320\264\320\275\320\265\320\262\320\275\320\270\320\272.md" index 817f752..8b6002b 100644 --- "a/obsidian/templates/\320\242\320\276\321\200\320\263\320\276\320\262\321\213\320\271 \320\264\320\275\320\265\320\262\320\275\320\270\320\272.md" +++ "b/obsidian/templates/\320\242\320\276\321\200\320\263\320\276\320\262\321\213\320\271 \320\264\320\275\320\265\320\262\320\275\320\270\320\272.md" @@ -1,17 +1,18 @@ <%* // Кладём заметку в инвестиции/дневник и именуем по дате создания. +// Перемещаем файл напрямую через API Obsidian, минуя tp.file.move: +// его внутренняя проверка папки ломается на кириллице (NFC/NFD) и +// падает с «Folder already exists». const folder = "инвестиции/дневник"; -// Создаём папку, если её ещё нет (Templater сам вложенные папки не создаёт). -// Если папка уже существует — createFolder бросит ошибку, её игнорируем. -try { - await app.vault.createFolder(folder); -} catch (e) { /* папка уже есть */ } -// Если заметка на сегодня уже есть — добавляем время, чтобы не было конфликта. +// Создаём папку, если её ещё нет. Если уже есть — ошибку игнорируем. +try { await app.vault.createFolder(folder); } catch (e) { /* папка уже есть */ } +// Имя по дате; при конфликте добавляем время. let fileName = tp.date.now("DD.MM.YYYY"); -if (app.vault.getAbstractFileByPath(`${folder}/${fileName}.md`)) { - fileName += " " + tp.date.now("HH-mm"); +let newPath = `${folder}/${fileName}.md`; +if (await app.vault.adapter.exists(newPath)) { + newPath = `${folder}/${fileName} ${tp.date.now("HH-mm")}.md`; } -await tp.file.move(`${folder}/${fileName}`); +await app.fileManager.renameFile(tp.config.target_file, newPath); -%> --- date: <% tp.date.now("YYYY-MM-DD") %>