Анонс
Написал скрипт для автопостинга выборок из 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.
Для дальнейшего развития есть мысли на предмет приоритетов по ротации мест и авторов наблюдений, но пока ничего конкретного сказать нельзя.