2013-05-15 30 views
1

我需要通过perl使用亚马逊产品API来获得第三方提供ASIN的新和使用(市场)产品列表。我需要能够看到价格以及是否每个报价都由亚马逊满足(符合优质/超级节能运输的条件)。我搜索了Net :: Amazon模块,但我没有看到任何方式来做到这一点。Perl通过产品API访问亚马逊市场提供的API

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

+0

你检查了CPAN吗? –

+0

是的,我查了CPAN。 Net :: Amazon :: Property类具有最低的已使用物品价格和已使用优惠的数量,但无法获得实际的优惠清单。我没有看到任何其他模块可以获取优惠清单。 – gcoates

回答

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月-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的返回值,因为它可能没有返回结构中的该键。