now playing (iTunes)復活まで(2)

じゃぁ作るかって事になって、すごく簡単に考えちゃって。 取り敢えずライブラリからデータを抜きだして、MP3の中に入ってるアートワークを取り出せばなんとかなるでしょ、基本的にはそういう事でしょ、って。

APIが公開されてんのかな?もしかして、って思ったら、公開されていた。 そうか、だからか(謎)

iTunes COM for Windows SDK

それと、すげぇサンプルがありました。 JavaScript(というかWScript)って!

Hacking the Hack #92: iTunes COM API で今聞いている曲を Blog エントリに掲載

んで、このコードを眺めていて気が付いたのが、COMか!そうかCOMか!っていう事。 Windows用PHPだったらCOMが扱えるから、1日とかで出来上がるんじゃないか、って思って。

そして書いてみたのがこのスクリプト。 兎に角動けばいいって事で、すごい事になってるけど...

function h($a) {
$i = new COM(“iTunes.Application”) or die(“iTunes not exists”);
$j = $i->CurrentTrack;
$b[1] = ($j -> Name) or die(“not playing”);
$b[2] = $j -> Artist;
$b[3] = $j -> Album;
$k = $a.”nowplaying.dat”;
if (!file_exists($k)) { $l = fopen($k, ‘w’); fclose($l); } else { $m = file($k); }
if (($b[1] === rtrim($m[0])) && ($b[2] === rtrim($m[1])) && ($b[3] === rtrim($m[2]))) { unset($b); return; }
switch ($j -> Artwork -> Item(1) -> Format) {
case 1 : $n = ‘.jpg’; break;
case 2 : $n = ‘.png’; break;
case 3 : $n = ‘.bmp’; break;
default : unset($n);
}
if ($n) {
$b[0] = $n; $j -> Artwork -> Item(1) -> SaveArtworkToFile($a.’artwork’.$n); file_put_contents($k,$b[1].”¥n”.$b[2].”¥n”.$b[3].”¥n”.$b[0]);
} else {
unset($b);
return;
}
return $b;
}

SaveArtworkToFileでアートワークが抜けちゃうっていうのには驚いた。 んでこれを読ませて戻り値が配列になっていれば(別に配列になっていなくてもいいんだけど、何かしたかったんだろうね、戻り値で)、FTPでもって曲データとアートワークをサーバに転送するのであります。