2010-11-26 19 views
1

Comment faire pour cela dans mes fichiers mp3.Vous voulez supprimer les balises illégales du fichier mp3 en utilisant Python

Artiste: www.xyz.com         ----> Artiste:
Artiste: téléchargements gratuits, musique libre, xyzhi.com     ----> Artiste:
Artiste: Kurukuru Kan (Amma Na) - www.musicxyx.com - ® Danaa collections ®         ----> Artiste: Kurukuru Kan (Amma Na)
Artiste: Nan Pogiren - - ® collections Danna ®       ----> Artiste: Nan Pogiren

J'utilise Mutagène pour accéder balises ID3. Comment manipuler les chaînes dans les étiquettes pour réaliser ce qui précède?

+3

Comment pouvez-vous dire que 'Kurukuru Kan' est un nom légal alors que' downloads' libre n'est pas? –

+0

Je ne vois aucune différence en tant que chaînes, je voulais juste être pratique. Essayer de supprimer les valeurs de tags inutiles. –

+0

S'il vous plaît pourrait fournir un tableau explicite des mappages que vous voulez faire? –

Répondre

0

D'abord, vous aurez besoin d'une bibliothèque pour comprendre le format MP3 et vous permettent d'éditer les balises, peut-être: http://id3-py.sourceforge.net/

Au-delà, vous aurez juste besoin de travailler sur les remplacements de chaîne.

Pour ceux que vous avez spécifiés (y compris les exigences d'espace étranges):

#!/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 
+0

J'utilise la bibliothèque Mutagen ID3 Python, et je suis en mesure d'obtenir des chaînes sans artiste ou album. Quel changement dans le script ci-dessus me permettrait de faire la chose exacte ci-dessus sans "Artiste:" dans les chaînes originales et attendues. –

+0

@Arun - pourquoi avez-vous inclus Artist: dans les exemples alors? –