Данный проект содержит несколько скриптов для скачивания изображений с Astronomy Picture of the Day (APOD) NASA, Earth Polychromatic Imaging Camera (EPIC) NASA и последних запусков SpaceX. Скачанные изображения можно опубликовать в канале Telegram по требованию или с определенной периодичностью. Утилитарный скрипт common_scripts.py
содержит вспомогательные функции для создания папок и получения расширения файлов.
- Получите свой ключ API НАСА на https://api.nasa.gov/.
- Получите свой ключ API Telegram, создав нового бота с помощью BotFather.
- Склонируйте репозиторий и создайте файл
.env
в корневой директории проекта со следующим содержимым:
NASA_API_KEY=your_nasa_api_key
TELEGRAM_API_KEY=your_telegram_api_key
TELEGRAM_CHANNEL_ID
- Python3 должен быть установлен на вашем компьютере. Затем используйте
pip
(илиpip3
, если есть конфликт с Python2) для установки зависимостей:
pip install -r requirements.txt
Данный скрипт скачивает изображения с Astronomy Picture of the Day (APOD) NASA и сохраняет их в локальную папку.
fetch_nasa_apod(folder_path, nasa_token, count=5)
: Основная функция скрипта, принимающая следующие параметры:folder_path
: Объект Path, где будут сохранены скачанные изображения.nasa_token
: Ваш ключ API NASA.count
: Количество изображений для загрузки (по умолчанию: 5). Скрипт загружает случайную выборку изображений, если количество не указано.
Скрипт можно запустить из консоли с помощью следующей команды:
python fetch_nasa_apod.py [--count COUNT]
--count COUNT:
(необязательный) Количество изображений для загрузки. По умолчанию загружается 5 изображений.
Данный скрипт скачивает изображения с Earth Polychromatic Imaging Camera (EPIC) NASA и сохраняет их в локальную папку.
fetch_nasa_epic(folder_path, nasa_token)
: Основная функция скрипта, принимающая следующие параметры:folder_path
: Объект Path, где будут сохранены скачанные изображения.nasa_token
: Ваш ключ API NASA.
Скрипт можно запустить из консоли с помощью следующей команды:
python fetch_nasa_epic.py
Данный скрипт не принимает аргументов командной строки.
Данный скрипт скачивает изображения, связанные с последним запуском SpaceX или указанным запуском, и сохраняет их в локальную папку.
fetch_spacex_images(folder_path, launch_id)
: Основная функция скрипта, принимающая следующие параметры:folder_path
: Объект Path, где будут сохранены скачанные изображения.launch_id
: (необязательный) Идентификатор запуска SpaceX, для которого необходимо загрузить изображения. Если не указан, будут загружены изображения последнего запуска.
Скрипт можно запустить из консоли с помощью следующей команды:
python fetch_spacex_images.py [--launch_id LAUNCH_ID]
--launch_id LAUNCH_ID
: (необязательный) Идентификатор запуска SpaceX, для которого необходимо загрузить изображения. Если не указан, будут загружены изображения последнего запуска.
Данный скрипт объединяет функциональность скриптов fetch_spacex_images.py
, fetch_nasa_apod.py
и fetch_nasa_epic.py
. Он загружает изображения от SpaceX, NASA APOD и NASA EPIC и сохраняет их в локальную папку.
Скрипт можно запустить из консоли с помощью следующей команды:
python fetch_all_images.py [--launch_id LAUNCH_ID] [--count COUNT]
--launch_id LAUNCH_ID
: (необязательный) Идентификатор запуска SpaceX, для которого необходимо загрузить изображения. Если не указан, будут загружены изображения последнего запуска.--count COUNT
: (необязательный) Количество изображений NASA APOD для загрузки. Если не указано, будет использоваться значение по умолчанию - 5.
Данный скрипт импортирует и использует функции из отдельных скриптов следующим образом:
fetch_spacex_images(folder_path, args.launch_id)
из скриптаfetch_spacex_images.py
.fetch_nasa_apod(folder_path, nasa_token, args.count)
из скриптаfetch_nasa_apod.py
.fetch_nasa_epic(folder_path, nasa_token)
из скриптаfetch_nasa_epic.py
.
Кроме того, для создания папки для сохранения загруженных изображений он использует функцию create_folder
из скрипта common_scripts.py
.
Этот скрипт публикует одно изображение в указанном канале Telegram. Изображение может быть выбрано случайным образом из папки или указано по имени.
publish_image(api_key, channel_id, folder_name, image_name)
: Основная функция скрипта, принимающая следующие параметры:api_key
: Ваш ключ API Telegram.channel_id
: Уникальный идентификатор канала Telegram, в который будет опубликовано изображение.folder_name
: Имя папки, содержащей изображения.image_name
: (необязательный) Имя изображения для публикации. Если не указано, будет опубликовано случайное изображение из папки.
Скрипт можно запустить из консоли с помощью следующей команды:
python telegram-bot.py [--folder_name FOLDER_NAME] [--image_name IMAGE_NAME]
--folder_name FOLDER_NAME
: (необязательный) Имя папки, содержащей изображения. Если не указано, будет использоваться имя папки по умолчанию - 'images'.--image_name IMAGE_NAME
: (необязательный) Имя изображения для публикации. Если не указано, будет опубликовано случайное изображение из папки.
Этот скрипт публикует изображения в указанном канале Telegram с определенными интервалами. Изображения выбираются случайным образом из папки и публикуются с указанной частотой.
publish_images_at_intervals(api_key, channel_id, hours_interval, folder_name)
: Основная функция скрипта, принимающая следующие параметры:api_key
: Ваш ключ API Telegram.channel_id
: Уникальный идентификатор канала Telegram, в который будут опубликованы изображения.hours_interval
: Частота публикации в часах.folder_name
: Имя папки, содержащей изображения.
Скрипт можно запустить из консоли с помощью следующей команды:
python autopublish_telegram_bot.py [--hours_interval HOURS_INTERVAL] [--folder_name FOLDER_NAME]
--hours_interval HOURS_INTERVAL
: (необязательный) Частота публикации в часах. Если не указано, будет использоваться значение по умолчанию - 4 часа.- `--folder_name
Этот скрипт содержит вспомогательные функции, которые используются в нескольких других скриптах. Он не предназначен для прямого запуска, но импортируется и используется другими скриптами.
download_and_save_file(url, file_path, params=None)
: Отправляет GET-запрос на указанный URL (с необязательными параметрами), проверяет статус ответа и, если он успешный, загружает содержимое и сохраняет его в файл по указанному пути. Если статус ответа указывает на ошибку, возникает исключение HTTPError.
-
url
: URL для GET-запроса. -
file_path
: Путь, по которому будет сохранено содержимое ответа. -
params
: Словарь параметров, которые будут добавлены к GET-запросу (необязательно). -
get_file_extension(image_url)
: Извлекает и возвращает расширение файла из заданного URL изображения.image_url
: URL изображения.
Функции этого скрипта можно импортировать в другие скрипты и использовать по мере необходимости. Например, чтобы импортировать и использовать функцию download_and_save_image
, вы можете добавить следующую строку в начало другого скрипта:
from common_scripts import download_and_save_image
Затем вы можете использовать функцию download_and_save_image
в своем скрипте так:
download_and_save_file(url, file_path, params=None)
Поскольку common_scripts.py
является набором вспомогательных функций, не предусмотрены аргументы командной строки или конкретные инструкции для запуска его напрямую.
Код написан в образовательных целях на онлайн-курсе для веб-разработчиков dvmn.org.