我尝试通过Python API以编程方式更新应用程序的Firefox Marketplace条目。我可以在https://marketplace-dev.allizom.org/的开发环境中使用client.create_screenshot(app_id, filename)
方法从模块marketplace
成功上传屏幕截图。
在Python API中,没有方法可以上传图标。不过,在Marketplace API文档中,有一个REST点可以上传图标:Updating an App Icon
我使用文档编写了自己的方法来上传图标:
import mimetypes
import sys
from base64 import b64encode
from urlparse import urlunparse
def post_icon_file(client, app_id, filename):
with open(filename, 'rb') as s_file:
s_content = s_file.read()
s_encoded = b64encode(s_content)
url = urlunparse((client.protocol, '%s:%s' % (client.domain, client.port),
'%s/api/v2%s' % (client.prefix, '/apps/app/' + str(app_id) + '/icon/'),
'', '', ''))
print url
mtype, encoding = mimetypes.guess_type(filename)
if mtype is None:
mtype = 'image/jpeg'
data = {'file': {
'type': mtype,
'data': s_encoded
}}
response = client.conn.fetch('PUT', url, data)
if response.status_code != 200:
sys.exit(response.content)
else:
print str(response.status_code) + ': Uploaded icon ' + filename + ' for app ID ' + str(app_id)
问题:上传的响应成功(200)。我收到消息:
200:为应用程序ID 1234567上传了图标/path/to/icon/icon-512.png
仍在https://marketplace-dev.allizom.org/developers/app/[slug]/edit的Marketplace条目中,“应用程序图标”显示为默认图标
到目前为止,我的调查:
如果通过
client.status(app_id)
获取应用程序的状态,图标的条目仍为默认条目,例如:icons:{u \'128 \':u \'https://marketplace-dev-cdn.allizom.org/media/img/hub/default-128.png \'我试图上传一个尺寸为128 x 128像素的图标,另一个像素为512 x 512像素。两者都有相同的结果:成功,但是它们在条目中没有更改。
最佳答案
尝试部署您的Zamboni [1]实例,并[2]提交一个错误并提出请求。您可以在过去看到类似的错误[3]
[1] https://github.com/mozilla/zamboni
[2] https://bugzilla.mozilla.org/enter_bug.cgi#h=dupes|Marketplace
[3] https://github.com/mozilla/zamboni/pull/2403
关于python - Firefox Marketplace API:成功上传后,应用程序图标保持默认,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29460444/