Не работает PHP_SCRIPT перевода через API Microsoft/Azure

Discussion in 'Формирование GET и POST-запросов' started by rusalex, Nov 7, 2020.

  1. rusalex

    rusalex Active Member Пользователи

    Joined:
    Mar 22, 2018
    Messages:
    133
    Город:
    Kiev
    После прощания с translate.yandex , решил перейти на сервис переводов от Microsoft, на их Ссылки недоступны для гостей (к слову, хорошие условия с бесплатным 12 месячным периодом, да и стоимость самая низка). Думаю решение моего вопроса будет очень полезно многим здесь!

    Не могу понять, что делаю не так!
    Вот по этому ркуоводсту Ссылки недоступны для гостей

    Написал такой скрипт:

    <PHP_SCRIPT=Ссылки недоступны для гостей
    <HEADERS>Ocp-Apim-Subscription-Key:7a3da544fb99498d82f60c8d88320bd9
    Content-Type=LUE]application/json; charset=UTF-8
    Content-Length:3000</HEADERS>
    <REPLACE></REPLACE>
    api-version=[FIELDVALUE]3.0[/FIELDVALUE]
    from=[FIELDVALUE]en[/FIELDVALUE]
    to=[FIELDVALUE]ru[/FIELDVALUE]
    Text=[FIELDVALUE]Hello, what is your name?[/FIELDVALUE]
    </PHP_SCRIPT>

    или так

    <PHP_SCRIPT=Ссылки недоступны для гостей
    <HEADERS>Ocp-Apim-Subscription-Key:7a3da544fb99498d82f60c8d88320bd9
    Content-Type=LUE]application/json; charset=UTF-8
    Content-Length:3000</HEADERS>
    <REPLACE></REPLACE>
    from=[FIELDVALUE]en[/FIELDVALUE]
    to=[FIELDVALUE]ru[/FIELDVALUE]
    Text=[FIELDVALUE]Hello, what is your name?[/FIELDVALUE]
    </PHP_SCRIPT>

    Не переводит! Пробовал разные варианты, вчитывался в документацию, НИЧЕГО!

    Может кто уже это делал, подскажите, что не так. Заранее спасибо!
     
    Last edited: Nov 8, 2020
  2. Diabet

    Diabet Member Пользователи

    Joined:
    Feb 12, 2012
    Messages:
    114
    Ключ открой админ не подскажет если инфа не полная, где ему ключ искать, скорее всего он уже посмотрел и проехал дальше)
     
    Root and rusalex like this.
  3. rusalex

    rusalex Active Member Пользователи

    Joined:
    Mar 22, 2018
    Messages:
    133
    Город:
    Kiev
    Ну если это поможет не вопрос!

    Вот полный вариант

    <PHP_SCRIPT=Ссылки недоступны для гостей
    <HEADERS>Ocp-Apim-Subscription-Key:7a3da544fb99498d82f60c8d88320bd9
    Content-Type=LUE]application/json; charset=UTF-8
    Content-Length:3000</HEADERS>
    <REPLACE></REPLACE>
    from=[FIELDVALUE]en[/FIELDVALUE]
    to=[FIELDVALUE]ru[/FIELDVALUE]
    Text=[FIELDVALUE]Hello, what is your name?[/FIELDVALUE]
    </PHP_SCRIPT>

    В первом сообщении также изменил
     
    Last edited: Nov 8, 2020
  4. Root

    Root Администратор Администратор

    Joined:
    Mar 10, 2010
    Messages:
    14,818
    Город:
    Барнаул
    Заголовки были составлены неправильно.

    Подправил:
    Code:
    <PHP_SCRIPT=https://api.cognitive.microsofttranslator.com/translate?api-version=3.0[UTF-8]>
    <HEADERS>Ocp-Apim-Subscription-Key: 7a3da544fb99498d82f60c8d88320bd9;
    Content-Type: application/json; charset=UTF-8
    </HEADERS>
    <REPLACE></REPLACE>
    from=[FIELDVALUE]en[/FIELDVALUE]
    to=[FIELDVALUE]ru[/FIELDVALUE]
    Text=[FIELDVALUE]Hello, what is your name?[/FIELDVALUE]
    </PHP_SCRIPT>
    Нужно читать текст ошибки, который получаете при предпросмотре.

    Code:
    {"error":{"code":401000,"message":"The request is not authorized because credentials are missing or invalid."}}
    Говорит о том, что Api Key (7a3da544fb99498d82f60c8d88320bd9) некорректный!
     
    rusalex likes this.
  5. rusalex

    rusalex Active Member Пользователи

    Joined:
    Mar 22, 2018
    Messages:
    133
    Город:
    Kiev
    Спасибо большое за помощь и ответ . Ключ написан верно. Вот скрин с кабинета
    upload_2020-11-9_15-11-23.png
    7a3da544fb99498d82f60c8d88320bd9

    Есть на серве рекомендации по решении проблем:
    1. Возможно, используемые ключи API неправильно отправлены в строке заголовка или запроса. Например, вы можете вставить ключ в заголовок Ocp-Apim-Subscription-Key или в строку запроса Subscription-Key={key}, когда отправляете запрос HTTP POST.
    2. Убедитесь, что подписка Azure активна. Для этого проверьте ее состояние.
      Щелкните "Подписки", чтобы отобразилась колонка "Подписка", и проверьте ее состояние.
    3. Дополнительные сведения о кодах ошибок см. в соответствующей документации по API.
    Все проверил, все как написано (и через Subscription-Key= в боди)... Увы, ничего. Не пойму...

    Есть еще рекомендация
    1. Проверьте описание кода, которым обозначается статус запроса API. Код ошибки 403: превышена квота на количество вызовов. Выполните обновление до более высокой ценовой категории или дождитесь следующего цикла выставления счетов (тогда квота будет восстановлена). Код ошибки 429: превышено ограничение скорости. Повторите попытку или выполните обновление до более высокой ценовой категории с более высоким ограничением скорости.

      Если это ошибка "429: превышено ограничение скорости", то переходить на пакет $2000/мес я не готов)))

      Что еще можно попробовать? Заранее спасибо за ответ.
     
  6. Root

    Root Администратор Администратор

    Joined:
    Mar 10, 2010
    Messages:
    14,818
    Город:
    Барнаул
    Code:
    <PHP_SCRIPT=https://api.cognitive.microsofttranslator.com/translate?api-version=3.0&Subscription-Key=7a3da544fb99498d82f60c8d88320bd9&from=en&to=ru[UTF-8]>
    <HEADERS>
    Content-Type: application/json; charset=UTF-8
    </HEADERS>
    <REPLACE></REPLACE>
    [{'Text':'[JSONENCODE]Hello, what is your name?[/JSONENCODE]'}]
    </PHP_SCRIPT>
     
    rusalex likes this.
  7. rusalex

    rusalex Active Member Пользователи

    Joined:
    Mar 22, 2018
    Messages:
    133
    Город:
    Kiev
    Спасибо. Я проверил Ваш вариант, выдает ошибку 400 Bad Request

    Решил поменять ключ на этот
    a95fba6a43b94123a3186d9bcfa33b68

    та же история (скрин)

    Уже 20 паз перечитал документацию заново но ничего нового)))
     

    Attached Files:

  8. Root

    Root Администратор Администратор

    Joined:
    Mar 10, 2010
    Messages:
    14,818
    Город:
    Барнаул
    Попробуйте так.
    Code:
    <PHP_SCRIPT=https://api.cognitive.microsofttranslator.com/translate?api-version=3.0&Subscription-Key=a95fba6a43b94123a3186d9bcfa33b68&from=en&to=ru[UTF-8]>
    <HEADERS>
    Content-Type: application/json; charset=UTF-8
    </HEADERS>
    <REPLACE></REPLACE>
    [JSONREQUEST][{'Text':'[JSONENCODE]Hello, what is your name?[/JSONENCODE]'}][/JSONREQUEST]
    </PHP_SCRIPT>
     
    Last edited: Nov 9, 2020
    rusalex likes this.
  9. rusalex

    rusalex Active Member Пользователи

    Joined:
    Mar 22, 2018
    Messages:
    133
    Город:
    Kiev
    Супер!!! Большое спасибо!!!
     
  10. rusalex

    rusalex Active Member Пользователи

    Joined:
    Mar 22, 2018
    Messages:
    133
    Город:
    Kiev
    Еще один вопрос!
    При парсинге многострочного контента выдает ошибку "Socket Error # 0"

    Вот лог:

    1 PHP_SCRIPT (Ссылки недоступны для гостей) (Socket Error # 0 ):

    Я на всякий случай добавил формат текста перевода: textType=html
    И сгенерировал другой ключ!

    <PHP_SCRIPT=Ссылки недоступны для гостей
    <HEADERS>
    Content-Type: application/json; charset=UTF-8
    </HEADERS>
    <REPLACE></REPLACE>
    [JSONREQUEST][{'Text':'[JSONENCODE]<CD_GRAN_14!>[/JSONENCODE]'}][/JSONREQUEST]
    </PHP_SCRIPT>
    -----------------
    Вообще у меня думал будет такая схема

    [VARF][SET:CDDATA:1]<PHP_SCRIPT=Ссылки недоступны для гостей
    <HEADERS>
    Content-Type: application/json; charset=UTF-8
    </HEADERS>
    <REPLACE></REPLACE>
    [JSONREQUEST][{'Text':'[JSONENCODE]$$desc$$<CD_GRAN_14!><CD_GRAN_17!>$$desc$$^$$mcol$$<CD_CYCLE_GRAN_4!>$$mcol$$[/JSONENCODE]'}][/JSONREQUEST]
    </PHP_SCRIPT>[/SET][/VARF][VARF:CDDATA:1]

    Там описание <CD_GRAN_14!><CD_GRAN_17!> и цветовой ряд <CD_CYCLE_GRAN_4!> вместе через символы типа $$mcol$$. Потом черезпоиск-замену вытягиваю нужную часть. Это для того, чтобы сократить количество запросов и бычтрее парситью
    ----------
    Также если сразу на два языка переводить, схема может быть такой (как в документации ?

    <PHP_SCRIPT=Ссылки недоступны для гостей
    <HEADERS>
    Content-Type: application/json; charset=UTF-8
    </HEADERS>
    <REPLACE></REPLACE>
    [JSONREQUEST][{'Text':'[JSONENCODE]<CD_GRAN_14!>[/JSONENCODE]','to:ru'},{'Text':'[JSONENCODE]<CD_GRAN_14!>[/JSONENCODE]','to:uk'}][/JSONREQUEST]
    </PHP_SCRIPT>

    Тогда в строке запроса убирать &to=ru?


    Заранее спасибо за ответ. Уверен это многим будет нужно здесь.
     
  11. Root

    Root Администратор Администратор

    Joined:
    Mar 10, 2010
    Messages:
    14,818
    Город:
    Барнаул
    Приложите проект, где видно ошибку.
     
  12. rusalex

    rusalex Active Member Пользователи

    Joined:
    Mar 22, 2018
    Messages:
    133
    Город:
    Kiev
    Вот проект. Я упростил, оставил, только перевод, все остальное убрал, чтобы не мешало, так как очень много.

    Используется загруз контента через скрипт. (тоже приложил)
     

    Attached Files:

  13. Root

    Root Администратор Администратор

    Joined:
    Mar 10, 2010
    Messages:
    14,818
    Город:
    Барнаул
    1) В проекте в самом начале стоит лишний макрос:
    2) В именах переменных не нужно использовать двоеточие:
    3) Непонятно зачем включена библиотека INDY для макроса PHP_SCRIPT

    2020-11-09_21-13-37.png

    4) Ссылки из проекта на моем ПК не открываются, редиректит на главную страницу русской версии сайта.

    2020-11-09_21-16-31.png
     
  14. rusalex

    rusalex Active Member Пользователи

    Joined:
    Mar 22, 2018
    Messages:
    133
    Город:
    Kiev
    Большое спасибо за помощь! Я исправил все ошибки! Извините за такие глупости (экспериментировал со всем и уже все перемешалось, просто потерялся) Сорри еще раз.

    Я полностью все переписал, все парсится, только не парсит вот этот текст выдает 400 Bad Request

    Да, переводит сразу на два языка, одним запросом, это очень удобно, супер,

    не переводит только вот такую чать текста
    <ul >
    <li>Calvin Klein Performance</li><li>Performance striped remix logo cropped sweatshirt</li><li>Drawstring hood</li><li>Long sleeves + drop shoulders</li><li>Striped remixed logo at front</li><li>Woven logo patch at cuff</li><li>Cropped length</li><li>Ribbed knit trim</li><li>Model is 5'9" + wearing a size small</li>
    </ul>

    Из за этого ошибка - это <CD_GRAN_17!>

    Буду очень признателен за помощь.

    И если можно еще! Этот сайт постоянно если парсить в несколько (5-10) потоков и даже с паузой 5000 -12000 требует капчу с картинками, если в один поток, то не так часто, впринципе можно, но очень долго, до 15 часов (вл всяком случае с яндекс-переводчиком было). Может увеличить количество user agent ? Я так понял автоматически капчу с картинками нельзя кликать! Я и зарегистрировался в службе, но уже писал, здесь на форуме и ответили, что такого нет...
     
    Last edited: Nov 10, 2020
  15. rusalex

    rusalex Active Member Пользователи

    Joined:
    Mar 22, 2018
    Messages:
    133
    Город:
    Kiev
    Вот код в логе

    1 PHP_SCRIPT (Ссылки недоступны для гостей) (HTTP/1.1 400 Bad Request):
    [JSONREQUEST]['Text':'[JSONENCODE]<ul><li>Calvin Klein Performance</li><li>Performance striped remix logo cropped sweatshirt</li><li>Drawstring hood</li><li>Long sleeves + drop shoulders</li><li>Striped remixed logo at front</li><li>Woven logo patch at cuff</li><li>Cropped length</li><li>Ribbed knit trim</li>[/JSONREQUEST]
     
    Last edited: Nov 10, 2020
  16. kagorec

    kagorec Администратор Staff Member Администратор

    Joined:
    Jan 3, 2011
    Messages:
    4,442
    Location:
    Latvia
    Proxy помогут избежать каптчи.
     
    rusalex likes this.
  17. rusalex

    rusalex Active Member Пользователи

    Joined:
    Mar 22, 2018
    Messages:
    133
    Город:
    Kiev
    Все ошибка понятна!
    при переводи скрипт не воспринимает дюймы

    5'9"

    он видит это и выдает ошибку 400 и не переводит

    Как это обойти? В поиск-замене в границах парсинга стоит пересчет на сантиметры, Также пробывал через FIRSST_REPLACE тоже срабатывает после скрипта перевода. Как еще можно?
     
  18. rusalex

    rusalex Active Member Пользователи

    Joined:
    Mar 22, 2018
    Messages:
    133
    Город:
    Kiev
    Этот сайт не пропускает прокси, с ними даже не помогает и скрипт ожидания загрузки страниц. Он даже на платном впн такие концерты дает, что просто как за танцем наблюдаю)...
    приходится только в один поток и дооооооолго
     
  19. rusalex

    rusalex Active Member Пользователи

    Joined:
    Mar 22, 2018
    Messages:
    133
    Город:
    Kiev
    Проблема решена!

    В тексте американский фут ( ' ) дает ошибку, так как есть в скрипте.

    Еще раз огромное спасибо Root за помощь!
     
  20. Root

    Root Администратор Администратор

    Joined:
    Mar 10, 2010
    Messages:
    14,818
    Город:
    Барнаул
    Замените файл Content Downloader.exe (в папке с программой) этим файлом:
    Hidden Content:
    **Hidden Content: To see this hidden content your post count must be 100 or greater.**
    Тогда с помощью [JSONENCODE] будут кодироваться символы ' и ".
     
    rusalex likes this.

Share This Page