前回、AIMSを使ってレポートをダウンロードするというエントリを公開したのだが、タイトルに偽りありで、あのスクリプトはレポートのダウンロードに必要なリクエストIDを取得するだけで、レポートのダウンロードはできない。
で、今回は実際にレポートをダウンロードするスクリプトを公開。
やりかたは簡単で、例のごとくヘッダーに適切な値を設定し、以下のURLにリクエストを投げるだけ。
https://vendornet.amazon.co.jp/exec/panama/seller-admin/download/report
ヘッダーには例のごとく、認証情報とクッキーを指定。
それと、今回必要なのは前回紹介したスクリプトで取得した、ReportID。
詳しくはソース見てけろ。
これだけで、レポートのダウンロードができる。
結果はShift_JISで返ってくる。注意が必要なのは、以前にも書いたが「ー」が「^Z」に化けること。
「ー」は番地等で使われることが多いのでAmazon先生にはなんとかして欲しいところだが、なんとかなってないようなので自前で変換する必要がある。
あと、私がAIMSで遊び出した頃、ヘッダーのフィールドに「ReportID」としないといかんところを「ReportId」としていて、思うように動作せず嵌まった。気がつくまでにかなり時間が掛かった。
ちなみに、ReportIDを指定しなかった場合は、作成した最新の注文レポートが返ってくるようだ。
以下、ソース。
#!/usr/bin/perl
use strict;
use warnings;
use Getopt::Long;
use LWP::UserAgent;
use MIME::Base64;
my $id = 0;
GetOptions('--id=i', \$id);
my $url = "https://vendornet.amazon.co.jp/exec/panama/seller-admin/download/report";
my $auth = MIME::Base64::encode('test@example.com:password');
# Cookie
my $session_id = "session-id=nnn-nnnnnn-nnnnnnn;";
my $session_id_time = "session-id-time=nnnnnnnnnn;";
my $ubid_main = "ubid-main=nnn-nnnnnnn-nnnnnnn";
my $ua = LWP::UserAgent->new;
my $header = HTTP::Headers->new(
Authorization=>"Basic $auth",
ReportID=>$id,
Cookie=>"$session_id $session_id_time $ubid_main",
);
my $req = HTTP::Request->new(POST=>$url, $header);
my $res = $ua->request($req);
print $res->code, "\n";
print $res->content, "\n";
使いかたは、
$ ./getreport --id=nnnnnnnn
nnnnnnnnにはダウンロードするレポートIDを指定する。
上のソースそのままでは動かないので、認証情報(メールアドレス、パスワード)とクッキーの値は自分のものを記述すること。










