Папки Obsidian → теги Obsidian
Перед использованием обязательно сделайте бэкап вашего хранилища Obsidian, скрипт не предполагает отката и все изменения вносятся непосредственно в тело всех .md файлов вашего хранилища Obsidian.
- Строковый формат (tags: tag1 tag2) преобразуется в список
- Неизвестные форматы преобразуются в список строк
- Корректная обработка существующих списков
- Поле tags: без значений
- Поле tags: null в YAML
- Строковые теги с пробелами
- Нестандартные форматы тегов
Убедитесь, что установлены зависимости:
pip install pyyaml regexили
uv add pyyaml regexЗапустите скрипт:
python obsidian-folder-tags.py "путь/к/хранилищу" -- exclude "dir1", "dir2", "dir_n"
Например:
obsidian_folder_tags.py "f:\SyncObsidian\obsidian" --exclude template, templates, snippets
**Корень Obsidian**
/области жизни/
file1.md
file2.md
...
/здоровье/
file1.md
file2.md
...
Случай 1: Пустое поле tags
---
tags:
---После обработки:
---
tags:
- области_жизни
- здоровье
---Случай 2: Строковые теги
---
tags: тег1 тег2
---После обработки:
---
tags:
- тег1
- тег2
- области_жизни
- здоровье
---Случай 3: Теги как None
---
tags: null
---После обработки:
---
tags:
- области_жизни
- здоровье
---- Рекурсивная обработка всех .md файлов
- Высокая скорость обработки
- Детальное логгирование — полная история изменений в JSON-формате
- Основной лог: obsidian_tags.log (текстовый формат)
- Детальный лог изменений: obsidian_tags_changes.json (JSON-формат)
В логах фиксируется:
- Путь к файлу
- Старые теги (если были)
- Новые теги
- Папка файла
- Действие (обновление тегов/добавление фронтматтера)
- Временная метка
- Исключенные папки
- Формат лога изменений (JSON):
[
{
"file": "/path/to/note.md",
"old_tags": ["tag1", "tag2"],
"new_tags": ["tag1", "tag2", "new_tag"],
"folder": "/path/to/folder",
"action": "updated tags",
"datetime": "2023-10-15T12:34:56Z"
}
]- Поддержка всех форматов тегов (массив, строка)
- Объединение без дубликатов
- Сохранение существующих данных фронтматтера
- Автоматическое создание фронт маттера при его отсутствии
- Установите Go: https://go.dev/dl/
- Установите библиотеку YAML
- Скомпилируйте скрипт из командной строки
go build -o obsidian-folder-tags obsidian-folder-tags.goИли воспользуйтесь командным файлом build.bat
Базовое использование obsidian-folder-tags.exe "/path/to/vault"
Перечисление через запятую:
obsidian-folder-tags.exe "/path/to/vault" --exclude journal/1_daily,templates,archiveРаздельные аргументы:
obsidian-folder-tags.exe "/path/to/vault" --exclude journal/1_daily templates archiveСмешанный вариант:
obsidian-folder-tags.exe "/path/to/vault" --exclude journal/1_daily,templates archive "my other dir"После выполнения:
- obsidian_tags.log - основной лог
- obsidian_tags_changes.json - детальный лог изменений
Эта реализация обеспечивает все функции оригинального Python-скрипта с добавлением детального отслеживания изменений и улучшенной производительностью.