ИМ
Игорь Максимов9 декабря 2018 г. 13:55
a bytes-like object is required, not 'str' в videokit
Доброго времени суток. Нашел приложение для конвертации видео + celery что очень радует. Не радует только то что оно отказывается работать под python3
Трейсбек прикладываю:
File "/home/django/venv/example/lib/python3.5/site-packages/django/core/handlers/exception.py", line 39, in inner response = get_response(request) File "/home/django/venv/example/lib/python3.5/site-packages/django/core/handlers/base.py", line 187, in _get_response response = self.process_exception_by_middleware(e, request) File "/home/django/venv/example/lib/python3.5/site-packages/django/core/handlers/base.py", line 185, in _get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) File "/home/django/example/media/views.py", line 32, in item_create media_item.save() File "/home/django/venv/example/lib/python3.5/site-packages/django/db/models/base.py", line 796, in save force_update=force_update, update_fields=update_fields) File "/home/django/venv/example/lib/python3.5/site-packages/django/db/models/base.py", line 824, in save_base updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields) File "/home/django/venv/example/lib/python3.5/site-packages/django/db/models/base.py", line 908, in _save_table result = self._do_insert(cls._base_manager, using, fields, update_pk, raw) File "/home/django/venv/example/lib/python3.5/site-packages/django/db/models/base.py", line 947, in _do_insert using=using, raw=raw) File "/home/django/venv/example/lib/python3.5/site-packages/django/db/models/manager.py", line 85, in manager_method return getattr(self.get_queryset(), name)(*args, **kwargs) File "/home/django/venv/example/lib/python3.5/site-packages/django/db/models/query.py", line 1045, in _insert return query.get_compiler(using=using).execute_sql(return_id) File "/home/django/venv/example/lib/python3.5/site-packages/django/db/models/sql/compiler.py", line 1053, in execute_sql for sql, params in self.as_sql(): File "/home/django/venv/example/lib/python3.5/site-packages/django/db/models/sql/compiler.py", line 1006, in as_sql for obj in self.query.objs File "/home/django/venv/example/lib/python3.5/site-packages/django/db/models/sql/compiler.py", line 1006, in <listcomp> for obj in self.query.objs File "/home/django/venv/example/lib/python3.5/site-packages/django/db/models/sql/compiler.py", line 1005, in <listcomp> [self.prepare_value(field, self.pre_save_val(field, obj)) for field in fields] File "/home/django/venv/example/lib/python3.5/site-packages/django/db/models/sql/compiler.py", line 955, in pre_save_val return field.pre_save(obj, add=True) File "/home/django/venv/example/lib/python3.5/site-packages/django/db/models/fields/files.py", line 292, in pre_save file.save(file.name, file, save=False) File "/home/django/venv/example/lib/python3.5/site-packages/django/db/models/fields/files.py", line 92, in save setattr(self.instance, self.field.name, self.name) File "/home/django/example/videokit/fields.py", line 198, in __set__ self.field.update_dimension_fields(instance, force = True) File "/home/django/example/videokit/models.py", line 119, in update_dimension_fields width = file.width File "/home/django/example/videokit/fields.py", line 133, in _get_width return self._get_video_dimensions()[0] File "/home/django/example/videokit/fields.py", line 164, in _get_video_dimensions self._dimensions_cache = get_video_dimensions(self) File "/home/django/example/videokit/fields.py", line 25, in get_video_dimensions width = stdout.strip(' \t\n\r') TypeError: a bytes-like object is required, not 'str' [09/Dec/2018 18:34:05] "POST /item_create/ HTTP/1.1" 500 151897
И функцию в которой ошибка:
from django.conf import settings from django.core.files import File from django.db.models.fields.files import FieldFile from django.db.models.fields.files import FileDescriptor from datetime import datetime import hashlib import os.path import subprocess from videokit.apps import VideokitConfig from videokit.tasks import generate_video def get_video_dimensions(file): path = os.path.join(settings.MEDIA_ROOT, file.name) if os.path.isfile(path): try: process = subprocess.Popen( ['mediainfo', '--Inform=Video;%Width%', path], stdout = subprocess.PIPE, stderr = subprocess.PIPE) stdout, stderr = process.communicate() if process.wait() == 0: width = int(stdout.strip(' \t\n\r')) else: return (0,0) process = subprocess.Popen( ['mediainfo', '--Inform=Video;%Height%', path], stdout = subprocess.PIPE, stderr = subprocess.PIPE) stdout, stderr = process.communicate() if process.wait() == 0: height = int(stdout.strip(' \t\n\r')) else: return (None, None) return (width, height) except OSError: pass return (None, None)
Очень надеюсь на вашу помощь. Заранее благодарен.
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.Вам это нравится? Поделитесь в социальных сетях!
Комментарии
Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
Пожалуйста, авторизуйтесь или зарегистрируйтесь
d
- dsfs
- 26 апреля 2024 г. 14:56
C++ - Тест 004. Указатели, Массивы и Циклы
- Результат:80баллов,
- Очки рейтинга4
d
- dsfs
- 26 апреля 2024 г. 14:35
C++ - Тест 001. Первая программа и типы данных
- Результат:73баллов,
- Очки рейтинга1
Последние комментарии
Qt Linux - Урок 001. Автозапуск Qt приложения под Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
АК
Qt WinAPI - Урок 007. Работаем с ICMP Ping в Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
Анатолий Кононенко5 февраля 2024 г. 12:50
EVA25 декабря 2023 г. 21:30
Boost - статическая линковка в CMake проекте под Windows Сделал всё по-как у вас, но выдаёт ошибку [build] LINK : fatal error LNK1104: не удается открыть файл "libboost_locale-vc142-mt-gd-x64-1_74.lib" Хоть убей, не могу понять в чём дел…
Qt/C++ - Урок 056. Подключение библиотеки Boost в Qt для компиляторов MinGW и MSVC Для решения твой проблемы добавь в файл .pro строчку "LIBS += -lws2_32" она решит проблему , лично мне помогло.
Сейчас обсуждают на форуме
DA
Unlock Your Aesthetic Potential: Explore MSC in Facial Aesthetics and Cosmetology in India Embark on a transformative journey with an msc in facial aesthetics and cosmetology in india . Delve into the intricate world of beauty and rejuvenation, guided by expert faculty and …
Dr Gangil Academics20 апреля 2024 г. 17:45
Мобильное приложение на C++Qt и бэкенд к нему на Django Rest Framework Евгений, добрый день! Такой вопрос. Верно ли следующее утверждение: Любое Android-приложение, написанное на Java/Kotlin чисто теоретически (пусть и с большими трудностями) можно написать и на C+…
Павел Дорофеев14 апреля 2024 г. 12:35
Вернуть старое поведение QComboBox, не менять индекс при resetModel Добрый день! У нас много проектов в которых используется QComboBox, в версии 5.5.1, когда модель испускает сигнал resetModel, currentIndex не менялся. В версии 5.15 при resetModel происходит try…
Добрый день!
Вам не нужно было сначала считать это всё из stdout?
Автор кода не я. Решение нашел на одном забугорном ресурсе.
Все работает, но я не уверен что это правильное решение. Что скажете?
Если не ошибаюсь, то decode должен возвращать str в с декодированием из utf8 в данном случае, а потом вы вырезаете лишние элементы, так что всё правильно на мой взгляд. Ну и напоследок преобразуете строку в int. В принципе всё верно. Не вижу причин, чтобы данный код был неправильным.
Спасибо за пояснение.