如何使用ebay API将图像添加到现有项目

时间:2017-06-05 13:57:01

标签: python image upload ebay-api

我正在使用ebay-sdk for python。我使用以下代码成功将一些图像上传到eBay图片服务(EPS):

from ebaysdk.trading import Connection as Trading

api = Trading(config_file='ebay.yaml', siteid=71)


def upload_images(image_url):
    response = api.execute('UploadSiteHostedPictures', {"ExternalPictureURL": image_url,
                                                             "PictureSet": "Supersize"})
    return response.content

upload_images(MY_IMG_URL)

eBay返回上传图片的网址。

但是如何将图像添加到我现有的易趣优惠中呢?我必须使用ReviseItem吗?

使用ebay-sdk for python的一个例子很不错。

编辑:

    def revise_image(self, item_id):
    myitem = {
        "Item": {
            "Country": "DE",
            "ItemID": item_id,
            "PictureDetails": [
                {"PictureURL": MY_IMG1},
                {"PictureURL": MY_IMG2},
                {"PictureURL": MY_IMG3}
            ]
        }
    }
    response = self.api.execute('ReviseFixedPriceItem', myitem)

我按照建议进行了更改但仍然只更改了主图像。 MY_IMG3成为主要形象。 MY_IMG1和MY_IMG2未附加到列表中。

2 个答案:

答案 0 :(得分:0)

这很有效。

def verifyAddItem(args):
        #"""http://www.utilities-online.info/xmltojson/#.UXli2it4avc   """
    try:
        api = Trading(debug=args.debug, siteid=site_id, appid=app_id, token=token_id, config_file=None, certid=cert_id, devid=dev_id)

        myitem = {
            "Item": {
                "Country": "GB",
                "Description": description,
                "ItemID": item_to_revise,
                "PictureDetails": {
                    "PictureURL": "http://www.itcircleconsult.com/eb2017/4a.png"
                    },
                }
            }

        api.execute('ReviseFixedPriceItem', myitem)
        dump(api)

我一直在用eBay和Python工作..

点击这里查看一些工作示例..我经常撕开它们并将它们重新组合在一起,但你可能会发现它有用......

还有一个I-way检查程序和一些BS4翻录来修改项目

https://github.com/johnashu/PRODUCTION/tree/master/Python/eBay%20API%20KIT%20-%20Maffas%20-%202017

另外有用的是在这里查看eBay API调用索引:

http://developer.ebay.com/devzone/xml/docs/Reference/eBay/index.html#CallIndex

然后使用XML到JSON转换器将您需要的调用更改为pythong中更易读的格式..

下面:

http://www.utilities-online.info/xmltojson/#.WTW_P8b-vct

关于添加图像和托管的说明:

https://developer.ebay.com/devzone/xml/docs/reference/ebay/UploadSiteHostedPictures.html

注意:从版本889开始,在创建列表之前,您无需使用此调用来上载自托管图像。您现在可以使用AddItem或AddFixedPriceItem调用在Item.PictureDetails.PictureURL中一次指定最多12个自托管或EPS托管的URL。但是,您必须使用UploadSiteHostedPictures调用来上载二进制附件。

假设的JSON需要它...除非需要时间将图片填充到项目中?

我们都失踪[] - 小学生错误!

{
"Item": {
    "PictureDetails": [
    { "PictureURL": "http://pics.ebay.com/aw/pics/dot_clear.gif" },
    { "PictureURL": "fds" },
    { "PictureURL": "fds" }
    ]
}
}

答案 1 :(得分:0)

我知道这个问题已经很老了,但是我偶然发现了这个页面,因为我遇到了同样的问题并找到了正确的解决方案。

如上面的评论中所述,johnashu当前发布的解决方案不起作用。这是因为 ebaysdk.utils.dict2xml 转换字典的方式。

上述解决方案:

{
"Item": {
    "PictureDetails": [
    { "PictureURL": "http://pics.ebay.com/aw/pics/dot_clear.gif" },
    { "PictureURL": "fds" },
    { "PictureURL": "fds" }
    ]
}
}

输出以下XML:

<Item>
  <PictureDetails>
    <PictureURL>http://pics.ebay.com/aw/pics/dot_clear.gif</PictureURL>
  </PictureDetails>
  <PictureDetails>
    <PictureURL>fds</PictureURL>
  </PictureDetails>
  <PictureDetails>
    <PictureURL>fds</PictureURL>
  </PictureDetails>
</Item>

其中包括多个<PictureDetails>而不是一个父标记,其中多个PictureURL作为子标记。

正确的格式为:

{
  "Item": {
    "PictureDetails": {
      'PictureURL': ['http://pics.ebay.com/aw/pics/dot_clear.gif', 'fds', 'fds']
    }
  }
}

这给我们提供了以下XML输出:

<Item>
  <PictureDetails>
    <PictureURL>http://pics.ebay.com/aw/pics/dot_clear.gif</PictureURL>
    <PictureURL>fds</PictureURL>
    <PictureURL>fds</PictureURL>
  </PictureDetails>
</Item>

ReviseItem API docs中描述的格式匹配。