Как на видеохостинге на Python, Flask сделать загрузку в любых форматах

У меня есть видеохостинг. В форме публикации видео можно опубликовать видео только в формате mp4, а обложку только в jpg. Хотелось бы как-нибудь расширить количество поддерживаемых форматов, но я так ничего и не надумал, как это сделать.

@app.route('/add_video', methods=['GET', 'POST'])
def add_video():
    if not current_user.is_authenticated:
        return forbidden('')
    form = VideoForm()
    params = {
        'title': 'Добавление видео',
        'authenticated': current_user.is_authenticated,
        'current_user': current_user
    }
    if form.validate_on_submit():
        video_file = request.files['video']
        if not video_file.filename.lower().endswith('.mp4'):
            return render_template(
                'add_video.html',
                message='Данный формат видео не поддерживается. '
                    'Пожалуйста, загрузите видео в формате mp4.',
                form=form, 
                **params
            )
        preview_file = request.files['preview']
        if not preview_file.filename.lower().endswith('.jpg'):
            return render_template(
                'add_video.html',
                message='Данный формат обложки не поддерживается. '
                    'Пожалуйста, загрузите изображение в формате jpg.',
                form=form, 
                **params
            )
        video = Video()
        video.title = form.title.data
        video.description = '<br>'.join(form.description.data.split('\n'))
        video.author = current_user.id
        db_sess.add(video)
        db_sess.commit()
        video_file.save(os.path.join('static/vid', f'{video.id}.mp4'))
        preview_file.save(os.path.join('static/pre', f'{video.id}.jpg'))
        with Image.open(f'static/pre/{video.id}.jpg') as preview_file:
            width, height = preview_file.size
            if width >= height:
                new_width = height * 16 // 9
                delta = (width - new_width) // 2
                preview_file = preview_file.crop(
                    (delta, 0, new_width + delta, height)
                )
            else:
                new_height = width * 9 // 16
                delta = (height - new_height) // 2
                preview_file = preview_file.crop(
                    (0, delta, width, new_height + delta)
                )
            preview_file.save(f'static/pre/{video.id}.jpg')
        return redirect('/')
    return render_template('add_video.html', form=form, **params)

Ответы (0 шт):