Как можно открыть каждую строку буфера обмена, если она есть, как URL в том же окне, но с задержкой, на отдельных вкладках с помощью AutoHotkey (Chrome)? - PullRequest
2 голосов
/ 30 апреля 2020

Я хочу многократный поиск в Google Images. Я знаю, что есть что-то вроде

clipboard := StrReplace(clipboard, "+", "%2B")

, но как это возможно? Ниже приведен код, относящийся к разовому поиску.

url_encoding(str)
{
  f = %A_FormatInteger%
  SetFormat, Integer, Hex
  if RegExMatch(str, "^\w+:/{0,2}", pr)
    StringTrimLeft, str, str, StrLen(pr)
  StringReplace, str, str, `%, `%25, All
  Loop
    if RegExMatch(str, "i)[^\w\.~%/:]", char)
      StringReplace, str, str, %char%, % "%" . SubStr(Asc(char),3), All
    else break
  SetFormat, Integer, %f%
  return, pr . str
}


F3::
image_search:
a = `%
old_clipboard := ClipboardAll
clipboard := url_encoding(clipboard)
Run, "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --profile-directory="Profile 2" --force-wave-audio --incognito --new-window https://www.google.com/search?tbm=isch&as_q=%clipboard%, , Max
clipboard := old_clipboard
return

Изменение с% clipboard% на% A_LoopField% привело к тому, что https://www.google.com/imghp?tbm=isch&as_q= было открыто при поиске ab c. Поэтому я добавил синтаксический анализ L oop:

F3::
image_search:
a = `%
old_clipboard := ClipboardAll
Loop, parse, clipboard, `n, `r
{
  clipboard := url_encoding(clipboard)
  Run, "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --profile-directory="Profile 2" --force-wave-audio --incognito --new-window https://www.google.com/search?tbm=isch&as_q=%A_LoopField%, , Max
}
clipboard := old_clipboard
return

Когда я затем открыл

abc
123

, каждый из поисковых запросов был открыт в новом окне. Но они должны быть открыты только в одном новом окне. Цель состоит в том, чтобы исключить пустые строки (также с пробелами), а также пробелы до и после поисковых запросов. Как только это будет сделано, url_encoding может быть использован для правильного поиска. Во всех этих случаях только что упомянутый код не работал. Например, если

 abc & def       


123 % 456   

находится в буфере обмена, новое окно инкогнито должно отображать

abc & def

на вкладке 1 и

123 % 456

на вкладке 2.

1 Ответ

0 голосов
/ 05 мая 2020

url_encoding () добавил разрывы строк как

%D%A

, поскольку они не были исключены.

Решение

url_encoding(str)
{
  f = %A_FormatInteger%
  SetFormat, Integer, Hex
  if RegExMatch(str, "^\w+:/{0,2}", pr)
    StringTrimLeft, str, str, StrLen(pr)
    StringReplace, str, str, `%, `%25, All
  Loop
    if RegExMatch(str, "i)[^\w\.~%/:\r\n]", char)
      StringReplace, str, str, %char%, % "%" . SubStr(Asc(char),3), All
    else break
  SetFormat, Integer, %f%
  return, pr . str
}


F3::
image_search:
old_clipboard := ClipboardAll
clipboard := RegExReplace(clipboard, "`am)^\s+")
clipboard := RegExReplace(clipboard, "`am)\s+$")
clipboard := url_encoding(clipboard)
Run, "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --profile-directory="Profile 2" --force-wave-audio --incognito --new-window, , Max
Sleep, 1000
Loop, parse, clipboard, `n, `r
{
  Run, "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --profile-directory="Profile 2" --force-wave-audio --incognito https://www.google.com/search?tbm=isch&as_q=%A_LoopField%, , Max
  Sleep, 500
}
clipboard := old_clipboard
return
...