Дак еще и с описанием😁 я не мог такое игнорировать, и решил что подписчики должны тоже видеть эту красоту, но я столкнулся с несколькими проблемами:
1 - Видео, это просто ссылка на Youtube, а я не хочу чтобы в телеграмме для просмотра видео подписчики шли в Youtube, и так много ссылок, зачем еще одна.
2 - Если я буду добавлять описание + ссылку на Youtube будет выглядеть не так красиво (нуу не так как я задумал то есть😁) что мне тоже не очень понравилось
3 - Мне нужно было быстрое решение, но быстрых решений я пока не видел, и понимал что нужно более детально не только изучить документацию ну и поиграться с кодом, чтобы сделать все красиво.
По этому что? я решил сделать чуть более туго, но безотказно (но это не точно)
Получаем Json , понимаем что там ссылка на видео в Youtube, в итоге просто скачиваем его, формируем пост с описанием, потом отправляем в телегу этот видос, щас расскажу как:
1 - Как скачать видео с Youtube (я по прежнему использую Python):
Есть классная библиотека - pytube, в итогу нам от NASA API в поле url приходитссылка на ютуб видео, и мы его просто подставляем куда нужно:
первая строка это импорт библиотеки
url - думаю вы поняли, сюда ссылка на видео
dest - путь к директории куда будет сохранено видео
в четвертой строке, мы скармливаем библиотеке ссылку на видео, в streams.get_highest_resolution() мы выбираем самое лучшее качество, а download скачивает нам видео в нужную нам директорию
Потом я захотел чтобы я мог эти видео отдельно скачивать, тут мне помог nginx, по факту благодаря конфигурации примерно такого вида:
Можно обратится к серверу по доменному имени + имени видео, и будет возможность его скачать с так сказать собственного хранилища (нуу, такая у меня хотелка была)
Усе? нет, нужно же видео загружать в телеграм еще, и тут мне помогла моя хотелка )
на 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