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でもって曲データとアートワークをサーバに転送するのであります。