-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathGet-Translation.psm1
76 lines (76 loc) · 3.04 KB
/
Get-Translation.psm1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
function Get-Translation {
<#
.SYNOPSIS
Module for text translation
.DESCRIPTION
Examples:
Get-Translation -Provider DeepL -Text "I translating the text"
Get-Translation -Provider DeepL -Text "Я перевожу текст"
Get-Translation -Provider Google -Text "I translating the text"
Get-Translation -Provider Google -Text "Я перевожу текст" -Language en
.LINK
https://github.com/Lifailon/Selenium-Modules
https://deepl.com/translator
https://translate.google.ci
#>
param (
[Parameter(Mandatory,ValueFromPipeline)][string]$Text,
[ValidateSet("DeepL","Google")][string]$Provider = "DeepL",
[string]$Language = "ru"
)
$path = "$home\Documents\Selenium\"
$log = "$path\ChromeDriver.log"
$ChromeDriver = "$path\ChromeDriver.exe"
$WebDriver = "$path\WebDriver.dll"
$SupportDriver = "$path\WebDriver.Support.dll"
$Chromium = (Get-ChildItem $path -Recurse | Where-Object Name -like chrome.exe).FullName
Add-Type -Path $WebDriver
Add-Type -Path $SupportDriver
try {
$ChromeOptions = New-Object OpenQA.Selenium.Chrome.ChromeOptions
$ChromeOptions.BinaryLocation = $Chromium
$ChromeOptions.AddArgument("start-maximized")
$ChromeOptions.AcceptInsecureCertificates = $True
$ChromeOptions.AddArgument("headless")
$ChromeDriverService = [OpenQA.Selenium.Chrome.ChromeDriverService]::CreateDefaultService($ChromeDriver)
$ChromeDriverService.HideCommandPromptWindow = $True
$ChromeDriverService.LogPath = $log
$ChromeDriverService.EnableAppendLog = $False
$ChromeDriverService.EnableVerboseLogging = $False
$Selenium = New-Object OpenQA.Selenium.Chrome.ChromeDriver($ChromeDriverService, $ChromeOptions)
if ($Provider -eq "DeepL") {
$Url = "https://deepl.com/translator"
$Selenium.Navigate().GoToUrl($Url)
Start-Sleep 1
$div = $Selenium.FindElements([OpenQA.Selenium.By]::TagName("div"))
$InTextBox = $div | Where-Object ComputedAccessibleRole -Match "TextBox" | Where-Object ComputedAccessibleLabel -Match "Исходный текст"
$OutTextBox = $div | Where-Object ComputedAccessibleRole -Match "TextBox" | Where-Object ComputedAccessibleLabel -Match "Переведенный текст"
$OutTemp = $OutTextBox.Text
$InTextBox.SendKeys($Text)
while ($True) {
if ($OutTextBox.Text -ne $OutTemp) {
return $OutTextBox.Text
break
}
}
}
elseif ($Provider -eq "Google") {
$Url = "https://translate.google.ci/?sl=auto&tl=$Language&op=translate"
$Selenium.Navigate().GoToUrl($Url)
Start-Sleep 1
$in = $Selenium.FindElements([OpenQA.Selenium.By]::ClassName("er8xn"))
$in.SendKeys($Text)
while ($True) {
$out = $Selenium.FindElements([OpenQA.Selenium.By]::ClassName("ryNqvb"))
if ($out) {
return $out.Text
break
}
}
}
}
finally {
$Selenium.Close()
$Selenium.Quit()
}
}