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の謎文字列。