Телеграм-бот для автоматической публикации фотографий космоса от NASA и SpaceX в выбранном телеграм-канале.
Проект состоит из двух основных частей:
- Парсеры фотографий на базе API NASA, SpaceX
- Телеграм-бот
Можно использовать в работе только одну из них или обе.
Первым делом, скачайте код:
git clone https://github.com/pas-zhukov/space-telegram.git
Для работы скриптов понадобятся библиотеки, перечисленные в reqirements.txt
.
Их можно установить при помощи pip:
pip install -r requirements.txt
Для работы скриптов рядом с ними необходимо положить файл .env
со следующими полями:
Обязательные переменные:
IMAGES_PATH
- путь к папке с изображениями. Туда будут скачиваться новые, и оттуда же будут браться файлы для постинга в канале. Например,images
.
Переменные, необходимые для работы парсеров:
NASA_API_KEY
- ключ API NASA. Получить можно здесь.
Переменные, необходимые для работы Телеграм-бота:
TG_BOT_TOKEN
- токен Вашего Телеграм-бота. Как создать бота и получить токен.TG_CHANNEL_NAME
- ссылка на Ваш канал, например@spacephotocards
.
Данный скрипт загружает фотографии с запуска ракеты SpaceX. По умолчанию скачивает фотографии с последнего запуска, на котором делались фотографии:
python fetch_spacex_images.py
При необходимости, можно скачать фотографии конкретного запуска, используя ID запуска:
python fetch_spacex_images.py -id <ID запуска>
Например:
python fetch_spacex_images.py -id 5eb87d42ffd86e000604b384
Парсеры Astronomy Picture of the Day (APOD) и Earth Polychromatic Imaging Camera (EPIC) работают аналогично друг другу, по умолчанию загружают по 10 фотографий.
APOD Parser:
python fetch_nasa_apod_images.py
EPIC Parser:
python fetch_nasa_epic_images.py
Каждый из них поддерживает возможность указать количество изображений для загрузки.
APOD Parser:
python fetch_nasa_apod_images.py -c <кол-во изображений>
EPIC Parser:
python fetch_nasa_epic_images.py -c <кол-во изображений>
Например, такой вызов загрузит 5 EPIC фотографий:
python fetch_nasa_epic_images.py -c 5
Чтобы опубликовать конкретную картинку, можно воспользоваться вспомогательным скриптом:
python space_bot_publish.py -p <путь к файлу с картинкой>
Если не указать аргумент -r
, скрипт опубликует случайную картинку из папки, указанной в переменной окружения IMAGES_PATH
.
Бот публикует изображения с заданной периодичностью.
Перед запуском необходимо скачать картинки (парсерами или вручную),
они должны быть размещены в директории, указанной в переменной окружения IMAGES_PATH
.
- Создать бота, поместить токен в
.env
(см. инструкцию выше). - Создать Telgram-канал, сделать бота администратором в этом канале. Поместить имя канала в
.env
(см. инструкцию выше). - Запустить бота командой:
python space_autopublishing.py -d <периодичность публикаций в часах>
Если не указать параметр -d
, то по умолчанию бот будет постить фотографии каждые 4 часа:
python space_autopublishing.py
Если фотографии в папке закончатся, бот перемешает их и начнёт публиковать заново с той же периодичностью.
Код написан в учебных целях.