
Анонс
Написал скрипт для автопостинга выборок из iNaturalist в tg-каналы. Скрипт делает выборку по произвольно сконфигурированным параметрам (которые, разумеется, должны поддерживаться iNaturalist API), затем берет случайное наблюдение, постит его, а остальные складывает в пул, который будет задействован, если свежие кончатся. Это если коротко.
Более подробно, как это все работает, а главное — как настраивается, я описал в README проекта inat-get/inat-channel. В том числе и на русском. Здесь пара моментов:
-
Наблюдения не дублируются.
-
Можно включить режим, когда и таксоны не будут дублироваться, с ограниченным, правда, сроком. Но его можно выставить произвольно большим.
-
Форматирование делается ERB-шаблоном, т.е. максимально гибко.
-
Скрипт прекрасно работает на GitHub Actions, запускаясь по расписанию. Для контроля неповторямости необходимо настроить обратный пуш, чтобы данные, которые хранятся в JSON-файлах, сохранялись в репозитории между сеансами.
-
Используется iNaturalist API v2, которое находится в ранней бете и может поломаться. Однако, на первой версии пришлось бы вытягивать в десятки, если не в сотни раз бо́льшие объемы данных, что малоприемлемо.
Примеры
На реальных примерах работу скрипта можно посмотреть на двух моих каналах:
-
Во-первых, я оживил канал «Природа Урала — наблюдения с iNaturalist». Там, напомню, наблюдения со всего Урала и прилегающих районов — от Оренбуржья до ЯНАО. Ни один регион не входит в выборку целиком, только отдельные районы, относящиеся непосредственно к Уральским горам, или прилегающие. В канале выходит до четырех постов в день по разным группам таксонов.
Все настройки и workflow для Actions доступны в репозитории inat-get/channel-ural.
-
Во-вторых, для проекта «Биоразнообразие районов Свердловской области» тоже завел канал, под немудреным названием «Биоразнообразие Свердловской области в TG». Там один пост в день (да и выборка поменьше).
Все его настройки и workflow также доступны на GitHub — inat-get/channel-sverdlobl.
Подписывайтесь, ставьте лайки, комментируйте… Отелеграмливайте свои проекты. В общем, велкам.
Замечания
Из разряда «сегодня я узнал, что…»
- iNaturalist API v2
-
Вторая версия API позволяет выбирать получаемые поля. С учетом того, что поля сами по себе зачастую составные и объемные, это очень важный момент.
У меня есть смутное ощущение, что отвечает вторая версия чуть медленнее, чем первая (в смысле пинга), но а) я могу ошибаться — это лишь ощущение, б) не сказать, чтоб задержка была прям большой, и в) когда эта версия выйдет из беты и станет основной, думаю, на нее выделят мощности.
- Schedule в GitHub Actions
-
Это вполне документировано, что нет никаких гарантий своевременного запуска. Задержка зависит от текущей загрузки серверов и всегда разная. И она может быть реально большой — до часа у меня пока ни разу не доходило, но 55 минут — вполне.
- Запланированные сообщения
-
Через Telegram Bot API нельзя создать запланированное сообщение. Это можно сделать только через MTProto API, но там нужно использовать человеческий аккаунт, а не ботовый… Так что придется смириться с тем, что посты выходят не по точному расписанию, поскольку рисковать своим собственным акком я не собираюсь.
- Эмодзи
-
В сообщениях Telegram нельзя вставлять произвольные иконки, переключать шрифты и т.д. Можно использовать эмодзи, но они выглядят, на мой взгляд, аляповато. Так что, хотя я их использовал в шаблоне по умолчанию для независимости от языка, но в своих каналах из шаблона убрал. Как выглядит пост, разукрашенный эмодзи, можно посмотреть тут — https://t.me/urals_nature/1541 — это один из тех постов, которые были сделаны в процессе отладки/наладки.
Текущая версия и планы
Сейчас версия 0.9.0, которую я бы охарактеризовал как довольно уверенную бету.
Думаю неторопливо (очень неторопливо) сделать тесты и документацию, упорядочить нотификацию админа (в случае сбоев или исчерпания пула), после чего зафиксировать версию 1.0.
Для дальнейшего развития есть мысли на предмет приоритетов по ротации мест и авторов наблюдений, но пока ничего конкретного сказать нельзя.