00:14
SHINSEKAI: Revolution
Скрипты для скачивания дневника: github.com/zHz00/diary_ru_dump
Удобочитаемый дамп МОЕГО дневника (400 MiB): github.com/zHz00/zhz_diary_obsidian
То же, но без картинок (40 MiB): github.com/zHz00/zhz_diary_obsidian_nopics
В принципе, должно работать для любого дневника, даже со старым дизайном, но сейчас это не протестировано. Тесты будут следующим улучшением!
Скрипты для скачивания дайари я сделал в конце 2021 года. В 2022 немного улучшил. В 2023 почти не трогал. Но в 2024 их пришлось серьёзно доработать. И вот из-за чего это произошло.
(читать дальше)
Как известно, на дайари за спамом не следят. Жалуйся-не жалуйся -- толку нет. Меня беда долгое время обходила стороной. Но 29 февраля 2024 года на моём дневнике были размещены более 80 спам-комментариев. Обнаружив это, я временно закрыл анонимам доступ к комментированию. А сам стал думать, что делать. Удалить можно и вручную, но это не систематическое решение.
Я решил процесс автоматизировать. А для этого нужно что? Тексты и метаданные всех спам-комментариев. А поскольку неизвестно, кто из них спам -- то нужны все комментарии вообще.
Если кто-то помнит, предыдущая версия скриптов качала только мои посты и картинки. А Xersareeth писал, что без комментариев нещитово. Настало время исправить эту ситуацию.
Основные улучшения:
1. Хранение информации в БД.
2. Скачивание комментариев
3. Анти-спам (полуавтоматический)
4. Календарь -- ещё не показывал!
5. Улучшены перекрёстные ссылки
6. Репост в телеграм.
1. Хранение информации в БД.
Какая у меня модель хранения дневника? Она состояла из двух независимых хранилищ.
Первое хранилище -- это скачанные посты в HTML и их метаданные. Это сырые данные, не предназначенные для чтения человеком (мной).
Второе хранилище -- это каталог Обсидиана с маркдаун-файлами. Там всё человекочитаемо. Можно открывать Обсидианом, а можно любым текстовым редактором. Там уже проставлены ссылки на другие посты, на локально скачанные картинки, есть кое-какая навигация и т.п.
Соответственно, первым этапом скачиваются самые новые страницы дневника и обновляются данные в первом хранилище. После этого запускается преобразование -- и получается второе хранилище. Второе хранилище можно даже редактировать из Обсидиана, но смысла в этом нет. Изменения не синхронизируются обратно. Более того, при каждой попытке преобразования обсидиан-храналище удаляется и собирается заново.
Я себя не раз хвалил за такую модель, потому что преобразовать в маркдаун можно разными способами. Если бы я сразу преобразовывал, после каждого изменения алгоритма пришлось бы перекачивать весь дневник.
Но была и проблема. Первое хранилище у меня было в виде отдельных файлов на каждый пост. И ещё по одному файлу с метаданными. Это около 10 тысяч непонятных файлов. Если бы я сохранил такую же модель при скачивании комментариев, я бы припух (отдельный файл на каждый комментарий и отдельный на метаданные?). Поэтому я решил, что всё теперь будет храниться в одном файле. Это будет БД SQLite.
Это не первая БД, которую я запилил. Допустим, третья. В базе шесть таблиц и три индекса. Выглядит это так:
![](https://e.radikal.host/2024/05/12/scr2287.png)
Побочным эффектом создания БД стало то, что я теперь мог удобно листать БД с помощью стороннего софта (например, DB Browser), искать там по любому полю, а также писать запросы типа такого:
![](https://e.radikal.host/2024/05/12/photo_2024-04-05_00-04-57.jpg)
Данный запрос показывает топ-10 моих самых активных комментаторов (включая меня самого).
Постоянная доступность подобных возможностей сразу добавляет 100 очков к ощущению крутости.
2. Скачивание комментариев
Скачивание комментариев гораздо более трудоёмко, чем скачивание записей. Когда качаешь записи, можешь скачать сразу по 20 штук, потому что на странице 20 записей. При таком подходе полный дамп моего дневника занимает всего несколько часов, при паузе между запросами в 60 секунд (такая большая пауза, безусловно, излишняя; практика Urban Knight показывает, что паузы в 5 секунд достаточно). Для скачивания комментариев же надо зайти в каждый пост. На текущий момент их 4700.
В общем, первое скачивание всех комментов длилось 2-3 дня. К счастью, благодаря тому, что я комменты храню в БД, необходимости повторных скачиваний старых постов не было. Я мог скачивать в несколько приёмов. Так делать и пришлось, т.к. в комментах обнаружились неоднородности, приводящие к падениям скрипта.
Немного статистики.
Всего на моём дневнике оставили 19933 коммента (включая спам и мои собственные). Естественно, имея в своём распоряжении такой мощный инструмент, как SQL, я не мог не поиграть с SELECT DISTINCT и GROUP BY. А потом засунуть это в эксель. Вот статистика комментариев по годам:
![](https://e.radikal.host/2024/05/12/scr2288.png)
Как видно, несмотря на то, что дайари загнивает, не загнивают читатели моего дневника! Уровня 2012 и 2015 годов (когда у меня активно тусовался Омега) достичь не удаётся, но с 2019 года наблюдается даже определённый рост. Что будет в 2024 -- непонятно. Прошло уже почти полгода, но сейчас сделано только 586 комментариев. Уровень 2023 года вряд ли будет превышен.
Далее, процент моих ответов:
![](https://e.radikal.host/2024/05/12/scr2289.png)
Как видно, с 2020 (или даже с 2017!) процент моих ответов неуклонно снижается. Но это не потому что я кого-то игнорю. Я действительно редко отвечаю сразу. Обычно я жду нескольких комментов, чтобы ответить всем. Тем не менее, случаи позднего ответа (через 2-3 недели) или игнора у меня действительно случаются, увы.
Что с картинками? Мои скрипты универсальны, они автоматически выкачали все картинки из комментариве. Для этого не пришлось даже вносить модификаций. Всегов в комментариях было оставлено 660 уникальных картинок, включая смайлики (которых было 101, и которые, конечно, повторялись). Не менее 205 картинок оказались битыми. Таким образом, было спасено примерно 300 полезных картинок.
Из них при заливке на гитхаб 4 штуки пришлось зацензурить, чтобы не было проблем с их администрацией.
Философская проблема, которая передо мной стояла, заключалась в том, куда эти комментарии деть в обсидиан-хранилище. Можно было каждый комментарий пихать в отдельный маркдаун-файл. Можно было сделать пост отдельно, а комментарии вторым файлом. И, наконец, можно было в одном выходном файле держать и сам пост, и все комментарии.
Минусом всех трёх подходов являлось то, что файлы постов в обсидиан-хранилище будут изменены по тексту, при этом не изменившись по сути. Даже если не хранить комменты в том же файле, что и пост -- потребуется какая-либо ссылка на комментарии, чтобы их можно было удобно прочитать из самого поста. А это опять означает изменение файлов постов.
А почему я не хотел, чтобы файлы постов изменились? Потому что я загружаю обсидиан-дамп в Git. Особенность гита заключается в том, что при изменении файла он грузит не дифф, а полностью новую версию. Это означало, что все 4700 постов у меня будут не только изменены, но и заменены. Да и изменение в этом случае будет совсем неинформативно. Я пост-то не редактировал, а будет написано, что пост изменён.
Но поскольку это бы произошло в любом из трёх сценариев, я выбрал наиболее удобный, по моему мнению вариант. А именно -- общий файл на пост и все его комментарии. Побочным положительным явлением являлось то, что я удалил особую функцию, которая убирала/добавляла пробелы в некоторых местах постов только ради того, чтобы посты не отображались изменёнными из-за различий в whitespace.
Различие это возникло из-за перехода с парсера html.parser на lxml.
Теперь посты выглядят вот так:
![](https://e.radikal.host/2024/05/12/scr2291.png)
3. Анти-спам
Изначально вся эта канитель затевалась именно с целью анти-спама. Но есть и вторая сторона: не только анти-спам требует скачивания комментариев, но и скачивание комментариев требует анти-спама. Почему? Потому что весь спам необходимо удалить перед заливой к гит. Там должны быть только осмысленные комментарии от людей.
Спам, который приходит на дайари, имеет одну характерную особенность. А именно -- спам приходит только в очень старые посты (2015 год и ранее). Я не знаю, почему это происходит, но это очень удобно для создания анти-спама.
Проанализировав последствия атаки 29 февраля я пришёл к выводу, что сравнение даты коммента и даты поста даёт очень хороший результат. Это определяет ВЕСЬ спам, даже тот, о котором я не знал. В том числе были найдены спамные комменты, у которых ссылка была невидимой. Вот, например:
![](https://e.radikal.host/2024/05/12/scr2292.png)
Было и много ложных срабатываний, потому что люди иногда действительно оставляют комментарии в старых постах. Как я решил эту проблему?
У каждого коммента в БД есть два флага: DELETED и NOT_SPAM. Если комментарий старше полугода и написан анонимом, то он попадает в список подозрительных. Я вручную проверяю все такие комментарии. Если я вижу, что комментарий всё-таки настоящий, я помечаю его как NOT_SPAM. Это надо сделать один раз. После этого он больше не будет отображаться как подозрительный. Если же я вижу, что это спам, то он помечается как DELETED. При этом посылается запрос на дайари, который действительно удаляет комментарий. В БД комментарий остаётся, однако не попадает во второе хранилище, т.е. не отображается в Обсидиане и не заливается на Гит.
Для проверки подозрительных комментариев я сделал специальный псевдо-интерфейс:
![](https://e.radikal.host/2024/05/12/image_2024-04-15_14-02-43_.png)
Чтобы его получить, надо запустить diary_edit.py . Он автоматически докачает новейшвие посты и комментарии, а потом покажет список подозревамеых.
Я тестировал анти-спам 22 дня. За это время я получил 71 спам, это 3.2 спама в день. При этом 59 спамов было в одной записи, это 83%. В других записях было 12 спамов, это всего 0.55 спама в день. Что же это за запись, в которой было 59 спамов? Это пост, посвящённый вирусу phone-a.exe (diary.ru/~zHz00/p175700055_phone-a-exe.htm). Точнее, это не не совсем вирус, но это не имеет особого значения. Важно, что спаммерские скрипты В ПЕРВУЮ очередь нацелены на этот пост.
Я решил эту проблему административно. Я запретил комментарии в этом посте.
4. Календарь
Календарь как в дайари я сделал давно. Но с тех пор улучшил его неоднократно. Сейчас он выглядит так:
![](https://e.radikal.host/2024/05/12/scr2293.png)
В начале есть список годов. В каждом году есть ссылка, возвращающая в начало. Дни, в которые сделано больше одного поста, подсвечены жирным. Если навести мышку на день, сразу увидишь начало поста. Для дней с несколькими постами виден список, там тоже можно навести мышку. Это выглядит так (красный кружок дорисован в пейнте):
![](https://e.radikal.host/2024/05/12/scr2294.png)
5. Улучшенные перекрёстные ссылки.
Ссылки между постами работали давно. Сейчас же у меня появилось 20 тысяч комментариев. Что с этим делать?
а) теперь есть ссылки на комментарии. Оказалось, что Обсидиан поддерживает ссылки на блок внутри поста, если у того есть уникальный идентификатор. Что может быть уникальным идентификатором комментария, если не его номер? Сделано.
б) оказалось, что у меня есть ссылки на тег. До этого момента такие ссылки вели на дайри. Но это не слишком хорошо, потому что в хранилище Обсидиана и так у меня генерируются мд-файлы, содержащие ссылки на все посты по любому тегу. Сделано.
в) ну и ещё у меня были две ссылки на СПИСОК тегов. И для этого мд-файл у меня тоже есть. Сделано.
Вот как выглядят внутренние ссылки на комментарии:
![](https://e.radikal.host/2024/05/12/SEI-SENAGON-ZAPISKI-U-IZGOLOVY---zhz00_diary_obsidian---Obsidian-v1.4.16.jpg)
При клике происходит переход к самому комментарию:
![](https://e.radikal.host/2024/05/12/Grisaia-no-Kajitsu-01-13-END---zhz00_diary_obsidian---Obsidian-v1.4.16.png)
Символы ^c... видны только в режиме редактирования. Это маркер блока. И с ним связана одна неприятность. Ссылку можно дать только на блок. Если комментарий состоит из нескольких абзацев, то отображаться при наведении будет только последний, потому что маркер, соответствующий всему комментарию, я присваиваю именно последнему блоку. В данном случае мне повезло, что я ссылался именно на последний абзац.
Похоже, эта проблема неисправима. Можно попытаться выставить маркер для таблицы с метаданными, но тогда при наведении мышки будет видна только шапка комментария. Полезно ли это?
6. Репост в телеграм
Тут картинки мне показывать нечего. Я просто запускаю tg_start.py, а дальше он сам всё делает. А именно:
а) Если в посте были картинки, то они все скачиваются в основную папку дампа, что исключает необходимость их повторного скачивания в будущем.
б) Если пост довольно короткий, он постится в телегу сразу, вместе с картинками, которые грузятся как отделные посты. Короткий абзац после картинки считается подписью и попадает в тот же пост, что и картинка.
в) Если пост длинный, либо в нём много картинок, то он грузится на телегра.ф, вместе с картинками. В телеграм грузится только заголовок, теги и ссылка.
Защиты от повторного постинга нет. Вызов идёт только вручную. Полагаю, что в будущем следует сделать автоматический запуск этого скрипта, скажем, каждые 5 минут, с проверкой на наличие новых постов.
Для того, чтобы репост заработал, надо знать бот-токен телеграма, токен телеграфа и имя канала. Постинг в приватные каналы не поддерживается.
Что дальше?
1. Тесты, чтобы быть уверенным, что скрипты работают для любого днвеника, а не только моего.
2. Гуй
Я хочу, чтобы бэкап своего дневника на дайари могли сделать простые смертные, а не только нёрды. Мы хороним дайари много лет. Но однажды он действительно может умереть. К этому надо быть готовым.
Удобочитаемый дамп МОЕГО дневника (400 MiB): github.com/zHz00/zhz_diary_obsidian
То же, но без картинок (40 MiB): github.com/zHz00/zhz_diary_obsidian_nopics
В принципе, должно работать для любого дневника, даже со старым дизайном, но сейчас это не протестировано. Тесты будут следующим улучшением!
Скрипты для скачивания дайари я сделал в конце 2021 года. В 2022 немного улучшил. В 2023 почти не трогал. Но в 2024 их пришлось серьёзно доработать. И вот из-за чего это произошло.
(читать дальше)
Как известно, на дайари за спамом не следят. Жалуйся-не жалуйся -- толку нет. Меня беда долгое время обходила стороной. Но 29 февраля 2024 года на моём дневнике были размещены более 80 спам-комментариев. Обнаружив это, я временно закрыл анонимам доступ к комментированию. А сам стал думать, что делать. Удалить можно и вручную, но это не систематическое решение.
Я решил процесс автоматизировать. А для этого нужно что? Тексты и метаданные всех спам-комментариев. А поскольку неизвестно, кто из них спам -- то нужны все комментарии вообще.
Если кто-то помнит, предыдущая версия скриптов качала только мои посты и картинки. А Xersareeth писал, что без комментариев нещитово. Настало время исправить эту ситуацию.
Основные улучшения:
1. Хранение информации в БД.
2. Скачивание комментариев
3. Анти-спам (полуавтоматический)
4. Календарь -- ещё не показывал!
5. Улучшены перекрёстные ссылки
6. Репост в телеграм.
1. Хранение информации в БД.
Какая у меня модель хранения дневника? Она состояла из двух независимых хранилищ.
Первое хранилище -- это скачанные посты в HTML и их метаданные. Это сырые данные, не предназначенные для чтения человеком (мной).
Второе хранилище -- это каталог Обсидиана с маркдаун-файлами. Там всё человекочитаемо. Можно открывать Обсидианом, а можно любым текстовым редактором. Там уже проставлены ссылки на другие посты, на локально скачанные картинки, есть кое-какая навигация и т.п.
Соответственно, первым этапом скачиваются самые новые страницы дневника и обновляются данные в первом хранилище. После этого запускается преобразование -- и получается второе хранилище. Второе хранилище можно даже редактировать из Обсидиана, но смысла в этом нет. Изменения не синхронизируются обратно. Более того, при каждой попытке преобразования обсидиан-храналище удаляется и собирается заново.
Я себя не раз хвалил за такую модель, потому что преобразовать в маркдаун можно разными способами. Если бы я сразу преобразовывал, после каждого изменения алгоритма пришлось бы перекачивать весь дневник.
Но была и проблема. Первое хранилище у меня было в виде отдельных файлов на каждый пост. И ещё по одному файлу с метаданными. Это около 10 тысяч непонятных файлов. Если бы я сохранил такую же модель при скачивании комментариев, я бы припух (отдельный файл на каждый комментарий и отдельный на метаданные?). Поэтому я решил, что всё теперь будет храниться в одном файле. Это будет БД SQLite.
Это не первая БД, которую я запилил. Допустим, третья. В базе шесть таблиц и три индекса. Выглядит это так:
![](https://e.radikal.host/2024/05/12/scr2287.png)
Побочным эффектом создания БД стало то, что я теперь мог удобно листать БД с помощью стороннего софта (например, DB Browser), искать там по любому полю, а также писать запросы типа такого:
![](https://e.radikal.host/2024/05/12/photo_2024-04-05_00-04-57.jpg)
Данный запрос показывает топ-10 моих самых активных комментаторов (включая меня самого).
Постоянная доступность подобных возможностей сразу добавляет 100 очков к ощущению крутости.
2. Скачивание комментариев
Скачивание комментариев гораздо более трудоёмко, чем скачивание записей. Когда качаешь записи, можешь скачать сразу по 20 штук, потому что на странице 20 записей. При таком подходе полный дамп моего дневника занимает всего несколько часов, при паузе между запросами в 60 секунд (такая большая пауза, безусловно, излишняя; практика Urban Knight показывает, что паузы в 5 секунд достаточно). Для скачивания комментариев же надо зайти в каждый пост. На текущий момент их 4700.
В общем, первое скачивание всех комментов длилось 2-3 дня. К счастью, благодаря тому, что я комменты храню в БД, необходимости повторных скачиваний старых постов не было. Я мог скачивать в несколько приёмов. Так делать и пришлось, т.к. в комментах обнаружились неоднородности, приводящие к падениям скрипта.
Немного статистики.
Всего на моём дневнике оставили 19933 коммента (включая спам и мои собственные). Естественно, имея в своём распоряжении такой мощный инструмент, как SQL, я не мог не поиграть с SELECT DISTINCT и GROUP BY. А потом засунуть это в эксель. Вот статистика комментариев по годам:
![](https://e.radikal.host/2024/05/12/scr2288.png)
Как видно, несмотря на то, что дайари загнивает, не загнивают читатели моего дневника! Уровня 2012 и 2015 годов (когда у меня активно тусовался Омега) достичь не удаётся, но с 2019 года наблюдается даже определённый рост. Что будет в 2024 -- непонятно. Прошло уже почти полгода, но сейчас сделано только 586 комментариев. Уровень 2023 года вряд ли будет превышен.
Далее, процент моих ответов:
![](https://e.radikal.host/2024/05/12/scr2289.png)
Как видно, с 2020 (или даже с 2017!) процент моих ответов неуклонно снижается. Но это не потому что я кого-то игнорю. Я действительно редко отвечаю сразу. Обычно я жду нескольких комментов, чтобы ответить всем. Тем не менее, случаи позднего ответа (через 2-3 недели) или игнора у меня действительно случаются, увы.
Что с картинками? Мои скрипты универсальны, они автоматически выкачали все картинки из комментариве. Для этого не пришлось даже вносить модификаций. Всегов в комментариях было оставлено 660 уникальных картинок, включая смайлики (которых было 101, и которые, конечно, повторялись). Не менее 205 картинок оказались битыми. Таким образом, было спасено примерно 300 полезных картинок.
Из них при заливке на гитхаб 4 штуки пришлось зацензурить, чтобы не было проблем с их администрацией.
Философская проблема, которая передо мной стояла, заключалась в том, куда эти комментарии деть в обсидиан-хранилище. Можно было каждый комментарий пихать в отдельный маркдаун-файл. Можно было сделать пост отдельно, а комментарии вторым файлом. И, наконец, можно было в одном выходном файле держать и сам пост, и все комментарии.
Минусом всех трёх подходов являлось то, что файлы постов в обсидиан-хранилище будут изменены по тексту, при этом не изменившись по сути. Даже если не хранить комменты в том же файле, что и пост -- потребуется какая-либо ссылка на комментарии, чтобы их можно было удобно прочитать из самого поста. А это опять означает изменение файлов постов.
А почему я не хотел, чтобы файлы постов изменились? Потому что я загружаю обсидиан-дамп в Git. Особенность гита заключается в том, что при изменении файла он грузит не дифф, а полностью новую версию. Это означало, что все 4700 постов у меня будут не только изменены, но и заменены. Да и изменение в этом случае будет совсем неинформативно. Я пост-то не редактировал, а будет написано, что пост изменён.
Но поскольку это бы произошло в любом из трёх сценариев, я выбрал наиболее удобный, по моему мнению вариант. А именно -- общий файл на пост и все его комментарии. Побочным положительным явлением являлось то, что я удалил особую функцию, которая убирала/добавляла пробелы в некоторых местах постов только ради того, чтобы посты не отображались изменёнными из-за различий в whitespace.
Различие это возникло из-за перехода с парсера html.parser на lxml.
Теперь посты выглядят вот так:
![](https://e.radikal.host/2024/05/12/scr2291.png)
3. Анти-спам
Изначально вся эта канитель затевалась именно с целью анти-спама. Но есть и вторая сторона: не только анти-спам требует скачивания комментариев, но и скачивание комментариев требует анти-спама. Почему? Потому что весь спам необходимо удалить перед заливой к гит. Там должны быть только осмысленные комментарии от людей.
Спам, который приходит на дайари, имеет одну характерную особенность. А именно -- спам приходит только в очень старые посты (2015 год и ранее). Я не знаю, почему это происходит, но это очень удобно для создания анти-спама.
Проанализировав последствия атаки 29 февраля я пришёл к выводу, что сравнение даты коммента и даты поста даёт очень хороший результат. Это определяет ВЕСЬ спам, даже тот, о котором я не знал. В том числе были найдены спамные комменты, у которых ссылка была невидимой. Вот, например:
![](https://e.radikal.host/2024/05/12/scr2292.png)
Было и много ложных срабатываний, потому что люди иногда действительно оставляют комментарии в старых постах. Как я решил эту проблему?
У каждого коммента в БД есть два флага: DELETED и NOT_SPAM. Если комментарий старше полугода и написан анонимом, то он попадает в список подозрительных. Я вручную проверяю все такие комментарии. Если я вижу, что комментарий всё-таки настоящий, я помечаю его как NOT_SPAM. Это надо сделать один раз. После этого он больше не будет отображаться как подозрительный. Если же я вижу, что это спам, то он помечается как DELETED. При этом посылается запрос на дайари, который действительно удаляет комментарий. В БД комментарий остаётся, однако не попадает во второе хранилище, т.е. не отображается в Обсидиане и не заливается на Гит.
Для проверки подозрительных комментариев я сделал специальный псевдо-интерфейс:
![](https://e.radikal.host/2024/05/12/image_2024-04-15_14-02-43_.png)
Чтобы его получить, надо запустить diary_edit.py . Он автоматически докачает новейшвие посты и комментарии, а потом покажет список подозревамеых.
Я тестировал анти-спам 22 дня. За это время я получил 71 спам, это 3.2 спама в день. При этом 59 спамов было в одной записи, это 83%. В других записях было 12 спамов, это всего 0.55 спама в день. Что же это за запись, в которой было 59 спамов? Это пост, посвящённый вирусу phone-a.exe (diary.ru/~zHz00/p175700055_phone-a-exe.htm). Точнее, это не не совсем вирус, но это не имеет особого значения. Важно, что спаммерские скрипты В ПЕРВУЮ очередь нацелены на этот пост.
Я решил эту проблему административно. Я запретил комментарии в этом посте.
4. Календарь
Календарь как в дайари я сделал давно. Но с тех пор улучшил его неоднократно. Сейчас он выглядит так:
![](https://e.radikal.host/2024/05/12/scr2293.png)
В начале есть список годов. В каждом году есть ссылка, возвращающая в начало. Дни, в которые сделано больше одного поста, подсвечены жирным. Если навести мышку на день, сразу увидишь начало поста. Для дней с несколькими постами виден список, там тоже можно навести мышку. Это выглядит так (красный кружок дорисован в пейнте):
![](https://e.radikal.host/2024/05/12/scr2294.png)
5. Улучшенные перекрёстные ссылки.
Ссылки между постами работали давно. Сейчас же у меня появилось 20 тысяч комментариев. Что с этим делать?
а) теперь есть ссылки на комментарии. Оказалось, что Обсидиан поддерживает ссылки на блок внутри поста, если у того есть уникальный идентификатор. Что может быть уникальным идентификатором комментария, если не его номер? Сделано.
б) оказалось, что у меня есть ссылки на тег. До этого момента такие ссылки вели на дайри. Но это не слишком хорошо, потому что в хранилище Обсидиана и так у меня генерируются мд-файлы, содержащие ссылки на все посты по любому тегу. Сделано.
в) ну и ещё у меня были две ссылки на СПИСОК тегов. И для этого мд-файл у меня тоже есть. Сделано.
Вот как выглядят внутренние ссылки на комментарии:
![](https://e.radikal.host/2024/05/12/SEI-SENAGON-ZAPISKI-U-IZGOLOVY---zhz00_diary_obsidian---Obsidian-v1.4.16.jpg)
При клике происходит переход к самому комментарию:
![](https://e.radikal.host/2024/05/12/Grisaia-no-Kajitsu-01-13-END---zhz00_diary_obsidian---Obsidian-v1.4.16.png)
Символы ^c... видны только в режиме редактирования. Это маркер блока. И с ним связана одна неприятность. Ссылку можно дать только на блок. Если комментарий состоит из нескольких абзацев, то отображаться при наведении будет только последний, потому что маркер, соответствующий всему комментарию, я присваиваю именно последнему блоку. В данном случае мне повезло, что я ссылался именно на последний абзац.
Похоже, эта проблема неисправима. Можно попытаться выставить маркер для таблицы с метаданными, но тогда при наведении мышки будет видна только шапка комментария. Полезно ли это?
6. Репост в телеграм
Тут картинки мне показывать нечего. Я просто запускаю tg_start.py, а дальше он сам всё делает. А именно:
а) Если в посте были картинки, то они все скачиваются в основную папку дампа, что исключает необходимость их повторного скачивания в будущем.
б) Если пост довольно короткий, он постится в телегу сразу, вместе с картинками, которые грузятся как отделные посты. Короткий абзац после картинки считается подписью и попадает в тот же пост, что и картинка.
в) Если пост длинный, либо в нём много картинок, то он грузится на телегра.ф, вместе с картинками. В телеграм грузится только заголовок, теги и ссылка.
Защиты от повторного постинга нет. Вызов идёт только вручную. Полагаю, что в будущем следует сделать автоматический запуск этого скрипта, скажем, каждые 5 минут, с проверкой на наличие новых постов.
Для того, чтобы репост заработал, надо знать бот-токен телеграма, токен телеграфа и имя канала. Постинг в приватные каналы не поддерживается.
Что дальше?
1. Тесты, чтобы быть уверенным, что скрипты работают для любого днвеника, а не только моего.
2. Гуй
Я хочу, чтобы бэкап своего дневника на дайари могли сделать простые смертные, а не только нёрды. Мы хороним дайари много лет. Но однажды он действительно может умереть. К этому надо быть готовым.
@темы: Программирование, Борьба с техникой, Статьи