Что такое хорошая аудио библиотека для проверки файлов в Python? - PullRequest
6 голосов
/ 01 июля 2011

Я уже проверяю тип содержимого, размер и расширение ( Проверка файла Django (аудио) ), но мне нужна библиотека, чтобы прочитать файл и подтвердить, что это действительно то, что я надеюсь, что это (в основном mp3 и mp4).

Я был здесь: http://wiki.python.org/moin/Audio/ но не повезло. Побывав на этом какое-то время, я немного заблудился в лесу. Полагаться на ТАКОЕ большое время для всего этого ...

Заранее спасибо.

EDIT: Я уже (в Django) использую UploadedFile.content_type ():

"Заголовок типа содержимого, загруженный вместе с файлом (например, text / plain или application / pdf). Как и любые данные, предоставленные пользователем, не следует полагать, что загруженный файл действительно является этим типом. Вы Вам все равно нужно будет проверить, что файл содержит контент, к которому относится заголовок типа контента - "доверяй, но проверяй".

Итак, я уже читаю заголовок. Но как я могу проверить фактическое содержимое файла?

Ответы [ 3 ]

2 голосов
/ 02 июля 2011

Если просто проверить заголовок недостаточно, я бы порекомендовал использовать mutagen для загрузки файла.Должно быть выброшено исключение, если оно неверно.

К вашему сведению, я не думаю, что ваш подход очень масштабируемый действительно ли необходимо прочитать каждый байт файла?По какой причине вы не доверяете заголовку файла?

2 голосов
/ 01 июля 2011

Вы можете вызвать юникс-оболочку в Python следующим образом:

>>> filename = 'Giant Steps.mp3'
>>> import os
>>> type = os.system('file %s' % filename)
Giant Steps.mp3: ISO Media, MPEG v4 system, iTunes AAC-LC

** См. Справочные страницы для более подробной информации о команде 'file', если вы хотите пойти по этому пути.

Смотрите этот пост для других вариантов


0 голосов
/ 20 апреля 2012

Использование sndhdr

Это немного больше, чем тип контента. Читает файл и получает его заголовки ... конечно, это все еще не надежно ... использование ffmpeg, вероятно, тогда единственный вариант.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...