Pergunta

Então, aqui está o negócio. Eu estou tentando escrever um script python rápida que lê as tags ID3 básicos de um mp3 (artista, álbum, songname, gênero, etc). O script python usará provavelmente a biblioteca mutagênico (a menos que você souber de um melhor). Não tenho certeza como digitalizar recursivamente através de um diretório para obter etiquetas de cada mp3, e em seguida, preencher um banco de dados. Além disso, até o final de banco de dados, eu quero torná-lo tão sólida quanto possível, então eu queria saber se alguém tinha alguma idéia de como eu deve projetar o banco de dados em si. Devo usar apenas um grande mesa, que eu deveria usar certas relações, etc. Eu não sou muito bom em bancos de dados relacionais, então eu gostaria de receber qualquer ajuda. Oh, isso está sendo executado em uma máquina Linux.

Foi útil?

Solução

Para começar com extrair tags ID3 em Python, há um módulo para isso.

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

Mais informações sobre o módulo de ID3.

Se você deseja pesquisar recursivamente um diretório para arquivos de mp3, o built-in módulo os pode fazer isso:

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

Referência.

Em termos de criação de banco de dados, você não precisa reinventar a roda (dados de música de armazenamento é um problema de banco de dados comum) - uma pesquisa no Google vai ajudá-lo. Aqui está um exemplo .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top