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

Тема в разделе "Формирование GET и POST-запросов", создана пользователем rusalex, 7 ноя 2020.

  1. rusalex

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

    Регистрация:
    22 мар 2018
    Сообщения:
    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>

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

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

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

    Регистрация:
    12 фев 2012
    Сообщения:
    110
    Ключ открой админ не подскажет если инфа не полная, где ему ключ искать, скорее всего он уже посмотрел и проехал дальше)
     
    Root и rusalex нравится это.
  3. rusalex

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

    Регистрация:
    22 мар 2018
    Сообщения:
    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>

    В первом сообщении также изменил
     
    Последнее редактирование: 8 ноя 2020
  4. Root

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

    Регистрация:
    10 мар 2010
    Сообщения:
    13.758
    Город:
    Барнаул
    Заголовки были составлены неправильно.

    Подправил:
    Код:
    <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>
    Нужно читать текст ошибки, который получаете при предпросмотре.

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

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

    Регистрация:
    22 мар 2018
    Сообщения:
    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 Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    13.758
    Город:
    Барнаул
    Код:
    <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 нравится это.
  7. rusalex

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

    Регистрация:
    22 мар 2018
    Сообщения:
    133
    Город:
    Kiev
    Спасибо. Я проверил Ваш вариант, выдает ошибку 400 Bad Request

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

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

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

    Вложения:

  8. Root

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

    Регистрация:
    10 мар 2010
    Сообщения:
    13.758
    Город:
    Барнаул
    Попробуйте так.
    Код:
    <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>
     
    Последнее редактирование: 9 ноя 2020
    rusalex нравится это.
  9. rusalex

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

    Регистрация:
    22 мар 2018
    Сообщения:
    133
    Город:
    Kiev
    Супер!!! Большое спасибо!!!
     
  10. rusalex

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

    Регистрация:
    22 мар 2018
    Сообщения:
    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 Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    13.758
    Город:
    Барнаул
    Приложите проект, где видно ошибку.
     
  12. rusalex

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

    Регистрация:
    22 мар 2018
    Сообщения:
    133
    Город:
    Kiev
    Вот проект. Я упростил, оставил, только перевод, все остальное убрал, чтобы не мешало, так как очень много.

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

    Вложения:

  13. Root

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

    Регистрация:
    10 мар 2010
    Сообщения:
    13.758
    Город:
    Барнаул
    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 Пользователи

    Регистрация:
    22 мар 2018
    Сообщения:
    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 ? Я так понял автоматически капчу с картинками нельзя кликать! Я и зарегистрировался в службе, но уже писал, здесь на форуме и ответили, что такого нет...
     
    Последнее редактирование: 10 ноя 2020
  15. rusalex

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

    Регистрация:
    22 мар 2018
    Сообщения:
    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]
     
    Последнее редактирование: 10 ноя 2020
  16. kagorec

    kagorec Администратор Команда форума Администратор

    Регистрация:
    3 янв 2011
    Сообщения:
    4.120
    Город:
    Riga
    Proxy помогут избежать каптчи.
     
    rusalex нравится это.
  17. rusalex

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

    Регистрация:
    22 мар 2018
    Сообщения:
    133
    Город:
    Kiev
    Все ошибка понятна!
    при переводи скрипт не воспринимает дюймы

    5'9"

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

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

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

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

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

    Регистрация:
    22 мар 2018
    Сообщения:
    133
    Город:
    Kiev
    Проблема решена!

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

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

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

    Регистрация:
    10 мар 2010
    Сообщения:
    13.758
    Город:
    Барнаул
    Замените файл Content Downloader.exe (в папке с программой) этим файлом:
    Скрытое содержимое:
    **Скрытое содержимое: доступно при наличии 100 постов.**
    Тогда с помощью [JSONENCODE] будут кодироваться символы ' и ".
     
    rusalex нравится это.

Поделиться этой страницей