Помощь в отладке скрипта

Помощь в написании скриптов
SerhiyKa
Posts: 1
Joined: 06 Apr 2023, 10:39

Помощь в отладке скрипта

06 Apr 2023, 10:47

Есть скрипт (возможно, взят отсюда, не помню), суть которого состоит в переводе выделенного текста в онлайн-переводчике с последующей вставкой перевода по месту курсора. Скрипт частично работает: запускается окошко с выбором исходного и целевого языков. После нажатия горячей клавиши появляется и через секунду исчезает подсказка: "Translating...", а дальше - ничего, скрипт висит в трее, перевод не вставляется. Помогите обнаружить ошибку, в AHK разбираюсь слабо.

Code: Select all

#NoEnv
SendMode Input
SetWorkingDir %A_ScriptDir%
SetTitleMatchMode, 3

ToolTipVisible = 0
Gui, 1:Add, Text, x10 y15 vTb1, Source language:
Gui, 1:Add, Combobox, x+20 yp-3 vLangIn, auto||en|ru|uk
Gui, 1:Add, Text, x10 y+15 vTb2, Target language:
Gui, 1:Add, Combobox, x+22 yp-3 vLangOut, en|ru|uk||
Gui, 1:Add, Checkbox, x10 y+20 Checked vPaste2CB, Paste translation to clipboard when closing tooltip
Gui, 1:Add, Checkbox, x10 y+15 Checked vHideToolTip, Hide tooltip on mouseclick
Gui, 1:Add, Button, x30 y+20 w80 vB1, &Exit
Gui, 1:Add, Button, x+30 w80 Default vB2, &OK
Gui, 1:Show, Autosize
Return

ButtonExit:
GuiEscape:
GuiClose:
ExitApp

ButtonOK:
Gui, 1:Submit
Return

; [Ctrl]+[Alt]+[F11] shows the little user interface for changing source and target language
^!F11::
Gui, 1:Show, Autosize
Return

~RButton::
~MButton::
~LButton::
If HideToolTip = 0
    Return
If ToolTipVisible = 1
{
    ToolTip
    ToolTipVisible = 0
    Return
}
Return

; [Ctrl]+[F11] runs DeepL translator for selected text or makes the tooltip with the translation disappear if it is visible
^F11::
If ToolTipVisible = 1
{
    ToolTip
    ToolTipVisible = 0
    Return
}
CurrentCB = %Clipboard%
Clipboard =
SendInput, ^c
ClipWait, 5
If ErrorLevel
{
    MsgBox, 48, DeepLTranslateSelection, No text highlighted or problem copying text to clipboard.
    Return
}
Source = %Clipboard%
StringLen, SourceLength, Source
SourceLength := SourceLength * 5
ToolTip, Translating... please wait ☺., % A_CaretX-SourceLength, % A_CaretY+50
Target =
Target := DeepLTranslate(Source,LangIn,LangOut)
ToolTip, %Target%, % A_CaretX-SourceLength, % A_CaretY+50
ToolTipVisible = 1
If Paste2CB = 1
    Clipboard = %Target%
Else
    Clipboard = %CurrentCB%
Return

DeepLTranslate(Source,LangIn,LangOut)
{
    StringReplace, Source, Source, %A_Space%, `%20, All
    Base := "https://www.deepl.com/translator"
    Path := Base . "/" . LangIn . "-" . LangOut . "/" . Source
    IE := ComObjCreate("InternetExplorer.Application") ; Creation of hidden IE instance to look up DeepL Translate and retrieve translation
    IE.Navigate(Path)
    While IE.readyState!=4 || IE.document.readyState!="complete" || IE.busy
        Sleep 250
    Result := ""
    btns := IE.document.getElementsByClassName("lmt__translations_as_text__text_btn")
    if (btns.length > 0) {
        Result := btns[0].innerText
    }
    IE.Quit
    Return Result
}
mcl
Posts: 361
Joined: 04 May 2018, 16:35

Re: Помощь в отладке скрипта

06 Apr 2023, 13:59

SerhiyKa wrote: Помогите обнаружить ошибку
Ошибки, вероятно, нет. У меня DeepL (сайт-переводчик, который используется в скрипте) открывается в обычном браузере (Firefox), но сразу сбрасывается при попытке зайти через Internet Explorer, который используется скриптом. Похоже, DeepL или забанил вас по айпи за частые запросы, или запретил вообще всем вход через IE.

Можете заменить его на гугловский (© teadrinker), он, вроде, работает.

Return to “Помощь”

Who is online

Users browsing this forum: No registered users and 15 guests