我需要通过perl使用Amazon Product API来获取给定ASIN的第三方新的和使用过的(市场)优惠列表。我需要能够看到价格以及亚马逊是否满足每个优惠(有资格获得优质/超级优惠运费)。我已经搜索了Net :: Amazon模块,我认为没有办法做到这一点。
有没有人做过类似的事情?
答案 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";
}
这里的问题是Net::Amazon
神奇地生成了它的访问者(并没有使用Class::Accessor
,但它已经过时了,所以我们可以原谅它......)。我不确定上面{Items}
元素中各个商品的正确访问者是什么。到达你的对象是kind of fraught with peril,但在这种情况下,找到合适的访问者不应该那么难(因为它是自动生成的)并且禁止这样做,我认为你可以放心地直接进入对象。
此外,您可能建议与作者的作者Mike Schilli或当前的维护者Christopher Boumenot联系,这可能是值得做的,特别是如果这是亚马逊的结果,并且可以添加到API。这个问题是亚马逊的回报是一种变数。引用perldoc,
方法因查询返回的项目而异。这是最常见的。它们都是访问者,这意味着可以像
Method()
一样使用它们来检索值,或者像Method($value)
一样设置字段的值。
这使得假设你可以测试super-saver-shipping-ness的返回值是很棘手的,因为它可能在返回的结构中没有那个键。