У меня есть API отдыха, созданный с помощью Django rest Framework, один из его сериализаторов должен принимать Base64file, который является нашим аудиофайлом, теперь мне нужно просто проверить и проверить декодированный файл, чтобы я мог знать, действительно ли это mp4 или любой другой тип аудио в целом или нет.
проблема в том, что иногда аудиофайл после выгрузки и сохранения поврежден и не может быть воспроизведен, поэтому выполнение этой проверки необходимо, чтобы убедиться, что файл отправлено правильно, или оно было отправлено поврежденным на первом месте.
Я копался в Google, и Inte rnet в поисках чего-либо может выполнить эту простую задачу, но все, что я нашел, это как проигрывать аудио или манипулировать им, Я даже не нашел что-то, что может вызвать исключение, если файл недопустим при попытке открыть его.
для получения дополнительной информации. Я использую django -extra-fields , я использую Base64FileField для реализации моего поля Audio file, они предоставили пример для этого как PDF, я пытаюсь сделать этот аналогичный способ для аудио но что меня удерживает, так это проверка звука.
Пример PDF:
class PDFBase64File(Base64FileField):
ALLOWED_TYPES = ['pdf']
def get_file_extension(self, filename, decoded_file):
try:
PyPDF2.PdfFileReader(io.BytesIO(decoded_file))
except PyPDF2.utils.PdfReadError as e:
logger.warning(e)
else:
return 'pdf'
Что сделано на данный момент:
class AudioBase64File(Base64FileField):
ALLOWED_TYPES = (
'amr',
'ogg',
'm4a',
'3gp',
'aac',
'mp4',
'mp3',
'flac'
)
INVALID_FILE_MESSAGE = ("Please upload a valid audio.")
INVALID_TYPE_MESSAGE = ("The type of the audio couldn't be determined.")
def get_file_extension(self, filename, decoded_file):
# missing validation
return 'mp4'