Python脚本化的mp3数据库,带有php前端

2 投票
1 回答
1181 浏览
提问于 2025-04-15 11:12

好吧,事情是这样的。我想写一个简单的Python脚本,来读取mp3文件的基本信息,比如艺术家、专辑、歌曲名、风格等等。这个脚本可能会用到mutagen这个库(除非你知道更好的库)。我不太确定怎么递归地扫描一个文件夹,以获取每个mp3文件的标签,然后把这些信息填入数据库中。另外,关于数据库的部分,我想尽量设计得稳固一些,所以想问问大家有什么建议,关于数据库的设计。是应该用一个大表,还是用一些特定的关系等等。我对关系型数据库不太在行,所以希望能得到一些帮助。哦,对了,这个脚本是在Linux系统上运行的。

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文件,可以使用Python自带的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']

参考资料。

至于创建数据库,你不需要从头开始做(存储音乐数据是一个常见的数据库问题)——在谷歌上搜索一下就能找到很多帮助。这里有一个例子。

撰写回答