2

所以,这就是交易。我正在尝试编写一个快速的 python 脚本,它从 mp3(艺术家、专辑、歌曲名、流派等)中读取基本的 id3 标签。python 脚本很可能会使用诱变剂库(除非您知道更好的库)。我不确定如何递归扫描目录以获取每个 mp3 的标签,然后填充数据库。另外,就数据库而言,我想让它尽可能坚固,所以我想知道是否有人对我应该如何设计数据库本身有任何想法。我应该只使用一张大表吗,我应该使用某些关系等等。我不太擅长关系数据库,所以我会很感激任何帮助。哦,这是在linux机器上运行的。

4

1 回答 1

4

要开始在 Python 中提取 ID3 标签,有一个模块。

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

参考。

在创建数据库方面,您不需要重新发明轮子(存储音乐数据是一个常见的数据库问题)——谷歌搜索将帮助您。 这是一个例子

于 2009-04-21T20:53:35.360 回答