最近、リリースチェッカーの挙動がおかしかったので、いろいろ直した。

洋書なのに和書に分類される

商品の検索には Amazon Product Advertising API を使っている。検索リクエストのパラメータに「SerchIndex」というのがあって、ここで「Books」を指定すると和書データが、「ForeignBooks」を指定すると洋書データが、それぞれ検索できる。

というのは嘘で、「Books」を指定しても、検索結果には洋書が含まれてしまう。これをどうやって判別するかがキモなのだが、ここの処理がきちんと書けていなかった。

結局、以下のいずれかに該当する本を「和書」とすることにした。

  • レスポンスXML の ItemAttributes/Languages/Language/Name の値が「日本語」である
  • レスポンスXML の ItemAttributes/ISBN が「4」から始まる

以前よりはましになったと思う。

DVDの検索結果が0件になることがある

洋書/和書問題を直していて気づいた不具合。

ドキュメントを見ると、DVDのソート条件に「-orig-rel-date」を指定しても問題ないはずなのだが、なぜかエラーになってしまうことがある。「-releasedate」にするとエラーがなくなった。APIのバグだと思う。

httpd が「CLOSE_WAIT」で詰まる

上記不具合を直している間に発生。Feedly などのクローラからのアクセスがほぼ「CLOSE_WAIT」になって、httpd プロセスが足りなくなってしまう。

しばし考えて、RSS の出力時に Content-Length ヘッダを返すようにしたら、あっさり直った。


修正中にアクセスされた方にはご迷惑をおかけしました。失礼しました。