2010-11-26 17 views
1

mp3ファイルでこれを達成する方法。Pythonを使用してmp3ファイルから不正なタグを削除したい

アーティスト:www.xyz.com         ----> アーティスト:
アーティスト:無料 ダウンロード、無料音楽、xyzhi.com     ---->アーティスト:
アーティスト:くるくる菅(アンマNA) - www.musicxyx.com - ®Danaa コレクション®        ---->アーティスト: くるくる菅(アンマNA)
アーティスト: ナンPog​​iren - - 旦那コレクション®®       ---->アーティスト:ナン Pogirenが

私はID3タグにアクセスするための変異原を使用してきました。どのように上記の目的を達成するためにタグの文字列を操作するには?

+3

'自由downloads'がないときにどのように'くるくるKan'が正式名称であることを伝えることができますか? –

+0

私は文字列としての違いを見ません、ちょうど実用的になりたかった。無駄なタグ値を削除しようとしています。 –

+0

作成したいマッピングの明示的なテーブルを提供できますか? –

答えて

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 
+0

私はMutagen ID3 Pythonライブラリを使用しています。アーティストやアルバムが添付されていない文字列を取得できます。上記のスクリプトのどのような変更によって、元の文字列と期待される文字列に 'Artist:'がなくても、上記の正確なことができます。 –

+0

@Arun - なぜあなたはArtistを含むのですか?その例では? –

関連する問題