Как можно передать несколько текстовых параметров в API DeepL с помощью Python?

Я пытаюсь передать несколько текстовых переменных с помощью DeepL API, используя библиотеку Python 3 requests, но пока не смог передать несколько текстовых параметров в запрос. В документации указано, что до 50 текстовых параметров могут быть отправлен в одном запросе, но после попытки передать несколько текстовых переменных с помощью "&text": и обычных ключей "text": вызов возвращает только один перевод.

Для справки, вот код, который я использовал:

two_s = r.post(url="https://api.deepl.com/v2/translate", data={"target_lang": "EN", "auth_key": auth_key, "text": s2t1, "text":s2t2})

а также

two_s = r.post(url="https://api.deepl.com/v2/translate", data={"target_lang": "EN", "auth_key": auth_key, "text": s2t1, "&text":s2t2})

Где auth_key — мой ключ аутентификации, а s2t1 и s2t2 — разные строки 2 для перевода. Как можно передать несколько параметров "text": в API DeepL с помощью Python?


person Thomas-C    schedule 05.06.2021    source источник


Ответы (2)


Изменить: я попытался передать s2t1 и s2t2 в text в виде списка элементов, как указано в Martijn Pieters (Martijn Pieters) ответьте на этот вопрос и обе строки были переведены и возвращены сервером. Вот код, который я использовал для выполнения этого запроса:

both_s = r.post(url="https://api.deepl.com/v2/translate", data={"target_lang": "EN", "auth_key": auth_key, "text": [s2t1,s2t2]})

Где auth_key — мой ключ аутентификации DeepL.

Редактировать: Также стоит отметить, что DeepL имеет ограничение в 5000 символов, которые он может переводить за раз, поэтому, хотя в текстовый параметр можно передать несколько строк, проще просто передать всю строку. Я проведу некоторый анализ эффективности передачи полной строки из 4800 символов в тексте и тест, проходящий разделенный список строк, и обновлю его дальше.

person Thomas-C    schedule 05.06.2021

Вы можете передать список кортежей как атрибут data.
После некоторого теста с некоторыми эхо-сервисами кажется, что он работает с несколькими значениями для одного и того же ключа.

r.post(
    url="https://api.deepl.com/v2/translate", 
    data=[
        ("target_lang", "EN"),
        ("auth_key", auth_key),
        ("text", s2t1),
        ("text", s2t2),
    ]
)
person Sven Eberth    schedule 05.06.2021
comment
Спасибо за ваш ответ! Я думаю, что метод передачи списка строк в text немного проще, поэтому я собираюсь пойти дальше и принять этот ответ, но спасибо за вашу помощь! - person Thomas-C; 06.06.2021