在 Zapier 中使用 Python 获取图像

Posted

技术标签:

【中文标题】在 Zapier 中使用 Python 获取图像【英文标题】:Use Python to get image in Zapier 【发布时间】: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。) 谢谢。

【问题讨论】:

这和 Zapier 有什么关系? 见这里zapier.com/help/code-python 【参考方案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 而无需先将其保存在服务器上

以上是关于在 Zapier 中使用 Python 获取图像的主要内容,如果未能解决你的问题,请参考以下文章

Zapier Cli - 应用程序在 Cli 中运行良好,但在 Zapier UI 中无法正常运行

在 Zapier 中处理列响应,其中一列是空白的

如何在“Zapier 代码”中编写节点获取(Rest-API)?

Q ZAPIER 卷曲请求

如果存在 Python 正则表达式,或者在 Zapier 工作流程中

如何在 zapier 网站上获取当前的 Zapier App 版本