У меня есть код, который создает миниатюру для видео по мере их загрузки - это выглядит так:
views.py метод публикации:
if form.instance.thumbnail == 'images/clearpath_logo/Logo.jpg':
thumb_title = form.instance.title.replace(" ", "")
in_path = str(settings.MEDIA_ROOT) + "/" + str(form.instance.video_file)
out_path = str(settings.MEDIA_ROOT) + "/images/" + thumb_title + ".png"
if create_thumbnail(in_path, out_path):
form.instance.thumbnail = "images/" + thumb_title + ".png"
где create_thumbnail
- это вспомогательная функция. Она выглядит так:
def create_thumbnail(input_path, output_path):
"""
Save first frame of video for use as video thumbnail.
:param input_path: video input path
:param output_path: image output path
:return: Boolean
"""
cap = cv2.VideoCapture(input_path)
ret, frame = cap.read()
if ret:
return cv2.imwrite(output_path, frame)
else:
pass
Моя главная задача - удалить settings.MEDIA_ROOT
из каждого пути к файлу. Как можно избежать ручного ввода путей к файлам как таковых? Или есть способ, которым я могу сделать метод формы из вспомогательной функции и вызвать URL-адрес экземпляра формы напрямую? Я хочу очистить этот код.