年末年始対応:Amazonでの直送商品の販売を休止

Amazonではセラー(ストア)ごとの休業日設定ができません。クソですね。

ということで、年末年始で配送が滞る商品の販売を休止し、注文が入らないようにしました。商品の設定には納期の項目もあるのですが、アップロードでできる一括設定の方法が複雑でよくわからないのと、いつ届くのかという問い合わせ攻撃を回避するためです。

Amazonはセラーの自己発送をやめさせたい施策を次々打ち出していますので、休業日設定は絶対に実装されないでしょうね。直送品以外はとりあえず出荷できるので、休み無しでやろうと思ってます。

SSL接続ページとamazonウィジェットの相性が悪い

色々とSSL化を進めているわけですが。
amazonのウィジェットを設置しているページをSSL化すると、「安全な接続ではない」などと言われます。
これは、amazonのウィジェットがSSLではないからです。

httpを単にhttpsに書き換えてもダメでした。
検索すると色々と対応方法が出てきますが、対策できているURLが、今使っているURLと全く異なるので使えません。

結局は、APIを使用して経由するか内容ですが、そういう機能を既存サービスに追加するリスクを考えると、amazonから画像を取得してSSLで表示させる中継サービスを利用(用意)したほうが安全ですね。

まぁ、amazonが対応してくれればいいだけの話なのですが…
対応方法をご存知のかた、教えて下さい。

AmazonアソシエイトリンクがHTML5のValidationに引っかかる

ポケットリファレンスの「HTML5&CSS3ポケットリファレンス」を例にします。

「テキストとイメージ」では次のタグになります。
<iframe src="http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank&bc1=000000&IS2=1&bg1=FFFFFF&fc1=000000&lc1=0000FF&t=penlabo-22&o=9&p=8&l=as4&m=amazon&f=ifr&ref=ss_til&asins=4774164984" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>

「テキストのみ」では次のタグになります。
<a href="http://www.amazon.co.jp/gp/product/4774164984/ref=as_li_ss_tl?ie=UTF8&camp=247&creative=7399&creativeASIN=4774164984&linkCode=as2&tag=penlabo-22">HTML5&CSS3ポケットリファレンス</a><img src="http://ir-jp.amazon-adsystem.com/e/ir?t=penlabo-22&l=as2&o=9&a=4774164984" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />

「画像のみ」では次のタグになります。
<a href="http://www.amazon.co.jp/gp/product/4774164984/ref=as_li_ss_il?ie=UTF8&camp=247&creative=7399&creativeASIN=4774164984&linkCode=as2&tag=penlabo-22"><img border="0" src="http://ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=4774164984&Format=_SL110_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=penlabo-22" ></a><img src="http://ir-jp.amazon-adsystem.com/e/ir?t=penlabo-22&l=as2&o=9&a=4774164984" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />

ざっと見ただけでも気になるところがありますね。
「&」がそのままになっていることと、タグがXHTMLの終了タグになっていることです。

W3CのValidationに掛けてみましょう。

& did not start a character reference. (& probably should have been escaped as &amp;.)

The scrolling attribute on the iframe element is obsolete. Use CSS instead.

The marginwidth attribute on the iframe element is obsolete. Use CSS instead.

The marginheight attribute on the iframe element is obsolete. Use CSS instead.

The frameborder attribute on the iframe element is obsolete. Use CSS instead.

The border attribute is obsolete. Consider specifying img { border: 0; } in CSS instead.

要は「&」は「&amp;」と書きましょう、iframeの要素はCSSを使いましょう、imgタグのborderはCSSを使いましょう、ということです。

これらのエラーを修正するスクリプトをやっつけで書きました。
商品によって生成されるコードが違うようなので、対応しきれないものもあるかもしれませんが、とりあえず動いているので公開します。

AmazonアソシエイトリンクHTML5クリーンアップ

本来はコードを完全に書き換えたほうがいいのですが、それはまた別の機会に。

Net::Amazonをインストールしてみる

Windowの場合、CPANではNOT OKがでるけど、ppmで簡単に追加できた。

Linux(CentOS)の場合、cpanではNOT OKが大量に出て、個別にモジュールを入れていっても、開発系のライブラリがほとんど入ってないためか、それぞれがNOT OKになってしまう。
結局yumから1つづつ入れていくことになった。
perl-XML-DOM
perl-DIgest-SHA
libxml2
libxml2-devel
Sys-Syslog
perl-Log-Log4perl
んだけど、ログに関するライブラリが入らない。
よくよく見ればCPANの起動時にBundle::CPANを入れろと書いてあるではないか。そういうことならと入れてみる。
何事もなく無事に終了し、Net::Amazonも難なく入った。
結局何が問題なのかって、Bundle::CPANを入れてなかったことだけが問題だったのかもしれない。

しっかりしろAmazon

先日、ネトゲアンテナのシステムメンテナンスを行っていました。
Amazonのアソシエイトをどうしようかとページをめくっていると・・・

いつのまにか、イメージのみで個別商品リンクが張れるようになっているではないか。
ふむふむ、タグはAタグで張れ、DOCTYPEにやさしい。画像は持ち帰ってくださいと。
これは使うしかないだろと、商品をちゃんと把握しているパンヤから修正を書けることにした。

ちょっと用事があってパソコンから離れて、Amazonに再ログインすると・・・
あれ?イメージのみがない?さっきのは幻?
いやいや、リンクは生きてるし間違いない。

自分の操作に問題があったのか、としばらく悩んでいたけれど、時間の無駄なのでAmazonに問い合わせることにした。
----------
Amazon.co.jpアソシエイト・プログラムにお問い合わせいただき、ありがとうござ
います。

誠に申し訳ございませんが、一時的に個別商品リンクの作成画面にて、掲載すべき予
定ではない機能が掲載されておりました。この表示についてはすでに削除されており
ます。このたびは、誤った機能を表示しており、大変ご迷惑をおかけいたしましたこ
とを、お詫びいたします。

その他にもご不明な点がございましたら、ご遠慮なくお問い合わせください。アソシ
エイト・プログラムをご利用いただき、ありがとうございます。
----------
な、なんだってー(AAry

どうしてくれるんだよ、イメージのみ専用にスクリプト修正し終わってるんですがorz