Open agapserg opened 1 year ago
Выглядит как попытка сделать из Обсидиан/бота комбайн, способный на что угодно. Опыт показывает, что это до хорошего не доведет.
Для трекинга привычек есть свои хорошие инструменты. Начиная от мобильных приложений типа Loop Habit Tracker и заканчивая Экселем.
Имхо.
Обсидиан с его обилием плагинов разве не является комбаном способным на что угодно? Например вот тут ребята сделали на базе обсидиана парсер IMDB и спокойно делают у себя локальную библиотеку фильмов с красивеньким представлением. А вот тут чувак сделал супер-пупер крутой дашборд для своей работы.
Потом почему "Попытка"? Нет, не попытка, у меня всё уже сделано и успешно работает больше года и радует меня, но тут появилась возможность сократить кол-во кликов.
"Опыт показывает" - чей? Ваш? Ну я могу вам сказать, что ваш опыт субъективен, мой опыт показывает другое.
Ну для заметок, todo-листа, тайм-менеджмента и всего этого GTD есть тоже всякие Outlook'и, Todoist'ы и даже TickTick'и, но у Обсидиана есть несколько киллер-фич:
И я использую обсидиан именно поэтому. Мало того я использовал разные Habit Trecker'ы, мне не удобно в разных местах смотреть свои активности.
У меня есть ежедневный обзор моих дел, в котором хотелось бы сразу видеть и задачи, которые я выполнил и привычки, которые сегодня закрыл, ведь привычка - это просто ежедневная задача.
Пример моего Daily Note:
Я у себя сделал реализацию данной идеи так:
@dp.message_handler(commands=['read']) async def help(message: types.Message): curr_date = dt.now().strftime('%Y-%m-%d') note_text = f'\n- [x] ✅ {curr_date} - Читал 1 час' DIRNAME = os.path.join(config.inbox_path2, ''.join('Чтение') + '.md') with open(DIRNAME, 'a', encoding='UTF-8') as f: f.write(note_text)
А сейчас пришла идея "красивой" реализации этой идеи: В питое есть возможность создавать динамические функции - https://pythobyte.com/how-to-dynamically-create-a-function-in-python-706d74a2/
Так вот можно сделать так:
Я боюсь, что своими силами я буду это делать дольше чем вы, поэтому готов за реализацию данной фичи задонатить.
@agapserg
Если это так, тогда у меня есть для тебя решение: https://github.com/chhoumann/quickadd/ Доки: https://quickadd.obsidian.guide/docs/
Template Choice - Insert templates into your vault. Works together with Obsidian template syntax and popular Templater plugin, augmenting them and adding more options. Capture Choice - Quick capture your manually written information and save it. Daily notes, work log, to-read-and-watch-later list, etc. Macro Choice - Macros to augment your workflow. Use the full power of Javascript programming language and Obsidian functions to do anything your want. E.g. create a personal movie database by writing a movie name and getting the movie notes fully customized and filled with correct film's up-to-date data.
Он на js и интерфейс запутанный, но мне кажется, что для тебя это очень подходящий вариант, и js знать даже не понадобится. Тебе нужен простой Capture Choice
. Т.е. запускаешь команду (из любого окна Обса, не надо ничего заранее открывать), он у тебя спрашивает что ты хочешь, и потом пишет это в нужный тебе файл (журнальную запись за сегодня). Как раз то что тебе и нужно!
Дальше можешь усложнять в сторону Template Choice и Macro Choice.
Это решает твою задачу?
Что же касается общего поднятого вопроса, то мне кажется, что фича с поддержкой кастомного функционала была бы полезна. @dimonier
Я как раз сейчас занимаюсь написанием своего обработчика ссылок, о котором говорил в других тредах. И когда будет готово, то это очень хорошо бы работало вместе с этой программой. Т.е. чтобы tg2obsidian, видя первой команду типа Savelink
, брал бы дальше идущий текст (ссылку/и) и отсылал на обработку другой программе/функции.
@mikkovedru 1 - Tracker я знаю, пробовал его использовать, мне не подошёл. У меня немного иная структура хранилища и плагин не отрабатывает верно с моей структурой. Моя структура мне нравится больше чем то, что предлагает этот чувак и переходить ради работы плагина с моей структуры на другую - не хочу. 1.1 - У чувака и плагин требует структуру - в ежедневных заметках создаются задачи и параметры, а плагин потом чекает ежедневные заметки, т.к. дату он тянет из названия заметки. 1.2 - У меня структура такая, что на каждую привычку заведён проект, например "Чтение", "Зарядка" и т.д. И когда я что-либо сделал - я присылаю тг2обс боту команду /read и бот создаёт выполненную задачу по определённому шаблону в заметке "Чтение". А т.к. плагин Tracker читает дату из заголовка, а не из даты выполненной задачи - мне он не подходит
2 - Обсидиан из-за обилия плагинов открывается дольше секунды, а телега - открывается меньше секунды, поэтому я сделал так - на рабочий стол мобилы кинул ярлык тг2обс-бота и когда выполнил какую-либо привычку - захожу в бота, в боте есть закреплённый пост со всеми командами, тап на него, выбираю нужную мне, тап на неё и всё. Всё это занимает времени меньше 10 секунд и у меня уже работает. QuickAdd я юзаю, но для другого.
Спасибо за предложенные сценарии. Я еще подумаю на тему трекать привычки в ежедневных заметках, но не сейчас.
А по поднятому вопросу - я уже у себя всё это реализовал, но только у меня на каждую команду сделана функция (и этих функций и команд у меня например 30 штук) и я понимаю, что это быдло-кодинг, а Дмитрий как-то то ли тут, то ли в личке говорил "Функция ок, но как бы её завернуть покрасивше" вот я собственно и внёс предложение своё как это сделать, сам я это всё если и сделаю, то буду делать оч долго, т.к. я не программист.
Спасибо за развернутое объяснение своей системы организации и рабочего воркфлоу. :+1:
@agapserg т.е. по сути Вам нужно, чтобы если в сообщении есть некий текст, допустим /read, то в определенную заметку нужно добавить другой текст (из настроек), верно?
@pkb да, ну только уточнение - я себе уже так и сделал, прям так же как выше и написал. Просто решил написать об идеи завернуть это в боль мень крассивую реализацию.
А я просто накопировал этих функций 50 раз и придумал на каждую команду /sleep - уснул раньше 00:00 /veg - поел овощи /fruits - поел фрукты и так далее.
@mikkovedru Кстати после вашего совета я задумался о супер-франкеншейн связке. Я уже подходил к плагину Tracker, но ваш камент заставил еще раз это сделать. Я подумал, если бот после присылания ему команды уже пишет определённый текст в определённую заметку, то что мешает мне сделать этот же текст в отдельную ежедневную заметку в отдельной папке Tracker? И так и сделал.
Вот как привычки стали выглядеть:
Одна из функций для чего я использую обсидиан - я трекаю привычки. В самом обсидиане это реализовано достаточно топорно, а с помощью тг-бота это можно организовать вообще очень красиво и удобно.
На сколько я помню в Python в библиотеке Aiogram есть обработчик команд вида /command_name. Идея заключается в том, чтобы добавить функцию примерно такого вида:
Обработчик команд ждёт команду (/command_name) Затем по определённому пути "ПУТЬ К ЗАМЕТКЕ" Пишет определённый текст: "ТЕКСТ ЗАМЕТКИ"
А в конфиге прописываются связки КОМАНДА + ПУТЬ + ТЕКСТ, например: "/read" + "C:\Obsidian\Чтение.md" + "- [x] Читал один час [completion:: 2023-01-11]"
И если в дальнейшем прислать в бота команду /read, то в соответствующую заметку бот добавит соответствующую строчку.
В дальнейшем с помощью плагина Dataview можно будет обрабатывать выполненные задачи и считать сколькь раз в неделю я занимался какой-либо привычкой.
При чём в конфиге желательно сделать так, чтобы можно было добавить хоть 100 связок КОМАНДА + ПУТЬ + ТЕКСТ, а обработчик будет сопоставлять эти связки и писать в нужные заметки нужный текст в зависимости от команды