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.

È stato utile?

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']

di riferimento.

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 .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top