Как скачать видео aiogram?
Имею хэндлер:
@dp.message_handler(content_types=["video"])
Как через него сохранить видео, которое поступит на вход?
Ответы (1 шт):
Автор решения: Ste3pze
→ Ссылка
Я использую такой подход
@dp.message_handler(content_types=["video"])
async def download_video(message: types.Message):
file_id = message.video.file_id # Get file id
file = await bot.get_file(file_id) # Get file path
await bot.download_file(file.file_path, "video.mp4") # Download video and save output in file "video.mp4"
Сначала мы получаем id видео файла, после получаем путь к файлу, и уже потом сохраняем результат в файл video.mp4
Важно знать что формат MP4 является стандартным для телеграма, в других форматах лучше не пробовать сохранять.
Если вы не хотите перезаписывать файл после каждой загрузки видео, попробуйте этот код, есть решения элегантнее, но это в самый раз на скорую руку.
@dp.message_handler(content_types=["video"])
async def download_video(message: types.Message):
file_id = message.video.file_id # Get file id
file = await bot.get_file(file_id) # Get file path
video_number = 0 # Number video file
while(os.path.isfile(f"video{video_number}.mp4")): # If the file exists, add one to the number
video_number += 1
await bot.download_file(file.file_path, f"video{video_number}.mp4") # Download video and save output in file "video.mp4"
А привязать конкретный видеофайл к конкретному пользователю вам поможет база данных. В ней вы можете связать id файла, с пользовательским id. И когда необходимо взаимодействовать с этими данными.