Windows版のiTunesで現在聴いてる曲の情報を取得する(Javascript編)

ブックマークレット

Windows版のiTunesで現在聴いてる曲の情報を取得する(C#編) - IIJIMASの日記」を踏まえて、Internet Explorerで使用できるはずJavascriptブックマークレットを作成してみました。

//iTunesで現在聴いてる曲の曲名、アルバム名、アーティスト名を文字列を作成にするブックマークレット

javascript:a=new%20ActiveXObject("iTunes.Application");t=a.CurrentTrack;document.writeln("[聴いてる♪]「"+t.Name+"‐"+t.Album+"」by%20"+t.Artist);

実行してみると…通常の設定では動きません。通常セキュリティの関係で、ActiveXObjectを生成できないようになっているようです。
適当な、TXTかHTMをローカルファイルを新規作成して、それをIEで開いてる時に実行すると、実行しても大丈夫か?というようなのダイアログが出ますが、[はい]をクリックすると
iTunesで現在聴いてる曲の曲名、アルバム名、アーティスト名を文字列を表示できます。

ローカルHTMLファイル

同じことですが、一行JavascriptだとカスタマイズしづらいのでローカルHTMLを作成してもできます。これをお気に入りに入れてしまえば、ブックマークレットと同じように使用できます。これも実行確認のダイアログが出てしまいます。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<script type="text/javascript">
function getCurrentMusic(){
var iTunesApp = new ActiveXObject("iTunes.Application");
var track  = iTunesApp.CurrentTrack;
var name = track.Name;
var album = track.Album;
var artist = track.Artist;
var text = "[聴いてる♪]";
text += "「"+name+" - "+album+"」 by "+artist;
return text;
};

function writeCurrentMusic(){
document.writeln("<textarea cols=100 rows=3>" + getCurrentMusic() + "</textarea>");
};
</script>
</head>
<body onload="writeCurrentMusic();">
</body>
</html>

Windowsガジェット(Windows Vista/Windows 7

ローカルHTML作成したのなら、Windows Vista以降で使えるサイドバーガジェットにしてしまえばよいのでは?と思い、作成してみました。
GetCurrentITunesTrack.gadget
GetCurrentITunesTrack.gadgetは実はGetCurrentITunesTrack.zipであり、中に最低限gadget.xmlというXMLとその中で指定されている、HTMLファイルが1つあれば、ガジェットになります。
GetCurrentITunesTrack.gadgetの中身は以下の2ファイルだけです。
gadget.xml

<?xml version="1.0" encoding="utf-8" ?>
<gadget>
<name>GetCurrentITunesTrack</name>
<version>1.0.0.0</version>
<hosts>
<host name="sidebar">
<base type="HTML" apiVersion="1.0.0" src="GetCurrentITunesTrack.html" />
<permissions>Full</permissions>
<platform minPlatformVersion="1.0" />
</host>
</hosts>
</gadget>

GetCurrentITunesTrack.html

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>GetiTunesCurrentMusic</title>
<style type="text/css">
.blackback{
background:black;
color:#D0FFFF;
border-color:white;
}
.bodydimension{
width:550px;
height:100px;
}
</style>
<script type="text/javascript">
function getCurrentMusic(){
	var text = "";
	var iTunesApp = new ActiveXObject("iTunes.Application");
	var track  = iTunesApp.CurrentTrack;
	if (track!=null){ 
		var name = track.Name;
		var album = track.Album;
		var artist = track.Artist;
		var text = "[聴いてる♪]";
		text += "「"+name+" - "+album+"」 by "+artist;
	}else{
		text += "iTunesで聴いている曲はありません。";
	}
	return text;
};
var timer;
function writeCurrentMusic(){
clearTimeout(timer);
var content=document.getElementById('content');
content.innerHTML="<textarea cols=50 rows=3 id='ta1' class='blackback'>" + getCurrentMusic() + "</textarea>";
ta1.select();
timer=setTimeout("writeCurrentMusic()",30000);
};
</script>
</head>
<body onload="writeCurrentMusic();" class="blackback bodydimension" onclick="writeCurrentMusic();">
<div id="content">
</div>
</body>
</html>