最近、リリースチェッカーの挙動がおかしかったので、いろいろ直した。
洋書なのに和書に分類される
商品の検索には 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 ヘッダを返すようにしたら、あっさり直った。
修正中にアクセスされた方にはご迷惑をおかけしました。失礼しました。