pythonでid3タグ(続き)
とりあえずsamurizeでのpythonの動作を確認してみる。
動かない。
samurizeのヘルプを見るとactive python入れろって書いてある。
そんなもんあったのか。
とりあえずゲット。
もともとインストール済みだったpython25がそのまま使われているようで既存のライブラリとかも大丈夫だった。
ampiを使わなくなったので、foobar2000側にNow Playing Simpleをインストールして設定。
$if(%isplaying%, $if(%ispaused%, paused , )%path%$crlf() %title%$crlf() %artist%$crlf() %album%#%track%$crlf() $crlf() %comment%$crlf() , )
http://wiki.hydrogenaudio.org/index.php?title=Foobar2000:Titleformat_Reference
出力先はC:\Program Files\foobar2000\np.txtに。
やっと準備が整ったので、samurize用のスクリプトコーディング開始。
作ったスクリプトはこんな感じ。
C:\Program Files\Samurize\Scripts\id3.py
import eyeD3 import string import sys, os import re NO_IMAGE='C:/Program Files/Samurize/Skins/ampi/not_available.GIF' CURRENT_IMAGE='C:/Program Files/Samurize/np_image.txt' IMAGE_WRITE_PATH='C:/Program Files/Samurize/covers/' def getInfo(np_path): lines=[line.strip() for line in open(np_path).readlines()] # when stopped if lines[0]=="stopped": return _write_text(NO_IMAGE) sound_file=lines[0].decode('cp932') # get embeded image (id3tag V2.x APIC FRAME) tag = eyeD3.Tag() tag.link(sound_file) images=tag.getImages() if len(images): image_file=IMAGE_WRITE_PATH+images[0].getDefaultFileName() images[0].writeFile(IMAGE_WRITE_PATH) return _write_text(image_file) # otherwise image in same directory patern=re.compile('^.*\.(gif|jpg)$', re.IGNORECASE) sound_path=os.path.dirname(sound_file) files=filter(lambda i : patern.match(i) ,os.listdir(sound_path)) if len(files)>0: return _write_text((sound_path+"/"+files[0]).encode('cp932')) # no image return _write_text(NO_IMAGE) def _write_text(text): f=open(CURRENT_IMAGE, 'w') if f: f.write(text) return True if __name__ == '__main__': file='C:/Program Files/foobar2000/np.txt' getInfo(file)
こんな感じになった。
iTunesで埋めた画像を表示の図。
commentのところにiTunNORMの謎文字列。