zapier - python - передает байты в выходной файл для использования в следующем действии - PullRequest
1 голос
/ 10 мая 2019

Я пытаюсь сделать автоматизацию на Zapier с потоком, подобным следующему:

  1. Триггер: веб-ловушка, которая получает запрос POST.Тело - это ключ file со значением строка base64 определенного PDF , поэтому типом является str
  2. Действие: код Zapier Python, который получает fileиз веб-хуков, декодируйте строку base64 в bytes, чтобы получить реальное действительное содержимое PDF, чтобы сказать переменную с именем file_bytes
  3. Действие: выпадающий список, который извлекает file_bytes из предыдущего шага,и загрузить его в dropbox

Я сам кодировал декодер (пункт 2) и проверил, что он хорошо работает в моей локальной системе.

Проблема в том, что Dropbox (пункт 3)получить двоичный файл, в то время как Python (точка 2) не может передавать значение, отличное от сериализуемого JSON.Это явное ограничение от Zapier:

output Словарь или список словарей, которые будут «возвращаемым значением» этого кода.Вы можете явно вернуться рано, если хотите.Это должен быть сериализуемый JSON!

...

Эти два вопроса очень близки к тому, что я могу получить из других вопросов на этих сайтах, но это не принесло мне никакой удачи.

...

Код для декодирования строки base64 в bytes выглядит так:

file_bytes = base64.b64decode(input_data['file'])

Что я уже сделал:

  1. передать file_bytes на вывод примерно так:
output = [{'file': input_data['file_bytes']}]}]

но это дало мне Это должно быть JSON-сериализуемо!

передать file_bytes в виде строки, подобной следующей:
output = [{'file': str(input_data['file_bytes'])}]

it do загружено в Dropbox, но содержимое файла повреждено.(конечно, да)

передать file_bytes как декодированную строку с кодировкой latin-1:
output = [{'file': input_data['file_bytes'].decode('latin-1')}]

it do , загруженной в Dropbox, PDF также можно открыть, даже еслитот же номер страницы, что и в оригинальном PDF, но он полностью пустой (белый, без содержимого)

...

Итак, действительно ли эта функция видна на платформе Zapier?Или я был уже в тупике даже с самого начала?

...