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と書いてあったので。