Python script di database mp3, con un front-end php
Domanda
Quindi, ecco l'affare. Sto tentando di scrivere uno script python veloce che legge i tag di base ID3 da un mp3 (artista, album, songName, genere, ecc). Lo script Python userà molto probabilmente la libreria mutageno (a meno che non si sa di uno migliore). Non sono sicuro di come eseguire la scansione in modo ricorsivo attraverso una directory per ottenere i tag di ogni mp3, e quindi riempire un database. Inoltre, per quanto riguarda la fine del database, voglio rendere il più solido possibile, quindi mi chiedevo se qualcuno avesse qualche idea su come avrei dovuto progettare il database stesso. Dovrei basta usare un grande tavolo, dovrei usare certe relazioni, ecc io non sono molto bravo a database relazionali in modo Gradirei qualsiasi aiuto. Oh, questo è in esecuzione su una macchina Linux.
Soluzione
Per iniziare con l'estrazione di tag ID3 in Python, c'è un modulo per questo.
from ID3 import ID3
mp3_filepath = r'/music/song.mp3'
id3_data = ID3(mp3_filepath)
print 'Artist:', id3_data['ARTIST']
print 'Title:', id3_data['TITLE']
Maggiori informazioni sul modulo ID3.
Se si desidera cercare ricorsivamente una directory per i file MP3, il modulo os
built-in in grado di farlo:
import os
def mp3_files(root):
# this is a generator that will return mp3 file paths within given dir
for f in os.listdir(root):
fullpath = os.path.join(root,f)
if os.path.isdir(fullpath) and not os.path.islink(fullpath):
for x in mp3_files(fullpath): # recurse into subdir
yield x
else:
if fullpath[len(fullpath)-3:] == 'mp3':
yield fullpath
for p in mp3_files(root_dir):
id3_data = ID3(p)
print 'Artist:', id3_data['ARTIST']
print 'Title:', id3_data['TITLE']
In termini di creazione del database, non è necessario reinventare la ruota (la memorizzazione di dati la musica è un problema comune database) - una ricerca su Google vi aiuterà fuori. Ecco un esempio .