90

Особенности API от NASA

Ранее я писал статью А вы знали что у NASA есть API?, где я рассказал как создал канал, куда ежедневно и автоматически публикуются картина дня от NASA с описанием на русском. На мое удивление подписалось около 300 человек чему я рад,  все работало как нужно, но cегодня я проснулся и публикации не увидел, подумал "что не так?"


Оказалось, что Json который NASA возвращает динамический, и мой скрипт из-за отсутствия определенного поля навернулся😁 пофиксить не проблема, но мне стало интересно, а что NASA мне послал? а оказалось что вернулось красивое видео на несколько секунд:

Дак еще и с описанием😁 я не мог такое игнорировать, и решил что подписчики должны тоже видеть эту красоту, но я столкнулся с несколькими проблемами:


1 - Видео, это просто ссылка на Youtube, а я не хочу чтобы в телеграмме для просмотра видео подписчики шли в Youtube, и так много ссылок, зачем еще одна.


2 - Если я буду добавлять описание + ссылку на Youtube будет выглядеть не так красиво (нуу не так как я задумал то есть😁) что мне тоже не очень понравилось


3 - Мне нужно было быстрое решение, но быстрых решений я пока не видел, и понимал что нужно более детально не только изучить документацию ну и поиграться с кодом, чтобы сделать все красиво.


По этому что? я решил сделать чуть более туго, но безотказно (но это не точно)


Получаем Json , понимаем что там ссылка на видео в Youtube, в итоге просто скачиваем его, формируем пост с описанием, потом отправляем в телегу этот видос, щас расскажу как:


1 - Как скачать видео с Youtube (я по прежнему использую Python):

Есть классная библиотека - pytube, в итогу нам от NASA  API в поле url приходитссылка на ютуб видео, и мы его просто подставляем куда нужно:

Особенности API от NASA Telegram, IT, Интернет, Программирование, Программист, NASA, Космос, Наука, Астрономия, Космонавтика, Планета, Телескоп Хаббл, Научпоп, Видео, Без звука, Длиннопост

первая строка это импорт библиотеки


url - думаю вы поняли, сюда ссылка на видео
dest - путь к директории куда будет сохранено видео
в четвертой строке, мы скармливаем библиотеке ссылку на видео, в streams.get_highest_resolution() мы выбираем самое лучшее качество, а download скачивает нам видео в нужную нам директорию

Потом я захотел чтобы я мог эти видео отдельно скачивать, тут мне помог nginx, по факту благодаря конфигурации примерно такого вида:

Особенности API от NASA Telegram, IT, Интернет, Программирование, Программист, NASA, Космос, Наука, Астрономия, Космонавтика, Планета, Телескоп Хаббл, Научпоп, Видео, Без звука, Длиннопост

Можно обратится к серверу по доменному имени + имени видео, и будет возможность его скачать с так сказать собственного хранилища (нуу, такая у меня хотелка была)


Усе? нет, нужно же видео загружать в телеграм еще, и тут мне помогла моя хотелка )


на Python используя библиотеку requests пишем такую тему:


requests.post(f'https://api.telegram.org/bot<Токен вашего бота>/sendVideo?chat_id=<Ид канала>&caption=<Сообщение для видео>&video=<А ТУТ ПРОСТО ССЫЛКА НА ВИДЕО ИЗ ВАШЕГО "ХРАНИЛИЩА">&parse_mode=HTML')

что тут происходит можете читануть в предыдущей статье (там в начале ссылка) из нового тут вместо sendPhoto sendVideo, ну и добавлен параметр video, куда мы просто передаем ссылку на видео с нашего хранилища (если что, ссылку на ютуб туда передать нельзя, телеграм вас пошлет куда подальше) 


и вуаля, в итоге что у нас есть:

1 - Если получили ссылку на видео в ютуб, cкачиваем видео наше хранилище.


2 - Отправляем в телеграм это видео, указывая ему ссылку на наше видео с нашего хранилища + описание.


Done😁


Подводные камни что приходят сразу на ум:

1 - Если NASA API вернет видео больше 50МБ, API телеги нас пошлет

2 - Когда сохраняете видео, лучше дополнительным параметром в методе download(dest) измените имя загружаемого файла на какое-то свое даже рандомное, ибо кто знает как там они его назовут, вдруг это навернет вам сервер или поломает скрипт 😂.


Ну и шаг с хранилищем можете опустить, это больше мне для себя любимого.


Мой канал: https://t.me/daily_nasa

если что не пугайтесь, там теперь льются еще данные из hubblesite.org

Исследователи космоса

19K постов48.8K подписчиков

Правила сообщества

Какие тут могут быть правила, кроме правил установленных самим пикабу :)