У меня проблемы с загрузкой изображений на Ebay в Python. У меня никогда не было проблем с использованием VBA в Excel, перечисляющих элементы более 6 лет после официального примера Ebay PHP, но я не могу заставить его работать в Python.
Я продолжаю получать "Сервисы изображений поддерживают только загрузку JPEG, GIFФорматы изображений PNG, BMP и TIFF. Попробуйте еще раз, используя версию изображения, сохраненную в одном из этих форматов. "несмотря на то, что изображение является jpg и загружается нормально с помощью моего метода VBA.
Я прочитал и подправил запрос в течение 3 дней безрезультатно. Могу поспорить, что это что-то простое, поэтому я надеюсь, что кто-то может указать на мою ошибку или привести полный рабочий пример.
Изменение версии не имеет значения, и 571 по-прежнему отлично работает для реализации VBA.
У меня нет проблем с внесением небольшого пожертвования Paypal человеку, который может помочь мне получить эту работу.
Заранее спасибо.
with open(r"H:\temp\earth.jpg", "rb") as image_file:
encoded_string = (base64.encodebytes(image_file.read())).decode("utf-8")
mimeBoundary = 'MIME_boundary'
ebayAuthToken = '<token>'
requestHeaders = {
'X-EBAY-API-COMPATIBILITY-LEVEL': '1113',
'X-EBAY-API-SITEID': '15',
'X-EBAY-API-DEV-NAME': '<devName>',
'X-EBAY-API-APP-NAME': '<appName>',
'X-EBAY-API-CERT-NAME': '<certName>',
'X-EBAY-API-CALL-NAME': 'UploadSiteHostedPictures',
'Content-Type': 'multipart/form-data; boundary=' + mimeBoundary
}
xmlRequest = (
'<?xml version="1.0" encoding="utf-8"?>'
'<UploadSiteHostedPicturesRequest xmlns="urn:ebay:apis:eBLBaseComponents">'
'<RequesterCredentials>'
f'<eBayAuthToken>{ebayAuthToken}</eBayAuthToken>'
'</RequesterCredentials>'
'<PictureSet>Supersize</PictureSet>'
'<Version>517</Version>>'
'</UploadSiteHostedPicturesRequest>'
)
firstPart = ''
firstPart += '--' + mimeBoundary + '\r\n'
firstPart += 'Content-Disposition: form-data; name=""XML Payload"' + '\r\n'
firstPart += 'Content-Type: text/xml;charset=utf-8' + '\r\n\r\n'
firstPart += f'{xmlRequest}'
firstPart += '\r\n\r\n'
secondPart += '--' + mimeBoundary + '\r\n'
secondPart += 'Content-Disposition: form-data; name=""dummy""; filename=""dummy"' + '\r\n'
secondPart += 'Content-Transfer-Encoding: binary' + '\r\n'
secondPart += 'Content-Type: application/octet-stream' + '\r\n\r\n'
secondPart += f'{encoded_string}' # image binary data
secondPart += '\r\n'
secondPart += '--' + mimeBoundary + '--' + '\r\n'
fullRequest = firstPart + secondPart
uploadImageResponse = requests.post('https://api.ebay.com/ws/api.dll', data=fullRequest, headers=requestHeaders, verify=False)