2010-11-26 2 views
1

Как это сделать в моих mp3-файлах.Хотите удалить недопустимые теги из mp3-файла с помощью Python

Исполнитель: www.xyz.com         ----> Исполнитель:
Исполнитель: бесплатные загрузки, бесплатная музыка, xyzhi.com     ----> Исполнитель:
Исполнитель: Kurukuru Кан (Амма Na) - www.musicxyx.com - ® Danaa коллекции ®         ----> Исполнитель: Kurukuru Кан (Амма Na)
Исполнитель: Nan Pogiren - - ® коллекции Данна ®       ----> Исполнитель: Nan Pogiren

Я использую мутаген для доступа ID3 тегов. Как управлять строками в тегах для достижения вышеуказанного?

+3

Как вы можете сказать, что `Kurukuru Kan` является юридическим названием в то время как` свободный downloads` нет? – 2010-11-26 09:21:50

+0

Я не вижу разницы, как струны, просто хотел быть практичным. Попытка удалить ненужные значения тегов. – 2010-11-28 04:29:54

ответ

0

Сначала вам нужна библиотека, чтобы понять формат MP3 и позволяет редактировать теги, может быть: http://id3-py.sourceforge.net/

Кроме этого, вам просто нужно работать на строковых замен.

Для тех, которые вы указали (в том числе странных требований к пространству):

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 
EXPECTED = { 
'Artist:www.xyz.com':'Artist:', 
'Artist:free downloads,free music,xyzhi.com':'Artist:', 
'Artist:Kurukuru Kan (Amma Na) - www.musicxyx.com - ® Danaa collections ®':'Artist: Kurukuru Kan (Amma Na)', 
'Artist: Nan Pogiren - - ® Danna collections ®':'Artist:Nan Pogiren'} 

import re 

def process(instr): 
    assert instr.startswith("Artist:") 
    mo = re.match(r"^(Artist:)(?)(.*?) - .*$",instr) 
    if mo: 
     spc = mo.group(2) 
     if spc == " ": 
      spc = "" 
     else: 
      spc = " " 

     return "Artist:"+spc+mo.group(3) 
    return "Artist:" 

for (instr,outstr) in EXPECTED.iteritems(): 
    print process(instr),outstr,process(instr) == outstr 
    assert process(instr) == outstr 
Смежные вопросы