5

我不确定这是不是要问的地方,但是 Etsy 开发人员支持的回复非常慢(已经等了 4 天,那只是为了看看我是否可以继续这个项目——因为我不想打破他们的服务条款)。无论如何,除了...

我有一个脚本要提供给我们的用户,它将调用以下提要:(使用此处的详细信息:https ://www.etsy.com/developers/documentation/getting_started/requests )

https://openapi.etsy.com/v2/shops/%s/listings/active?method=GET&api_key=$etsy_key&limit=200

这将获得他们在他们的商店出售的物品。到目前为止,一切都很好。一个小问题......没有图像!现在,根据他们的文档(https://www.etsy.com/developers/documentation/getting_started/images),它说您必须对每个项目进行一次请求!

https://openapi.etsy.com/v2/listings/ITEM_ID/images/?api_key=xxxx

这肯定不对吧?所以我们必须这样做:

  • 1 个 api 密钥请求以获取提要
  • 200 x api 请求以获取图像 url

肯定有更好的方法吧?

我很乐意听取建议,因为这让我发疯。

4

4 回答 4

8

根据 etsy 论坛,您应该能够通过在通话结束时添加“includes=MainImage”来获取图像。

于 2015-11-04T22:57:59.257 回答
3

如果您正在使用(或可以使用)jQuery,那么我建议您遍历每个列表并通过 AJAX 显示它们。从 API 调用返回的 JSON 数据如下所示:

Etsy 数据

这是一个大的 JSON 对象,其中包含每个列表的特定数据,包括图像/尺寸,因此您需要单独获取每个对象(请参阅结果数组)。

一种方法是在回调中使用for循环。success然后,您将为所需的每个值分配变量(使用点表示法解析 JSON),然后使用这些变量构建 HTML。

$(document).ready(function () {
    // global variables
    var url = 'https://openapi.etsy.com/v2/listings/active.js?includes=MainImage',
        key = '9njigunpqge5htjynd9uu52f',
        limit = 25; // etsy api maximum

    // get data
    $.ajax({
        url: url,
        data: {
            api_key: key,
            limit: limit,
        },
        dataType: 'jsonp',
        success: function (data) {
            // log etsy data
            console.log(data);

            // for each listing... *
            for (var i = 0; i < data.results.length; i++) {
                // * assign listing variables
                var item = data.results[i];
                var url = item.url;
                var image = item.MainImage.url_570xN; // 75x75, 170x135, 570xN, fullxfull
                var title = item.title;
                var price = item.price;
                var quantity = item.quantity;

                // * build html structure for each listing
                var result = $('<div class="item">\
                    <div class="item-image">\
                        <a href="' + url + '"><img src="' + image + '"/></a>\
                    </div>\
                    <div class="item-details">\
                        <p class="item-title">' + title + '</p>\
                        <p class="item-price">$' + price + '</p>\
                        <p class="item-quantity">' + quantity + ' left</p>\
                    </div>\
                </div>');

                // * append listings
                $('#some-element').append(result);
            }
        }
    });
});

此处概述了 API 中可用的图像大小:https ://www.etsy.com/developers/documentation/reference/listingimage 。

如果你想看一看,我最近在http://codepen.io/markhillard/pen/mErRPk上创建了一个功能更全面的 Etsy 商店。

希望这可以帮助。

于 2016-07-11T05:58:04.923 回答
1

这是正确的答案。

根据 etsy api 文档,您应该能够通过在通话末尾添加“includes=Images”来获取图像。

这将返回列表及其所有图像。

于 2020-03-25T19:57:26.417 回答
0

要获取项目详细信息,您可以使用 -- ETSY API的getListing方法和获取变体和其他详细信息的getInventory调用。

获取项目的图像使用 --- ETSY API的findAllListingImages 调用

于 2017-09-11T13:52:57.667 回答