Perl通过产品API访问亚马逊市场

时间:2013-05-15 20:39:23

标签: perl amazon-product-api

我需要通过perl使用Amazon Product API来获取给定ASIN的第三方新的和使用过的(市场)优惠列表。我需要能够看到价格以及亚马逊是否满足每个优惠(有资格获得优质/超级优惠运费)。我已经搜索了Net :: Amazon模块,我认为没有办法做到这一点。

有没有人做过类似的事情?

1 个答案:

答案 0 :(得分:0)

所以我自己也在考虑这个问题,看起来亚马逊提供的商品在商品中都有'IsEligibleForSuperSaverShipping' => '1'属性。所以这就像是:

my $ua = Net::Amazon->new(
    associate_tag => 'derpderp',
    token         => 'morederp',
    secret_key    => 'herpaderp',
);

my $rsp = $ua->search( asin => 'B000FN65ZG' );

if ($rsp->is_success()) {
    if (my $o = $rsp->{xmlref}->{Items}->{Offers}) {
        foreach my $offer (keys %{ $o }) {
            if ($o->{$offer}->{IsEligibleForSuperSaverShipping}) {
                # This is offered by Amazon.com
            } # if
        } # foreach
}
else {
    die "Error: ", $rsp->message(), "\n";
}
  • 注意,截至撰写时(04年11月1日至13日),ASIN通过亚马逊完成;它可能不会在将来。

这里的问题是Net::Amazon神奇地生成了它的访问者(并没有使用Class::Accessor,但它已经过时了,所以我们可以原谅它......)。我不确定上面{Items}元素中各个商品的正确访问者是什么。到达你的对象是kind of fraught with peril,但在这种情况下,找到合适的访问者不应该那么难(因为它是自动生成的)并且禁止这样做,我认为你可以放心地直接进入对象。

此外,您可能建议与作者的作者Mike Schilli或当前的维护者Christopher Boumenot联系,这可能是值得做的,特别是如果这是亚马逊的结果,并且可以添加到API。这个问题是亚马逊的回报是一种变数。引用perldoc

  

方法因查询返回的项目而异。这是最常见的。它们都是访问者,这意味着可以像Method()一样使用它们来检索值,或者像Method($value)一样设置字段的值。

这使得假设你可以测试super-saver-shipping-ness的返回值是很棘手的,因为它可能在返回的结构中没有那个键。