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

发布于 2024-07-18 07:12:33 字数 266 浏览 7 评论 0原文

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

So, here's the deal. I am attempting to write a quick python script that reads the basic id3 tags from an mp3 (artist, album, songname, genre, etc). The python script will use most likely the mutagen library (unless you know of a better one). I'm not sure how to recursively scan through a directory to get each mp3's tags, and then fill a database. Also, as far as the database end, I want to make it as solid as possible, so I was wondering if anyone had any ideas on how I should design the database itself. Should I just use one big table, should I use certain relationships, etc. I am not very good at relational databases so I would appreciate any help. Oh, this is running on a linux box.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

过度放纵 2024-07-25 07:12:33

要开始在 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']

参考 创建数据库,您不需要重新发明轮子(存储音乐数据是一个常见的数据库问题)——Google 搜索将帮助您解决。 这是一个示例

To get started with extracting ID3 tags in Python, there's a module for that.

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

More info on ID3 module.

If you want to recursively search a directory for mp3 files, the built-in os module can do that:

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

Reference.

In terms of creating the database, you don't need to reinvent the wheel (storing music data is a common database problem) -- a Google search will help you out. Here's one example.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文