База данных mp3, написанная на Python, с интерфейсом php

StackOverflow https://stackoverflow.com/questions/774502

Вопрос

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

Это было полезно?

Решение

Чтобы начать с извлечения тегов 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 поможет вам в этом. Вот один из примеров.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top