【问题标题】:Use Python to get image in Zapier在 Zapier 中使用 Python 获取图像
【发布时间】:2019-07-31 22:52:40
【问题描述】:

我正在尝试使用 Python 代码步骤在 Zapier 中下载图像。这是一些示例代码(但它似乎不起作用):

r = requests.get('https://dummyimage.com/600x400/000/fff')
img = r.raw.read()
return {'image_data': img}

我得到的错误是 Runtime.MarshalError: Unable to marshal response: b'' is not JSON serializable

有谁知道我如何在 Zapier 的 Python 代码步骤中使用请求来获取图像? (我正在尝试获取图像并将其保存到 Dropbox。) 谢谢。

【问题讨论】:

标签: python zapier


【解决方案1】:

看起来您需要一个 json 可序列化对象而不是二进制对象。 将图像转换为字符串的一种方法是使用 base64 然后对其进行编码:

使图像可序列化:

r = requests.get('https://dummyimage.com/600x400/000/fff') 
img_serializable = base64.b64encode(r.content).decode('utf-8')                                                                         
# check with json.dumps(img_serializable)

现在return {'image_data': img_serializable} 不应该给出错误。

从字符串中恢复图像并保存到文件:

with open("imageToSave.png", "wb") as f: 
    f.write(base64.decodebytes(img_serializable.encode('utf-8'))) 

同样使用codecs,它是标准 Python 库的一部分:

r = requests.get('https://dummyimage.com/600x400/000/fff') 
content = codecs.encode(r.content, encoding='base64') 
img_serializable = codecs.decode(content,encoding='utf-8')                                         

type(img_serializable)                                                                                                                 
# Out:
# str

with open("imageToSave3.png", "wb") as f: 
    f.write(codecs.decode(codecs.encode(img_serializable, encoding='utf-8'), \ 
                            encoding='base64')) 

【讨论】:

  • 我认为这不适用于 Zapier,因为您无法导入任何库,例如 base64。 (默认有请求库。)
  • @LordNull 编解码器库应该是标准的,这行得通吗?
  • @LordNull Zapier 实际上提供了一些有用的非标准库。这包括 base64。
  • 啊,是的,我现在看到了,它说标准 Python 库可用。我尝试了上面的示例,但它们并不适合我。图像 以 base64 数据形式保存到输出 (return {'image_data': img_serializable}),但在下一个操作步骤中,它会以文本文件的形式保存到 Dropbox。如何让操作步骤了解它是图像,以便将 图像 保存到 Dropbox 而不仅仅是包含 base64 文本的文本文件?
  • @LordNull 也许您应该在另一个问题中发布您的代码以上传到 Dropbox。另外,我不知道 Zapier,但我想知道是否可以将文件直接流式传输到 Dropbox 而无需先将其保存在服务器上
猜你喜欢
  • 2018-07-31
  • 1970-01-01
  • 2021-09-25
  • 2020-03-24
  • 2015-11-22
  • 2022-01-13
  • 2021-12-16
  • 2021-07-18
  • 2023-04-10
相关资源
最近更新 更多