Как получить загруженный zip-файл в Django и сохранить его содержимое (файлы mp3)?

Я новичок в Django, и я пытаюсь добиться того, что упоминалось... но мне не удалось получить некоторые AudioField или MediaField в моделях Django, более или менее вероятно, ImageField.

Объясняя лучше, что я хочу:

Я хочу предоставить пользователю форму, в которой он может заполнить некоторую информацию и загрузить zip-файл, содержащий mp3-файлы. Затем на сервере я хочу получить этот zip-файл, разархивировать его, получить все mp3 внутри и получить некоторую информацию об этих файлах (имя, исполнитель, продолжительность и т. д.) и сохранить это в моей модели (Музыка).

Есть ли какой-нибудь учебник, объясняющий, как этого добиться, или несколько ссылок, объясняющих, как работать с zip-файлами и mp3-файлами?


person WitaloBenicio    schedule 21.04.2015    source источник


Ответы (2)


Я думаю, что все, что вам нужно здесь, это 2 следующие ссылки:

Стандартная библиотека Python (как 2.x.x, так и 3.x.x) содержит модуль для работы с zip-файлами. https://docs.python.org/3/library/zipfile.html

i.e.:

with ZipFile('music_files.zip') as zip_file:
    # get the list of files
    names = zip_file.namelist()
    # handle your files as you need. You can read the file with:
    with zip_file.open(name) as f:
        music_file = f.read()
        # retrieve music_file metadata here

Что касается извлечения метаданных mp3 файлов, то есть библиотека: http://eyed3.nicfit.net

Надеюсь, это поможет вам.

person shalakhin    schedule 21.04.2015

Поле, которое вы ищете, — это FileField, которое не зависит к типу файла, на который он ссылается.

Стандартная библиотека Python включает пакет для работы с Zip-архивами: zipfile.

Вы можете использовать библиотеку eyeD3 для извлечения метаданных ID3 из файлов MP3.

person aumo    schedule 21.04.2015
comment
Я постараюсь использовать эти возможности. Когда я получу результат, я опубликую здесь, если это работает или нет. Но заранее спасибо. :) - person WitaloBenicio; 21.04.2015