AlbumArtDownloaderのAmazon(.jp)を直した

foobar2000から連携させて使っているAlbumArtDownloaderのAmazon(.jp)スクリプトが動かなくなったので直した。

# amazon-common.boo 37行目
#resultsPage = GetPage(GetPageStream(url, null, true), PageEncoding)
resultsPage = GetPage(GetPageStream(url, null, true)

# amazon-jp.boo
override protected def GetUrl(artist as string, album as string) as string:
	return "http://www.amazon.co.jp/gp/search?search-alias=popular&field-artist=${EncodeUrl(artist)}&field-title=${EncodeUrl(album)}&sort=relevancerank"

何をやったかというと、Amazonが返してくる結果がUTF8になっていたのでCP932で扱っていたところをUTF8にするようにした。

UTF8だとSystem.Text.Encoding.GetEncoding()ではなくSystem.Text.Encoding.UTF8.GetString()となる。
UTF8時のGetEncoding()に相当する処理を探せ出せなかったので、共通モジュールutil.booを追いかけた。

def GetPage(url as string):
	return GetPage(GetPageStream(url))
def GetPage(pageStream as Stream):
	return GetPage(pageStream, Encoding.UTF8)
def GetPage(pageStream as Stream, encoding as Encoding):
	return StreamReader(pageStream, encoding).ReadToEnd()


def EncodeUrl(url as string):
	return EncodeUrl(url, Encoding.UTF8)

def EncodeUrl(url as string, encoding as Encoding):
	return System.Web.HttpUtility.UrlEncode(url, encoding)

ということで、引数encodingを与えなければUTF8として扱ってくれるようなので、そのように修正した。
できればamazon-common.booには手を入れたくなかったが、いつもAmazon.co.jpの結果しか使っていないからまぁいいか。

なお、booスクリプトのコードにsyntax highlightが対応していないようなのでpythonにしてあります。booスクリプトのページにpython likeと書いてあったので。