Python Servicted قاعدة بيانات MP3، مع نهاية أمامية PHP
سؤال
لذلك، إليك الصفقة. أحاول كتابة برنامج نصي ثعبان سريع يقرأ علامات ID3 الأساسية من MP3 (الفنان، الألبوم، اسم الأغاني، النوع، إلخ). سيستخدم البرنامج النصي Python على الأرجح مكتبة Mutagen (إلا إذا كنت تعرف من أفضل). لست متأكدا من كيفية البحث بشكل متكرر من خلال دليل للحصول على علامات كل علامات MP3، ثم املأ قاعدة بيانات. أيضا، بقدر نهاية قاعدة البيانات، أريد أن أجعلها صلبة قدر الإمكان، لذلك كنت أتساءل ما إذا كان لدى أي شخص أي أفكار حول كيفية تصميم قاعدة البيانات نفسها. يجب أن أستخدم فقط طاولة واحدة كبيرة، هل يجب علي استخدام علاقات معينة، وما إلى ذلك. أنا لست جيدا في قواعد البيانات العلائقية حتى أقدر أي مساعدة. أوه، هذا يعمل على صندوق Linux.
المحلول
للبدء في استخراج علامات 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 في الخروج. هنا مثال واحد.