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. Гуй
Я хочу, чтобы бэкап своего дневника на дайари могли сделать простые смертные, а не только нёрды. Мы хороним дайари много лет. Но однажды он действительно может умереть. К этому надо быть готовым.
@темы: Программирование, Борьба с техникой, Статьи
13.05.2024 в 06:56
13.05.2024 в 07:07
2) круто! можно читать твой дневник на гитхабе ))) но когда нажимаешь на ссылку "читать дальше", тебя перекидывает с гитхаба на дайрик ))) думаю, должен просто раскрываться текст
13.05.2024 в 11:18
CD_Eater,
1. а куда посоветуешь?
2. где ты такую ссылку увидел? вообще это не предназначено для чтения на самом гитхабе...
13.05.2024 в 11:30
13.05.2024 в 12:02
А про чтение с гитхаба... гитхаб действительно показывает маркдаун но есть некоторая разница в синтаксисе. Например, обсидиан сам добавляет .md к ссылкам, а гитхаб нет. Поэтому перекрёстные ссылки при просмотре с гитхаба не работают. Возможно, надо подпилить синтаксис, чтобы прямо на гитхабе нормально работало. Но это не планировалось)
13.05.2024 в 12:23
зачем там контент чьего-то дневника???
как бы ты отнёсся к тому, если на гитхабе выложили все серии "санта барбары"?
а ведь это тоже кому-то интересно )))
если хочется продублировать куда-то свой дневничок, то наверное на что-то типа дыбра или другого блого-сайта
ну или самому захостить сайтик
13.05.2024 в 12:25
есть очевидный вариант хранить дневник в виде html, и использовать любой браузер для просмотра, чем этот вариант хуже?
ну, есть же chm, чтобы много html страниц хранить в виде одного файла
13.05.2024 в 16:39
>>зачем там контент чьего-то дневника???
Ну, это нужно мне самому, чтобы я при необходимости мог скачать на любой компьютер или другое устройство. И всё это синхронизировать.
И это не запрещено.
>>ну или самому захостить сайтик
Возможно, со временем я перейду именно на такую модель. Пока так.
>>а что за обсидиан? как ты его выбрал и почему рекомендуешь?
Это мой произвол. Я не проводил полноценного сравнения. Раньше я пользовался KeepNote, но он явно не дотягивает до обсидиана и брошен. Обсидиан я нашёл случайно, и он мне понравился. Он хорошо выглядит, хорошо работает, ориентирован на локальное хранение и текстовые файлы. Альтернативы есть, но я Обсидианом пользовался ещё до этой истории со скриптами, поэтому для личного удобства я сразу ориентировался на него.
А ты какую программу рекомендуешь для того же самого?
13.05.2024 в 17:22
люди уже напридумывали много форматов для хранения чтива и сделали много читалок для них
всякие epub fb2 pdf и т.д.
я бы начал с поика самой удобной читалки
мд - хорош тем, что человекочитаем без читалок
нужна ли эта фича в твоём случае? вряд ли, т.к. руками ты эти тексты редактировать не собираешься
13.05.2024 в 17:24
ну это чтобы не создавать много файлов ))))
13.05.2024 в 23:07
Мне нужен не один большой файл для чтения. Я свой дневник подряд не читаю, как книжку. Есть у меня, конечно, элемент самолюбования. Бывает, что перечитываю свои посты. Но не подряд.
Гораздо чаще я ищу в своём дневнике информацию, которая мне нужна, но которую я забыл. Для этого я использую: 1) полнотекстовый поиск 2) переход по тегам 3) календарь 4) перекрёстные ссылки между постами. Форматы электронных книг, которые ты предлагаешь, для этого не предназначены. Максимально похоже на то что надо -- это программы для ведения заметок. Этих программ великое множество. Я уверен, что среди них есть лучшие, чем Обсидиан. Но я пока таких не нашёл. Кстати, ещё подходят вики-движки.
Теперь реальные примеры, когда мне нужен был поиск.
1. Есть программа -- procdump. Она делает слепок памяти программы во время работы или во время падения. Этот слепок можно открыть вижуал студией и посмотреть, что там случилось. Мне она нужна по работе нечасто. Может, раз в полгода. Я всё время забываю, с какими ключами её запускать. Можно начать гуглить. Можно запустить её с --help и начать читать. Но вместо этого я переключаюсь на свой дневник в обсидиане, жму Ctrl+Shift+F и пишу procdump.
Один щелчок мыши и я вижу абзац:
В командной строке пишите ProcDump.exe -ma image.exe, где image.exe -- имя программы, дамп которой создаёте (желательно запускать отладочную версию). Есть ещё [много параметров](technet.microsoft.com/en-us/sysinternals/dd9969...) -- можно делать дампы при зависании (-h), при превышении использования памяти/процессора (-m, -c), при падении программы (-e) и пр. Данная выше команда сделает дамп при её (команды) исполнении.
Всё, я готов работать.
2. Обсуждали в чате тест Тьюринга и ИИ. Я вспомнил историю, касающуюся программы "психотерапевт". Суть истории была в том, что даже простейшая программа на if-ах может обмануть собеседника, и никакой ИИ для этого не нужен. Меня это когда-то так впечатлило, что я даже перевёл эту историю на русский. Надо её показать собеседникам. А где она? Где-то в дневнике. Поиск я применить не могу, потому что я не помню, как эта программа называлась.
Я открываю дневник по тегу "переводы" и вспоминаю, в каком посте была эта история. Она была в отзыве на книжку Deep C Secrets.
diary.ru/~zHz00/p215960758_peter-linden-expert-...
Вуаля! Кстати, программа называлась Элиза.
Да, это можно было сделать прямо с сайта, но дольше.
3. Мой дневник это не только полезная для меня информация, но и архив. Не всё я описываю из своей жизни, но даже по описанному могу восстановить многое. Что-то могу и вспомнить, читая. Что-то написано прямо. Например, а когда меня во время прошлого перелома перевели с гипса на ортез?
Открываю календарь, веду мышкой по постам начиная с 15 мая 2022 и вижу:
Aoi Sora no Camus
2022-06-02, 04:18
Мне заменили гипс на бандаж, и теперь я могу печатать двумя руками!
Это длинный текст об игре -- визуальной новелле.
Ага, значит уже через 2 недели после перелома я ходил в ортезе. Но постойте, что написано в предыдущем посте?
Привезли товар с доставкой. Курьер называет сумму, и кажется мне, что она неправильная.
В посте не написано, что был за товар. Но я помню. Это как раз и был ортез. Значит, меня перевели на ортез по крайней мере на день раньше, чем я про это написал.
Опять-таки, с дайари это тоже можно выполнять, но дайари не показывает текстов постов в календаре при наведении мышкой. Только заголовки. Надо всё прокликивать.
***
>>кстати, в некоторых из этих форматов (не помню в каких) картинки хранятся в текстовом виде (base64) прямо внутри текста
Да, но в бейс64 оверхед 33%, что довольно значительно при общем размере дневника в 400 метров!
14.05.2024 в 10:58
поиск есть везде (открыл - нажал Ctrl-F в любой читалке)
если всё разбито на мелкие файлики, то ищешь grep-ом
ну, поиск по календарю, возможно, требует приготовленного календаря, а всё остальное - это обычной поиск по словам
хотя, если дата поста присутствует в имени файла, то и по календарю можно искать тем же grep-ом в любом формате данных (ну, кроме, может быть, pdf, текст внутри него бывает сжат или перекодирован в не-ASCII кодировку)
так что пока не вижу преимуществ по сравнению с самым тупым способом хранения (в виде пачки html-файлов и использования браузера для их чтения)
14.05.2024 в 11:02
свистелка-перделка )))
но если она полезна, то ок
я бы просто вывел текст всех постов в нужном диапазоне дат одной командой в командной строке
14.05.2024 в 11:07
чего из этого нет в html?
в каком книжном формате нет гипер-ссылок?
14.05.2024 в 11:54