Skip to content

Latest commit

 

History

History
187 lines (104 loc) · 12.5 KB

RU_README.md

File metadata and controls

187 lines (104 loc) · 12.5 KB

Космический Телеграм

Данный проект содержит несколько скриптов для скачивания изображений с Astronomy Picture of the Day (APOD) NASA, Earth Polychromatic Imaging Camera (EPIC) NASA и последних запусков SpaceX. Скачанные изображения можно опубликовать в канале Telegram по требованию или с определенной периодичностью. Утилитарный скрипт common_scripts.py содержит вспомогательные функции для создания папок и получения расширения файлов.

Установка

  1. Получите свой ключ API НАСА на https://api.nasa.gov/.
  2. Получите свой ключ API Telegram, создав нового бота с помощью BotFather.
  3. Склонируйте репозиторий и создайте файл .env в корневой директории проекта со следующим содержимым:

NASA_API_KEY=your_nasa_api_key
TELEGRAM_API_KEY=your_telegram_api_key
TELEGRAM_CHANNEL_ID

  1. Python3 должен быть установлен на вашем компьютере. Затем используйте pip (или pip3, если есть конфликт с Python2) для установки зависимостей:

pip install -r requirements.txt

Использование

1. Скрипт fetch_nasa_apod.py

Данный скрипт скачивает изображения с 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 изображений.

2. Скрипт fetch_nasa_epic.py

Данный скрипт скачивает изображения с 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

Аргументы

Данный скрипт не принимает аргументов командной строки.

3. Скрипт fetch_spacex_images.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, для которого необходимо загрузить изображения. Если не указан, будут загружены изображения последнего запуска.

4. Скрипт fetch_all_images.py

Данный скрипт объединяет функциональность скриптов 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.

5. Скрипт telegram_bot.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: (необязательный) Имя изображения для публикации. Если не указано, будет опубликовано случайное изображение из папки.

6. Скрипт autopublish_telegram_bot.py

Этот скрипт публикует изображения в указанном канале 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

7. Скрипт common_scripts.py

Этот скрипт содержит вспомогательные функции, которые используются в нескольких других скриптах. Он не предназначен для прямого запуска, но импортируется и используется другими скриптами.

Функции

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.