我需要通过 perl 使用亚马逊产品 API 来获取给定 ASIN 的第三方新旧(市场)报价列表。我需要能够查看价格以及每个报价是否由亚马逊履行(有资格享受优质/超级优惠运输)。我已经搜索了 Net::Amazon 模块,但我没有看到任何方法可以做到这一点。
有没有人做过类似的事情?
我需要通过 perl 使用亚马逊产品 API 来获取给定 ASIN 的第三方新旧(市场)报价列表。我需要能够查看价格以及每个报价是否由亚马逊履行(有资格享受优质/超级优惠运输)。我已经搜索了 Net::Amazon 模块,但我没有看到任何方法可以做到这一点。
有没有人做过类似的事情?
所以我自己也在调查这个,看起来亚马逊提供的商品'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}
元素中各个商品的正确访问器是什么。进入你的对象有点危险,但在这种情况下,找到正确的访问器不应该那么难(考虑到它是自动生成的)并且除非这样,我认为你可以很舒服地直接进入对象。
此外,您可能会建议与作者的作者 Mike Schilli 或当前的维护者Christopher Boumenot 联系,这可能是值得的,特别是如果这是亚马逊一贯的结果并且可以添加到 API 中。问题在于亚马逊的回报是可变的。引用perldoc,
方法因查询返回的项目而异。这是最常见的。它们都是访问器,这意味着它们可以用于
Method()
检索值或Method($value)
设置字段的值。
这使得假设您可以测试超级节省运费的回报变得很棘手,因为它可能只是在返回的结构中没有那个键。