Скриптовая база данных на Python, с PHP-интерфейсом - PullRequest
2 голосов
/ 22 апреля 2009

Итак, вот сделка. Я пытаюсь написать быстрый скрипт на python, который читает основные теги id3 из mp3 (исполнитель, альбом, название песни, жанр и т. Д.). Сценарий Python, скорее всего, будет использовать библиотеку мутагенов (если вы не знаете, что лучше). Я не уверен, как рекурсивно сканировать каталог, чтобы получить теги каждого mp3, а затем заполнить базу данных. Кроме того, что касается конца базы данных, я хочу сделать ее как можно более прочной, поэтому мне было интересно, есть ли у кого-нибудь какие-либо идеи о том, как я должен проектировать саму базу данных. Должен ли я использовать одну большую таблицу, использовать ли определенные отношения и т. Д. Я не очень хорош в реляционных базах данных, поэтому я был бы признателен за любую помощь. О, это работает на Linux-коробке.

1 Ответ

4 голосов
/ 22 апреля 2009

Чтобы начать извлекать теги ID3 в Python, для этого есть модуль.

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

Подробнее о модуле ID3.

Если вы хотите рекурсивно искать в каталоге mp3-файлы, встроенный модуль os может сделать это:

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

См.

С точки зрения создания базы данных вам не нужно изобретать велосипед (хранение музыкальных данных является распространенной проблемой базы данных) - поиск в Google поможет вам. Вот один пример .

...