You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
402 lines
13 KiB
Plaintext
402 lines
13 KiB
Plaintext
; Notes/Extra Info/#Includes
|
|
;------------------------------------------------
|
|
|
|
|
|
|
|
; Chrome Global Variables
|
|
;------------------------------------------------
|
|
; Chrome/Selenium
|
|
global ChromeFilepath
|
|
; Declare global variables here so they don't have to be declared in each script
|
|
global ChromeTabsURLArray
|
|
global DriverTitleArray
|
|
global LastWebsitePostURL
|
|
global CurrentTabURL
|
|
global URLOfLastErrorPage
|
|
global chromeDLURL64
|
|
global chromedriverDLURL64
|
|
global InstalledChromeVersion
|
|
|
|
|
|
; Chrome Related Functions
|
|
;------------------------------------------------
|
|
DownloadLatestChromium(){
|
|
if(ChromeFilepath = "")
|
|
ChromeFilepath := GetInstalledChromeFilepath()
|
|
|
|
if(chromedriverDLURL64 ="" or chromeDLURL64 = ""){
|
|
ChromeStableLatestVersion := GetLatestChromeStableVersion()
|
|
GetDownloadURLOfChromeAndDriver(ChromeStableLatestVersion)
|
|
}
|
|
|
|
; Msgbox % "chromedriverDLURL64: " chromedriverDLURL64
|
|
; Msgbox % "chromeDLURL64: " chromeDLURL64
|
|
|
|
ParentFolder = %A_ScriptDir%\Lib\Downloads
|
|
ChromeDriverDownloadZipFilepath = %ParentFolder%\chromedriver-win64.zip
|
|
ChromeDriverDownloadFilepath = %ParentFolder%\chromedriver-win64
|
|
ChromeDriverTemporaryExeFilepath = %ParentFolder%\chromedriver-win64\chromedriver-win64\chromedriver.exe
|
|
ChromeDownloadZipFilepath = %ParentFolder%\chrome-win64.zip
|
|
ChromeExtractedDirectory = %A_ScriptDir%\Lib\chrome-win64
|
|
|
|
ChromeDriverMoverEXEFilepath = %A_ScriptDir%\Lib\Chromedriver-Mover.exe
|
|
ChromeDriverMoverURL = https://git.freedomainplaylists.com/yuriy/Chromedriver-Mover/releases/download/1.1/Chromedriver-Mover.exe
|
|
|
|
ChromeDriverProgramFilesExeFilepath = C:\Program Files\SeleniumBasic\chromedriver.exe
|
|
|
|
ManualMoveChromedriverMessage =Please manually copy chromedriver.exe from:`n`n%ChromeDriverDownloadFilepath%`n`nTo:`n`nC:\Program Files\SeleniumBasic\chromedriver.exe
|
|
|
|
/*
|
|
With URLDownloadToFile you don't need to delete pre-existing files, as they get overwriten when a new file is downloaded.
|
|
FileRemoveDir, %ParentFolder%, 1
|
|
if(ErrorLevel){
|
|
Message = Failed to download Parent Download Folder.
|
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
|
}
|
|
|
|
if(!FileExist(ParentFolder)){
|
|
; msgbox, creating dir
|
|
FileCreateDir, %ParentFolder%
|
|
}
|
|
|
|
Msgbox % "ParentFolder: " ParentFolder
|
|
|
|
msgbox % FileExist(ParentFolder)
|
|
|
|
if(!FileExist(ParentFolder)){
|
|
msgbox, creating dir
|
|
FileCreateDir, %ParentFolder%
|
|
}
|
|
|
|
FileDelete, %ChromeDriverDownloadZipFilepath%
|
|
if(ErrorLevel)
|
|
msgbox, failed to delete %ChromeDriverDownloadZipFilepath%
|
|
|
|
FileRemoveDir, %ChromeDownloadZipFilepath%, 1
|
|
if(ErrorLevel)
|
|
msgbox, failed to delete %ChromeDownloadZipFilepath%
|
|
|
|
FileRemoveDir, %ChromeDriverDownloadFilepath%, 1
|
|
msgbox, failed to delete %ChromeDriverDownloadFilepath%
|
|
|
|
FileRemoveDir, %ChromeExtractedDirectory%, 1
|
|
|
|
*/
|
|
|
|
if(!FileExist(ParentFolder)){
|
|
; msgbox, creating dir
|
|
FileCreateDir, %ParentFolder%
|
|
}
|
|
|
|
|
|
; close any open instances of Chromium
|
|
SetTitleMatchMode, 2 ; substring
|
|
|
|
|
|
if(WinExist(" - Chromium")){
|
|
Message = Trying to close any open Chromium Windows
|
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
|
|
|
Loop, 10 {
|
|
|
|
WinClose, - Chromium ; , WinText, SecondsToWait, ExcludeTitle, ExcludeText]
|
|
sleep, 500
|
|
}
|
|
}
|
|
|
|
if(WinExist(" - Chromium")){
|
|
Message = Failed to close existing Chromium Window(s). Please close them manually and then click the "Update Chrome" button again
|
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
|
ToolTip
|
|
MsgBox 0x10,, %Message%
|
|
return
|
|
}
|
|
|
|
|
|
; msgbox
|
|
|
|
FileGetTime, ChromeDriverExeOldCreationTime, %ChromeDriverProgramFilesExeFilepath%, C
|
|
|
|
|
|
|
|
Message = Downloading Chromedriver v%ChromeStableLatestVersion% to:`n%ChromeDriverDownloadZipFilepath%
|
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
|
UrlDownloadToFile, %chromedriverDLURL64%, %ChromeDriverDownloadZipFilepath%
|
|
|
|
Message = Downloading Chromium v%ChromeStableLatestVersion% to:`n%ChromeDownloadZipFilepath%
|
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
|
UrlDownloadToFile, %chromeDLURL64%, %ChromeDownloadZipFilepath%
|
|
|
|
|
|
; delete the pre-existing chrome-win64 directory
|
|
Message = Deleting Old Chromium Directory
|
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
|
|
|
FileRemoveDir, %ChromeExtractedDirectory%, 1
|
|
if(FileExist(ChromeExtractedDirectory)){
|
|
Message = Failed to delete the old Chromium. `nPlease manually delete the following directory and then run the Chrome Update again.`n`n %ChromeExtractedDirectory%
|
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar")
|
|
|
|
MsgBox 0x10,, %Message%
|
|
|
|
ToolTip
|
|
return
|
|
}
|
|
|
|
|
|
; Double check that .zip files exist
|
|
ChromeDriverZipExists := FileExist(ChromeDriverDownloadZipFilepath)
|
|
if(!ChromeDriverZipExists){
|
|
Message = Download of chromedriver failed for some reason. chromedriver.zip not found.
|
|
SaveOrPostProgress(Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
|
MsgBox 0x10,, %Message%
|
|
Return
|
|
}
|
|
|
|
ChromeZipExists := FileExist(ChromeDownloadZipFilepath)
|
|
if(!ChromeZipExists){
|
|
Message = Download of chrome failed for some reason. chrome.zip not found.
|
|
SaveOrPostProgress(Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
|
MsgBox 0x10,, %Message%
|
|
Return
|
|
}
|
|
|
|
|
|
|
|
|
|
Message = Extracting Chromedriver v%ChromeStableLatestVersion% Zip file
|
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
|
Unzip(ChromeDriverDownloadZipFilepath, ChromeDriverDownloadFilepath)
|
|
|
|
Message = Extracting Chromium v%ChromeStableLatestVersion% Zip file
|
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
|
Unzip(ChromeDownloadZipFilepath, ChromeExtractedDirectory)
|
|
|
|
|
|
|
|
|
|
; Check if the Copy-ChromeDriver-To-Program-Files.exe file exists
|
|
|
|
; @todo, remove later. this is temporary to fix chromedriver-mover being broken and needing to be replaced
|
|
FileDelete, %ChromeDriverMoverEXEFilepath%
|
|
|
|
Message = Checking Chromedriver-Mover.exe exists
|
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
|
|
|
if(!FileExist(ChromeDriverMoverEXEFilepath)){
|
|
Message = Chromedriver-Mover not found. Downloading from Gitea
|
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
|
|
|
UrlDownloadToFile, %ChromeDriverMoverURL%, %ChromeDriverMoverEXEFilepath%
|
|
if(ErrorLevel){
|
|
Message = Failed to download the Copy-ChromeDriver-To-Program-Files.exe executable. `n`n%ManualMoveChromedriverMessage%
|
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
|
|
|
ToolTip
|
|
Return
|
|
}
|
|
}
|
|
|
|
|
|
if(!FileExist(ChromeDriverMoverEXEFilepath)){
|
|
Message = ChromeDriver-Mover not found after downloading. `nPossibly triggered and deleted by Antivirus?`n`n%ManualMoveChromedriverMessage%
|
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging,msgbox")
|
|
|
|
ToolTip
|
|
return
|
|
}
|
|
|
|
Message = Starting up Chromedriver-Mover
|
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
|
|
|
|
|
; Msgbox % "ChromeDriverMoverEXEFilepath: " ChromeDriverMoverEXEFilepath
|
|
; Msgbox % "ChromeDriverDownloadFilepath: " ChromeDriverDownloadFilepath
|
|
|
|
try, Run "%ChromeDriverMoverEXEFilepath%" "%ChromeDriverDownloadFilepath%"
|
|
if(ErrorLevel = "ERROR"){
|
|
Message = Failed to run Chromedriver-Mover.exe program to automatically copy the chromedriver to Program Files.`n%ManualMoveChromedriverMessage%
|
|
MsgBox 0x40,, %Message%
|
|
}
|
|
|
|
|
|
Message = Waiting 30 seconds for new Chromedriver to get moved to C:\Program Files\SeleniumBasic\
|
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
|
|
|
Loop, 30 {
|
|
sleep, 1000
|
|
|
|
FileGetTime, ChromeDriverExeCurrentCreationTime, %ChromeDriverProgramFilesExeFilepath%, C
|
|
|
|
; Msgbox % "ChromeDriverExeOldCreationTime: " ChromeDriverExeOldCreationTime
|
|
; Msgbox % "ChromeDriverExeCurrentCreationTime: " ChromeDriverExeCurrentCreationTime
|
|
|
|
if(ErrorLevel){
|
|
|
|
Message = chromedriver.exe not found in %ChromeDriverProgramFilesExeFilepath%. `nWaiting for new version to get copied over.
|
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
|
; sleep, 1000
|
|
Continue
|
|
|
|
}
|
|
|
|
if(ChromeDriverExeCurrentCreationTime != ChromeDriverExeOldCreationTime and ChromeDriverExeCurrentCreationTime != ""){
|
|
break
|
|
}
|
|
|
|
; sleep, 1000
|
|
Continue
|
|
}
|
|
|
|
if(!FileExist(ChromeDriverProgramFilesExeFilepath)){
|
|
Message = Failed to Automatically move chromedriver.exe`n%ManualMoveChromedriverMessage%
|
|
MsgBox 0x40,, %Message%
|
|
ToolTip
|
|
return
|
|
}
|
|
|
|
Message = Chromium and Chromedriver.exe were updated successfully.
|
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
|
MsgBox 0x40,, %Message%
|
|
|
|
ToolTip
|
|
return
|
|
}
|
|
|
|
|
|
|
|
CheckForChromeUpdates(ChromeFilepath := ""){
|
|
if(ChromeFilepath = "")
|
|
ChromeFilepath := GetInstalledChromeFilepath()
|
|
|
|
CurrentInstalledChromeVersion := GetInstalledChromeVersion()
|
|
CurrentChromeStableVersion := GetLatestChromeStableVersion()
|
|
|
|
if(CurrentInstalledChromeVersion < CurrentChromeStableVersion){
|
|
ChromeUpdateAvailable := 1
|
|
return ChromeUpdateAvailable
|
|
}
|
|
else, Return 0
|
|
|
|
|
|
}
|
|
|
|
|
|
GetInstalledChromeFilepath(){
|
|
; ChromeFilepath is global variable
|
|
|
|
if(ChromeFilepath = ""){
|
|
|
|
ChromePortableFilepath = %A_ScriptDir%\Lib\chrome-win64\chrome.exe
|
|
ChromePortableFilepath2 = %A_ScriptDir%\Lib\chrome-win64\chrome-win64\chrome.exe ; filepath of chrome.exe that was downloaded automatically using this uploader
|
|
|
|
if(FileExist(ChromePortableFilepath) or FileExist(ChromePortableFilepath2)){
|
|
if(FileExist(ChromePortableFilepath2))
|
|
ChromeFilepath := ChromePortableFilepath2
|
|
|
|
if(FileExist(ChromePortableFilepath))
|
|
ChromeFilepath := ChromePortableFilepath
|
|
|
|
Message = Using Chromium Portable for Upload
|
|
SaveOrPostProgress(Message:=Message,PostType:="ErrorLoggingTextFile,DiscordErrorLogging")
|
|
}
|
|
else {
|
|
MsgBox 0x10, Chromium Portable not Found, Chromium Portable not found. `nPlease make sure it's located at one of the following paths and then try again.`n`n%ChromePortableFilepath% `nOR`n%ChromePortableFilepath2%
|
|
|
|
|
|
; Leave this in for now, but i don't think we will be going to using the system Chrome in the future.
|
|
; if(FileExist("C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"))
|
|
; ChromeFilepath = C:\Program Files (x86)\Google\Chrome\Application\chrome.exe
|
|
|
|
; if(FileExist("C:\Program Files\Google\Chrome\Application\chrome.exe"))
|
|
; ChromeFilepath = C:\Program Files\Google\Chrome\Application\chrome.exe
|
|
}
|
|
}
|
|
ToolTip
|
|
|
|
}
|
|
|
|
GetInstalledChromeVersion(){
|
|
|
|
if(ChromeFilepath = ""){
|
|
GetInstalledChromeFilepath()
|
|
}
|
|
|
|
GetInstalledChromeVersionCommand = powershell (Get-Item '%ChromeFilepath%').VersionInfo.ProductVersion
|
|
InstalledChromeVersion := RunCMD(GetInstalledChromeVersionCommand)
|
|
|
|
if(InStr(InstalledChromeVersion, "`r"))
|
|
InstalledChromeVersion := StrReplace(InstalledChromeVersion, "`r") ; replace any newline characters that powershell returns
|
|
|
|
return InstalledChromeVersion
|
|
}
|
|
|
|
|
|
GetLatestChromeStableVersion(){
|
|
|
|
; https://github.com/GoogleChromeLabs/chrome-for-testing#json-api-endpoints
|
|
json_str := urldownloadtovar("https://googlechromelabs.github.io/chrome-for-testing/last-known-good-versions.json")
|
|
|
|
|
|
; converts json data variable into object
|
|
parsed := JSON.Load(json_str)
|
|
|
|
|
|
try ChromeStableLatestVersion := parsed.channels.stable.version
|
|
|
|
if(ChromeStableLatestVersion = ""){
|
|
return "Failed to parse json. "
|
|
}
|
|
|
|
return ChromeStableLatestVersion
|
|
}
|
|
|
|
|
|
GetDownloadURLOfChromeAndDriver(InstalledChromeVersion){
|
|
; Will return the download URL of Chrome for Testing and Chrome Driver, seperated by a ||
|
|
|
|
; https://github.com/GoogleChromeLabs/chrome-for-testing#json-api-endpoints
|
|
json_str := urldownloadtovar("https://googlechromelabs.github.io/chrome-for-testing/known-good-versions-with-downloads.json")
|
|
|
|
; requires #include of json.ahk in parent script
|
|
parsed := JSON.Load(json_str)
|
|
|
|
ChromelabsJsonEntriesCount := parsed.versions.count()
|
|
|
|
if(ChromelabsJsonEntriesCount = ""){
|
|
return "Failed to parse chromedriver json. "
|
|
}
|
|
|
|
loop % ChromelabsJsonEntriesCount {
|
|
|
|
if(A_index = ChromelabsJsonEntriesCount){
|
|
Message = "Failed to find %InstalledChromeVersion% in the ChromeLabs Json"
|
|
return Message
|
|
}
|
|
|
|
if(InstalledChromeVersion = parsed.versions[A_Index].version){
|
|
|
|
VersionIndex := A_Index
|
|
|
|
; loop through the platforms to get download URL for Chrome
|
|
loop % parsed.versions[VersionIndex].downloads.chrome.count() {
|
|
|
|
if(parsed.versions[VersionIndex].downloads.chrome[A_Index].platform = "win64")
|
|
chromeDLURL64 := parsed.versions[VersionIndex].downloads.chrome[A_Index].url
|
|
}
|
|
|
|
|
|
; loop through the platforms to get download URL for Chromedriver
|
|
loop % parsed.versions[VersionIndex].downloads.chromedriver.count() {
|
|
|
|
if(parsed.versions[VersionIndex].downloads.chromedriver[A_Index].platform = "win64")
|
|
chromedriverDLURL64 := parsed.versions[VersionIndex].downloads.chromedriver[A_Index].url
|
|
}
|
|
|
|
break
|
|
}
|
|
}
|
|
|
|
URLS = %chromeDLURL64%||%chromedriverDLURL64%
|
|
return URLS
|
|
} |