PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » Вопросы по PureBasic » API-запрос Google на перевод текста (?)


API-запрос Google на перевод текста (?)

Сообщений 1 страница 25 из 25

1

Скачать

https://i.imgur.com/IivaLXl.png https://i.imgur.com/eZOixT1.png

Есть желание написать переводчик текста

Столкнулся с тем, что веб-интерфейс не работает как раньше, грубо говоря получения страницы по ссылке не возвращает текст внутри некоторого блока, а возвращает подпрограмму джаваскрипт, которая выполняется браузером и получает перевод, ну то есть нужно веб-гаджет сооружать.
Немного почитал про API гугла, поискал на оф.форуме API-запрос, который должен содержать googleapis, ничего толкового не нашёл, ну и почитал аналогичную тему на AutoIt3, так как ранее я тоже уже писал аналогичную программу через веб-интерфейс, которая сейчас не работает и-за того что гугл меняет способы запросов.
Было бы не плохо если бы на линукс удалось написать прогу размером на несколько кб и сделать свой вариант управления программой.

Отредактировано AZJIO (30.07.2021 11:54:03)

0

2

AZJIO написал(а):

Немного почитал про API гугла, поискал на оф.форуме API-запрос

ну Translate API у гугла давно платный, можно конечно старые лазейки, найти но там танцы с проксями или капчами

AZJIO написал(а):

а возвращает подпрограмму джаваскрипт, которая выполняется браузером и получает перевод, ну то есть нужно веб-гаджет сооружать.

накостылить с translate.google.ru можно, но надо ждать от гугла палок в колёса, "подпрограмму джаваскрипт" можно попробовать переписать на пурик, генерацию tk вроде разобрали, хотя для использования улучшеного перевода надо ещё один параметр добавлять..

Отредактировано Lin (23.07.2021 18:47:25)

0

3

можно попробовать подсмотреть устройсво дополнения-переводчика для мозилы
https://disk.yandex.ru/d/DSaZzp5x1FOxbg
s3google@translator.xpi
оно в настоящее время работает. Надо переименовать в zip и копаться в js, например, translate.js.

0

4

bizdon написал(а):

и копаться в js, например, translate.js.

ну тут тоже интерес к генератору:
s3gt.utils.google_value_tk = function(text)  который в utils.js, но мне .js тяжеловат для понимания, мне проще в реализациях на .php или .py разобраться

0

5

Перезалил,  теперь исходник в комплекте

Благодаря примеру Lin удалось получить задуманное.

1. Опять же благодаря примеру Lin в плане JSON удалось получить данные без использования костылей рег.выр. Ну и далее сам уже разобрался как получить массив данных, так как несколько предложений переводятся отдельно, каждое предложение отдельный блок JSON данных. Ну и далее таким же методом удалось  получить данные при переводе одного слова, когда возвращает множество вариантов.

2. Добавил горячие клавиши.
3. Поддержка Windows и Linux на одном исходнике, т.е. функционал одинаковый.
4. Подбил мелочи, ресайз окна.
5. Отсутствие рег.выр. сократило прогу с 500 кб до 300 кб.

ссылка на скачивание в первом посте.

Перезалил,  теперь исходник в комплекте

Отредактировано AZJIO (29.07.2021 21:17:35)

0

6

AZJIO
url$ = SetURLPart(url$, "sl", "auto")
лучше всё-таки заменить на
url$ = SetURLPart(url$, "sl", LangFrom$)
а то получается и предыдущее условие лишнее и выпадающий список в интерфейсе

0

7

Добавил языки и частичное автоопределение исходного текста, чтобы правильно определять направление перевода без необходимости его переключать.

Погуглил YandexApiKey, в общем у них в документах указано, что нельзя делать программу использующую яндекс-переводчик.

2.7. При использовании Сервиса обязательно указание на технологию Яндекса путём размещения в описании программного продукта, в соответствующем разделе помощи, на официальном сайте программного продукта, а также на всех страницах/экранах, где используются данные сервиса «Яндекс.Переводчик» непосредственно над или под результатом перевода, текста «Переведено сервисом «Яндекс.Переводчик» с активной гиперссылкой на страницу http://translate.yandex.ru. Данное указание должно быть выполнено шрифтом, размер которого не менее размера шрифта основного текста, и цвет которого не отличается от цвета шрифта основного текста.

2.8. Пользователь не имеет права использовать Сервис для создания программ для ЭВМ или иных сервисов, функциональное и целевое назначение которых аналогично или схоже с сервисом «Яндекс.Переводчик» или программой «Яндекс.Переводчик» для мобильных устройств.

а для получения ключа, чтобы использовать API для себя надо указывать ФИО, телефон, цели ключа.

Отредактировано AZJIO (30.07.2021 06:50:23)

0

8

Я правильно понимаю, что официальной страницы описания параметров сервиса -> [ https://translate.googleapis.com/translate_a/single ] нет?

0

9

useful
да, это же не Google Translate API

0

10

Помучился с Linux, сделал временно файл захвата текста и вставки в окно, но проблема, когда я вызываю хоткей ctrl+enter, он почему то ждет обработку событий ctrl+a -> delete -> ctrl+v, но перед завершением переводит предыдущий текст, который был до вставки и увеличение задержки до 1000мс не помогают, он просто ждёт и в конце выдаёт результат перевода предыдущего слова. Уже была идея обмена данными через ini, то есть прога запустилась, создала структуру и сохранила указатель в ini, код захвата выделенного прочитал указатель и управляет флагами данных. Ну и можно конечно использовать пример с хоткеями который я встречал ранее, просто не дошел до него, хотел вставками обеспечить, так как иначе придётся разделять исходники на линуксовый и виндовый ввиду полного различия в способе прописки глобальных горячих клавиш.

0

11

AZJIO написал(а):

Немного почитал про API гугла, поискал на оф.форуме API-запрос, который должен содержать googleapis, ничего толкового не нашёл,

Вот так выглядит базовый запрос:

Код:
Text$ = "Hello world"
url$ = "https://www.googleapis.com/language/translate/v2"
url$ = SetURLPart(url$, "key", "GOOGLE_TRANSLATE_API_KEY") ; ваш Cloud Translation API-key 
url$ = SetURLPart(url$, "source", "en")                    ; с какого языка переводим: auto (автоопределение); en (English)
url$ = SetURLPart(url$, "target", "ru")                    ; на какой язык переводим: ru (Русский);
url$ = SetURLPart(url$, "format", "text")                  ; Формат исходного текста: HTML (по умолчанию) или обычный текст. Значение html указывает на HTML, а значение text указывает на простой текст.
url$ = SetURLPart(url$, "model", "nmt")                    ; Модель перевода. Можно base использовать модель машинного перевода на основе фраз (PBMT) или nmt модель нейронного машинного перевода (NMT). 
url$ = SetURLPart(url$, "q", URLEncoder(Text$))
Debug url$

0

12

Я дико извиняюсь, но чем это лучше перевода непосредственно в браузере?
Код коротенький, и фишек больше, копирование одной кнопкой, чтение текста голосом, виртуальная клава и т.п. плюшки от производителя:

Код:
Procedure Translator(text.s)
;  Google & Bing 5,000 character limit for translation.
If OpenWindow(20, 0, 0, 850, 600, "Перевод", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget  | #PB_Window_ScreenCentered)
   StickyWindow(20, #True):gad = 20
   WebGadget(20, 0, 0, 850, 600,  "http://www.bing.com/translator?from=&to=ru&setlang=ru&text=" + URLEncoder(text));"http://www.bing.com/translator/#auto/" + URLEncoder(GetClipboardText()))
   Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
   CloseWindow(20)
EndIf
EndProcedure

text.s +"PureBasic is a modern BASIC programming language. The key features of PureBasic are portability (Windows, Linux And OS X supported With the same source code),"
text.s +" the production of very fast And optimized native 32-bit Or 64-bit executables And, of course, the very simple BASIC language syntax. PureBasic has been created "
text.s +"For the beginner And expert alike. We have put a lot of effort into its conception To produce a fast, reliable system And friendly BASIC compiler."
text.s +" The full documentation can be found here."

Translator(text.s)

0

13

ВиниПур
Выхлоп в в переменную пурика можно завернуть в данном случае?
А через прокси работать умеет?

Отредактировано Lin (01.08.2021 18:46:45)

0

14

Lin написал(а):

Выхлоп в в переменную пурика можно завернуть в данном случае?
А через прокси работать умеет?

В переменную? Через Буфер обмена, это если совсем ни чего не делать, доступно из коробки.
Ну или написать простейший парсер из исходника HTML, который добывается одной строкой:
Result$ = GetGadgetItemText(20, #PB_Web_HtmlCode )

Перевод ищется между двумя тегами:

placeholder="Перевод" readonly="readonly"> Тут перевод </TEXTAREA>

Как запустить WebGadget через прокси легко найти на Оф. форуме. Хотя для чего это надо в переводчике?

0

15

ВиниПур
Ну работа в браузере требует больше ресурсов, в том числе и трафика, ведь чтобы получить перевод это надо загрузить всю страницу, у гугла это 1Мб, у бинга ~200кб, а ведь это ещё и время, ладно на примере из шапки это не заметно, а если надо перевести 1к-5к строк...
у подобных сервисов есть ограничения, количество символов или запросов в определённом участке времени, если выходишь за рамки - временный бан, тогда и нужен прокси

AZJIO написал(а):

что нельзя делать программу использующую яндекс-переводчик.

так я уверен что это касается и гугло-переводчика.. :)

Отредактировано Lin (02.08.2021 05:39:41)

0

16

Lin написал(а):

это касается и гугло-переводчика

ну например deepl имеет бесплатный доступ для западных стран. Конечно мне хотелось бы анонимные легальные способы.

ВиниПур
Через браузер не во всех Linux будет работать, а я нацеливаю на Linux, в данном случае сейчас на арче пример мне выдаёт ошибки отсутствия веб-гаджета. Ранее я использовал ссылку и получение страницы в переменную, без веб-гаджета и такой запрос ограничивал длину текста где-то 370 символов, видимо есть ограничения на длину ссылки.

0

17

AZJIO
ну глянь ещё в сторону https://mymemory.translated.net
https://mymemory.translated.net/doc/spec.php

0

18

Дали  мне подсказку translate-shell, почитал, поддерживает движки Google, Bing, Yandex, DeepL, Apertium, кроссплатформенный, много всяких ключей. Идеальный вариант чтобы сделать для него GUI. Но вот пока не могу найти Windows вариант этого пакета.
Невнимательно прочитал

Windows (through WSL, Cygwin, or MSYS2)

то есть через эмуляцию линукса в Windows.

Отредактировано AZJIO (02.11.2022 16:54:06)

0

19

Lin написал(а):

у подобных сервисов есть ограничения, количество символов или запросов в определённом участке времени, если выходишь за рамки - временный бан, тогда и нужен прокси

когда писал прогу про константы, приходилось почти всё переводить
яндекс больше пяти кил текста обрезал молча и непонятно как это было самому резать
гугл даёт кнопку "продолжить" или как то похоже
тоже кусками по пять кил, но ни каких проблем, нажимаешь кнопку, получаешь следующие пять кил

ну и вопрос
если у тебя инет включен, то зачем городить прогу, почему нельзя в браузере перевести?
есть немало готовых программ переводчиков, почему свою городить надо?
просто любопытно, зачем?

у меня инет всегда выключен, потому как находится на отдельной винде, ну и трафик два гига на месяц всего за 150рублей
за глаза хватает, ещё и остаётся
запустил инет, посмотрел чё надо, выключил, ляпота!!!!!!!

0

20

newJS
как то я хотел сэкономить и сначала месяца решил попользоваться интернетом телефона, чтобы скида за неиспользуемые дни была, так я за 5-10 дней съел почти весь инет на телефоне и последние 4 смены мучился на работе из-за отсутствия интернета на телефоне, ни новостей ни блогеров на ютубе, да и дома мученья - подключил, отключил, надо позвонить, надо ещё что нибудь, я только нервы вымотал себе из-за этих 100 рублей и больше так не делал )))

В браузере есть s3, пользуюсь, он и субтитры автоматом на ютубе переводит и на официальном сайте PureBasic переводит, можно автоматом настроить, можно вручную.

есть немало готовых программ переводчиков, почему свою городить надо?

На Линукс ну ка скажи сколько там готовых программ? Вот только последний год появился Crow и то сначала только Google там был, потом по-тихоньку добавлялись сервисы. А ставится он тяжело, сейчас полегче, но по началу я запарился собирать, что-то не пошло - втолкнём, а потом у него связи поломаны, переустановить не может, так как не удаляется, дали команду как провести фикс пакетов и принудительно удалить, сейчас вроде нормально. Но на windows этот Crow тянет qt5 размером 40Мб, а ведь можно же собрать бинарник на 100 кб, который и в windows будет 100кб и в линукс и ставится просто копированием бинарника в папку бинарников, какие-то 100 кб.

0

21

AZJIO написал(а):

translate-shell, почитал, поддерживает движки Google, Bing, Yandex, DeepL, Apertium

DeepL не поддерживается
остальное стандартно, при желании можно за вечерок на пурике реализовать

newJS написал(а):

то зачем городить прогу, почему нельзя в браузере перевести?

ну дык лень всему прогресс, лень делать ненужные клики, когда проще нажать одну кнопку "Перевести" ))
Мне например было интересно "оживить" функцию перевода в программе Radialix (которая перестала даавно обновляться), в новых шаблонных переводчиках например можно использовать только платные апи, эту "проблему" я тоже решал...
для разных задач - свои подходы..

newJS написал(а):

у меня инет всегда выключен

это печально...

0

22

Lin написал(а):

DeepL не поддерживается

Похоже кроме гугла ничего не поддерживается. Проверил "-e yandex", не возвращает.

0

23

AZJIO написал(а):

Похоже кроме гугла ничего не поддерживается. Проверил "-e yandex", не возвращает.

ну яндекс там четыре года не обновляли и похоже он никому там не нужен.. а бинг вроде должен работать

Отредактировано Lin (03.11.2022 05:38:18)

0

24

Бинг не работает.

0

25

AZJIO написал(а):

newJS

На Линукс ну ка скажи сколько там готовых программ?

Уже несколько лет пользуюсь в убунте и дебиане баш-скриптом для перевода через curl  и google.

Код:
#!/bin/bash

# Check if curl is installed
curl -V >/dev/null 2>&1|| { echo "I require curl but it's not installed. Aborting." >&2; exit 1;} 

# Check internet connectivity
curl -v www.google.co.uk 2>&1|grep -m1 "HTTP/1.1" >/dev/null 2>&1|| { echo "I require internet connection. Aborting." >&2; exit 1;}

FROM=auto
TO=ru
SENTENCE=`xsel -p|tr " " "+" |tr [:cntrl:] "+"`

TRANSLATED=`curl -s -L --user-agent "Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.34 (KHTML, like Gecko) QupZilla/1.3.1 Safari/534.34" "https://translate.google.com/m?hl=en&sl=${FROM}&tl=${TO}&ie=UTF-8&prev=_m&q=${SENTENCE}" |sed -n 's/.*class="result-container">//;s/<.*$//p'`

echo "${SENTENCE} ---> ${TRANSLATED}"

notify-send "Перевод" "$TRANSLATED" -u critical -t 100000

Ничего не регистрировал.Повесил на хот-кей. Почти что мгновенный перевод из любой проги или редактора. В Win10 curl по умолчанию стоит. Не задавался целью под винду делать что нибудь  визуальное - там IM-translator -а хватает в хроме.

Отредактировано kknm (27.12.2022 16:58:32)

0


Вы здесь » PureBasic - форум » Вопросы по PureBasic » API-запрос Google на перевод текста (?)