2009-04-21 60 views
2

所以,這裏的交易。我試圖編寫一個快速的Python腳本,從mp3(藝術家,專輯,歌曲名,流派等)讀取基本的id3標籤。 python腳本將使用最有可能的誘變庫(除非你知道更好的)。我不知道如何遞歸掃描目錄以獲取每個mp3的標籤,然後填充數據庫。另外,就數據庫而言,我希望儘可能使它變得可靠,所以我想知道是否有人對我應該如何設計數據庫本身有任何想法。我應該只使用一張大桌子,是否應該使用某些關係等等。我不擅長關係數據庫,所以我希望能夠提供幫助。哦,這是在一個Linux機器上運行。Python腳本化的mp3數據庫,一個php前端

回答

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

More info on ID3 module.

如果你想遞歸搜索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'] 

Reference.

在創造方面數據庫,你不需要重新發明輪子(存儲音樂數據是一個常見的數據庫問題) - 谷歌earch會幫助你。 Here's one example

+0

我從來沒有想過谷歌的數據庫設計,謝謝,關於遞歸mp3搜索的任何想法,但? – Specto 2009-04-21 20:55:24