Temporarily removed auto-updater functionality until i can reprogram it to pull from gitea, Small error checks for multiple sites, Added ability to activate Parler tab by clicking on Parler button on Post Complete Window
This commit is contained in:
@@ -79,9 +79,6 @@ Changelog := StrReplace(changelog, "`n", "--")
|
||||
; @todo: Add tags support on all sites that support it - ask stef is useful
|
||||
; @todo: save post tags and title to teh same file as ini file instead of two files
|
||||
|
||||
; @todo: Add workaround for all chrome tabs not being counted properly by selenium, using array?
|
||||
; @todo: add support for scheduled posts.
|
||||
|
||||
; Misc info
|
||||
;------------------------------------------------
|
||||
; Parler has a 1k char limit
|
||||
@@ -224,9 +221,9 @@ IniWrite, %ScriptVersion%, %SettingsIniFilepath%, %ScriptSettingsSection%, Scrip
|
||||
|
||||
; Download Program Updater
|
||||
if(!FileExist(FreedomainProgramUpdaterFilepath)){
|
||||
TooltipThis("Downloading Program Updater")
|
||||
UrlDownloadToFile, %FreedomainProgramUpdaterURL%, %FreedomainProgramUpdaterFilepath%
|
||||
ToolTip
|
||||
; TooltipThis("Downloading Program Updater")
|
||||
; UrlDownloadToFile, %FreedomainProgramUpdaterURL%, %FreedomainProgramUpdaterFilepath%
|
||||
; ToolTip
|
||||
}
|
||||
|
||||
|
||||
@@ -891,10 +888,15 @@ SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,Disc
|
||||
|
||||
ScriptRunTime := round(((A_TickCount - StartTime) / 1000), 2)
|
||||
|
||||
|
||||
; DevModeMsgBox(URLOfLastErrorPage)
|
||||
|
||||
if(URLOfLastErrorPage != ""){
|
||||
Message = Activating Tab of last failed post.
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip")
|
||||
|
||||
; DevModeMsgBox("pause")
|
||||
; message = URLOfLastErrorPage: %URLOfLastErrorPage%
|
||||
; DevModeMsgBox(URLOfLastErrorPage)
|
||||
FindAndActivateTab(URLOfLastErrorPage)
|
||||
}
|
||||
|
||||
@@ -976,7 +978,7 @@ Gui, Font, s%GUINormalFontSize%
|
||||
Gui, Add, Button,x%StatusTextSecondRowXPos% y+%MarginSpace% w%WebsiteButtonWidths% h%ButtonHeights% Center, Flote
|
||||
Gui, Add, Edit, x+5 w%WebsiteStatusEditWidths% h%ButtonHeights%, %Flote%
|
||||
|
||||
Gui, Add, Button,x%StatusTextSecondRowXPos% y+%MarginSpace% w%WebsiteButtonWidths% h%ButtonHeights% Center, Parler
|
||||
Gui, Add, Button,x%StatusTextSecondRowXPos% y+%MarginSpace% w%WebsiteButtonWidths% h%ButtonHeights% gActivateParlerTab Center, Parler
|
||||
Gui, Add, Edit, x+5 w%WebsiteStatusEditWidths% h%ButtonHeights%, %Parler%
|
||||
|
||||
Gui, Add, Button,x%StatusTextSecondRowXPos% y+%MarginSpace% w%WebsiteButtonWidths% h%ButtonHeights% Center, Steemit
|
||||
@@ -1021,6 +1023,13 @@ AddToTotalRunTime()
|
||||
|
||||
Return
|
||||
|
||||
ActivateParlerTab:
|
||||
DevModeMsgBox("activating")
|
||||
DevModeMsgBox(ParlerTabURL)
|
||||
FindAndActivateTab(ParlerTabURL)
|
||||
|
||||
Return
|
||||
|
||||
|
||||
SendErrorLoggingThroughTelegram:
|
||||
Message = Uploading Errorlog to FDRBotTesting Telegram Server.
|
||||
@@ -1188,7 +1197,7 @@ if(ImageAttachmentFilepath = "" AND Status){ ; upload a temporary file and then
|
||||
}
|
||||
|
||||
; driver.FindElementByXPath(Xpath).click()
|
||||
/*
|
||||
|
||||
|
||||
Xpath = //span[normalize-space()="What's on your mind, Stefan?"]
|
||||
Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000)
|
||||
@@ -1205,7 +1214,7 @@ if(ImageAttachmentFilepath = "" AND Status){ ; upload a temporary file and then
|
||||
Return
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
}
|
||||
if(ImageAttachmentFilepath != "") { ; otherwise send image straight to upload input box. The post box will open up automatically
|
||||
Message = Attaching Image
|
||||
@@ -1319,9 +1328,11 @@ if(Status){
|
||||
; Check login status by checking the header of the page for "Feed" text
|
||||
js = return document.querySelector(".header__contain").innerText
|
||||
try status := driver.executeScript(js)
|
||||
if(InStr(!status, "Feed")){
|
||||
if(!InStr(status, "Feed")){
|
||||
; SaveOrPostProgress(Message:="Login Expired. Please log back in",PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||
SaveOrPostProgress(Message:="Login Expired. Please log back in",PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||
; ParlerTabURL :=
|
||||
try ParlerTabURL := driver.URL
|
||||
SaveDriverURLOFErrorPage()
|
||||
Return
|
||||
}
|
||||
@@ -1587,6 +1598,7 @@ if(InStr(CurrentTabURL, "/login")){
|
||||
}
|
||||
|
||||
|
||||
|
||||
DiscordMessagePartOne := SubStr(Message, 1, SplitCharNumber)
|
||||
SplitCharNumber := SplitCharNumber + 1
|
||||
DiscordMessagePartTwo := SubStr(Message, SplitCharNumber)
|
||||
@@ -1674,7 +1686,7 @@ if(InStr(CurrentTabURL, "/login")){
|
||||
|
||||
Status := NavigateFromBaseURLTo(SubscribeStarProfileURL)
|
||||
if(Status){
|
||||
Message = Failed to Navigate to Feed URL
|
||||
Message = Failed to Navigate to SubScribeStar Page
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||
}
|
||||
|
||||
@@ -2230,7 +2242,7 @@ if(InStr(CurrentTabURL, "/login")){
|
||||
sleep, 2000
|
||||
|
||||
|
||||
SaveOrPostProgress(Message:="Inputting Post Content",PostType:="Tooltip,ErrorLoggingTextFile")
|
||||
SaveOrPostProgress(Message:="Inputting Post Content`nMight take 5-15 seconds to get input",PostType:="Tooltip,ErrorLoggingTextFile")
|
||||
|
||||
; Click the plus button to make the title box show up
|
||||
Xpath = //div[@class='m-composer__base m-composer__base--withPreview']//i[@class='material-icons ng-star-inserted'][normalize-space()='add_circle_outline']
|
||||
|
||||
@@ -153,11 +153,11 @@ UpdateScript(){
|
||||
; sleep, 5000
|
||||
|
||||
if(SaveFilepath = ""){
|
||||
SaveFilepath := ErrorLoggingDirectory
|
||||
}
|
||||
SaveFilepath := ErrorLoggingDirectory
|
||||
}
|
||||
|
||||
; if(!FileExist(SaveFilepath))
|
||||
FileCreateDir, %SaveFilepath%
|
||||
; if(!FileExist(SaveFilepath))
|
||||
FileCreateDir, %SaveFilepath%
|
||||
|
||||
/* if(!TakeScreenshotsOfErrors)
|
||||
Return
|
||||
@@ -947,127 +947,141 @@ if(TotalTabsFound = 1){
|
||||
}
|
||||
|
||||
; -------------------------------NavigateFromBaseURLTo-------------------------------
|
||||
NavigateFromBaseURLTo(URL,PageTitle := "New Tab"){
|
||||
NavigateFromBaseURLTo(URL){
|
||||
if(!DriverStatus){ ; if not connected to selenium chrome, then re-connect
|
||||
Status := CheckSeleniumDriver()
|
||||
if(Status)
|
||||
Return "Failed"
|
||||
|
||||
CreateArrayOfTabs()
|
||||
CreateArrayOfTabs() ; store all open tabs to memory for later usage
|
||||
}
|
||||
|
||||
|
||||
if(ReuseTabs){
|
||||
URLBase := StrReplace(URL,"https://","")
|
||||
URLBase := StrSplit(URLBase, "/")
|
||||
URLBase := URLBase[1]
|
||||
URLBase := StrReplace(URLBase, "www.","")
|
||||
}
|
||||
|
||||
if(!HasSubstringVal(DriverURLArray, URLBase)) ; returns position of value in array
|
||||
{
|
||||
try, run "%ChromeFilepath%" "%URL%"
|
||||
DriverURLArray.Push(URL) ; Append an item to the array
|
||||
NewTabCreated := 1
|
||||
sleep, 1000
|
||||
}
|
||||
; msgbox,
|
||||
|
||||
Message = Finding Tab
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile")
|
||||
|
||||
TabFoundSuccessfully :=
|
||||
|
||||
NumberOfTabLoops := DriverURLArray.Length()
|
||||
|
||||
; NumberOfTabLoops := Driver.Windows.Count + 2
|
||||
loop % NumberOfTabLoops { ; loop through tabs to find matching tab
|
||||
try driver.SwitchToNextWindow()
|
||||
|
||||
; sleep, 1000
|
||||
; msgbox, looping through tabs
|
||||
try CurrentTabTitle := driver.window.title
|
||||
try CurrentTabURL := driver.Url
|
||||
|
||||
if(CurrentTabTitle = PageTitle OR InStr(CurrentTabURL, URLBase)){
|
||||
; msgbox, found it.`n%CurrentTabTitle% = %PageTitle%`n%CurrentTabURL% = %URLBase%
|
||||
TabFoundSuccessfully := 1
|
||||
; msgbox %CurrentTabTitle% = %PageTitle%
|
||||
; msgbox %CurrentTabURL% = %URL%
|
||||
Break
|
||||
}
|
||||
if(ReuseTabs){ ; pull out base of URL and check if it's within the array of tabs
|
||||
URLBase := StrReplace(URL,"https://","")
|
||||
URLBase := StrSplit(URLBase, "/")
|
||||
URLBase := URLBase[1]
|
||||
URLBase := StrReplace(URLBase, "www.","")
|
||||
}
|
||||
|
||||
if(!NewTabCreated){ ; if re-using a tab then we want to re-navigate to URL because it might be the wrong page
|
||||
if(!HasSubstringVal(DriverURLArray, URLBase)) ; if base url is not in tab array, create new tab and push url to array
|
||||
{
|
||||
try, run "%ChromeFilepath%" "%URL%"
|
||||
DriverURLArray.Push(URL) ; Append an item to the array
|
||||
NewTabCreated := 1
|
||||
sleep, 2000
|
||||
}
|
||||
; msgbox,
|
||||
|
||||
Message = Finding Tab
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile")
|
||||
|
||||
TabFoundSuccessfully :=
|
||||
|
||||
NumberOfTabLoops := DriverURLArray.Length()
|
||||
|
||||
; NumberOfTabLoops := Driver.Windows.Count + 2
|
||||
loop % NumberOfTabLoops { ; loop through tabs to find matching tab
|
||||
try driver.SwitchToNextWindow()
|
||||
|
||||
; sleep, 1000
|
||||
; msgbox, looping through tabs
|
||||
try CurrentTabTitle := driver.window.title
|
||||
|
||||
; caused by tab being manually closed. Not sure if this is the only cause though.
|
||||
if(CurrentTabTitle = "") {
|
||||
Message = CurrentTabTitle: %CurrentTabTitle%
|
||||
DevModeMsgBox(Message)
|
||||
|
||||
Message = CurrenttabURL: %CurrentTabURL%
|
||||
DevModeMsgBox(Message)
|
||||
|
||||
; try driver.SwitchToNextWindow
|
||||
Continue
|
||||
}
|
||||
|
||||
|
||||
try CurrentTabURL := driver.Url
|
||||
|
||||
if(InStr(CurrentTabURL, URLBase)){
|
||||
; msgbox, found it.`n%CurrentTabTitle% = %PageTitle%`n%CurrentTabURL% = %URLBase%
|
||||
TabFoundSuccessfully := 1
|
||||
; msgbox %CurrentTabTitle% = %PageTitle%
|
||||
; msgbox %CurrentTabURL% = %URL%
|
||||
Break
|
||||
}
|
||||
}
|
||||
|
||||
if(!NewTabCreated){ ; if re-using a tab then we want to re-navigate to URL because it might be the wrong page
|
||||
try driver.Get(URL) ;Open selected URL
|
||||
try driver.executeScript("return document.readyState").equals("complete") ; wait until page loads completely before proceeding
|
||||
catch e {
|
||||
; msgbox, error caught. trying something
|
||||
try driver.switchToalert().accept()
|
||||
try driver.Get(URL) ;Open selected URL
|
||||
try driver.executeScript("return document.readyState").equals("complete") ; wait until page loads completely before proceeding
|
||||
catch e {
|
||||
; msgbox, error caught. trying something
|
||||
try driver.switchToalert().accept()
|
||||
try driver.Get(URL) ;Open selected URL
|
||||
catch e {
|
||||
Message = Failed to Navigate to %URL%: Please Check for Any Open Dialogue Boxes
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||
Return "Failed"
|
||||
}
|
||||
Message = Failed to Navigate to %URL%: Please Check for Any Open Dialogue Boxes
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||
Return "Failed"
|
||||
}
|
||||
}
|
||||
; msgbox, no error caught
|
||||
; }
|
||||
|
||||
|
||||
Return
|
||||
}
|
||||
; End of Function
|
||||
; -------------------------------/NavigateFromBaseURL-------------------------------
|
||||
|
||||
SaveDriverURL(){ ; save the url of the result page. That way if a tab is not found for a site, we can open up a tab from this tab instead of middle of nowhere. That way we can keep the tabs together
|
||||
try LastWebsitePostURL := driver.URL
|
||||
}
|
||||
; msgbox, no error caught
|
||||
; }
|
||||
|
||||
|
||||
; -------------------------------SChrome_Get-------------------------------
|
||||
SChrome_Get(URL := "", Profile := "Profile 1", IP_Port := "127.0.0.1:9222"){
|
||||
IP_Port_Nr := RegExReplace(IP_Port, ".*:(\d*)", "$1")
|
||||
if WinExist("ahk_exe Chrome.exe"){
|
||||
WinGet, pid, PID, ahk_exe chrome.exe
|
||||
for item in ComObjGet("winmgmts:").ExecQuery("SELECT * FROM Win32_Process WHERE ProcessId='" pid "'"){
|
||||
if RegExMatch(item.CommandLine, "i)--remote-debugging-port=\K\d+", port){
|
||||
break
|
||||
}
|
||||
}
|
||||
Return
|
||||
}
|
||||
; End of Function
|
||||
; -------------------------------/NavigateFromBaseURL-------------------------------
|
||||
|
||||
if (Port=""){
|
||||
MsgBox, 36, ,Chrome Needs to be started in debugging mode in order for Autohotkey to connect to it.`nIs it ok to restart Chrome in debugmode to enable a connection?
|
||||
IfMsgBox, Yes
|
||||
{
|
||||
Message = Restarting Chrome in Debug Mode
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||
SaveDriverURL(){ ; save the url of the result page. That way if a tab is not found for a site, we can open up a tab from this tab instead of middle of nowhere. That way we can keep the tabs together
|
||||
try LastWebsitePostURL := driver.URL
|
||||
}
|
||||
|
||||
While(WinExist("ahk_exe chrome.exe")) {
|
||||
WinClose, ahk_exe chrome.exe
|
||||
}
|
||||
Process, WaitClose, chrome.exe
|
||||
}
|
||||
Else{
|
||||
Msgbox, 4096, Error, Cannot connect to Chrome profile if it is Not running in debug mode. Script Terminating
|
||||
ExitApp
|
||||
; @todo: Make this error out to the script result screen
|
||||
}
|
||||
|
||||
; -------------------------------SChrome_Get-------------------------------
|
||||
SChrome_Get(URL := "", Profile := "Profile 1", IP_Port := "127.0.0.1:9222"){
|
||||
IP_Port_Nr := RegExReplace(IP_Port, ".*:(\d*)", "$1")
|
||||
if WinExist("ahk_exe Chrome.exe"){
|
||||
WinGet, pid, PID, ahk_exe chrome.exe
|
||||
for item in ComObjGet("winmgmts:").ExecQuery("SELECT * FROM Win32_Process WHERE ProcessId='" pid "'"){
|
||||
if RegExMatch(item.CommandLine, "i)--remote-debugging-port=\K\d+", port){
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
; ; yuriy's settings
|
||||
; IniRead, ChromeFilepath, C:\Users\%A_username%\Documents\Autohotkey\Lib\ScriptSettings.ini, Selenium, %A_Computername%, %A_Space%
|
||||
if (Port=""){
|
||||
MsgBox, 36, ,Chrome Needs to be started in debugging mode in order for Autohotkey to connect to it.`nIs it ok to restart Chrome in debugmode to enable a connection?
|
||||
IfMsgBox, Yes
|
||||
{
|
||||
Message = Restarting Chrome in Debug Mode
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||
|
||||
; ; Establish Variable with Filepath to be used throughout the script
|
||||
; if(ChromeFilepath = ""){
|
||||
if(FileExist("C:\Program Files\Google\Chrome\Application\chrome.exe")){
|
||||
ChromeFilepath = C:\Program Files\Google\Chrome\Application\chrome.exe
|
||||
While(WinExist("ahk_exe chrome.exe")) {
|
||||
WinClose, ahk_exe chrome.exe
|
||||
}
|
||||
Process, WaitClose, chrome.exe
|
||||
}
|
||||
else if (FileExist("C:\Program Files (x86)\Google\Chrome\Application\chrome.exe")){
|
||||
ChromeFilepath = C:\Program Files (x86)\Google\Chrome\Application\chrome.exe
|
||||
Else{
|
||||
Msgbox, 4096, Error, Cannot connect to Chrome profile if it is Not running in debug mode. Script Terminating
|
||||
ExitApp
|
||||
; @todo: Make this error out to the script result screen
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
; ; yuriy's settings
|
||||
; IniRead, ChromeFilepath, C:\Users\%A_username%\Documents\Autohotkey\Lib\ScriptSettings.ini, Selenium, %A_Computername%, %A_Space%
|
||||
|
||||
; ; Establish Variable with Filepath to be used throughout the script
|
||||
; if(ChromeFilepath = ""){
|
||||
if(FileExist("C:\Program Files\Google\Chrome\Application\chrome.exe")){
|
||||
ChromeFilepath = C:\Program Files\Google\Chrome\Application\chrome.exe
|
||||
}
|
||||
else if (FileExist("C:\Program Files (x86)\Google\Chrome\Application\chrome.exe")){
|
||||
ChromeFilepath = C:\Program Files (x86)\Google\Chrome\Application\chrome.exe
|
||||
}
|
||||
|
||||
|
||||
if(ChromeFilepath = ""){
|
||||
@@ -1408,13 +1422,22 @@ SaveDriverURLOFErrorPage(){ ; save the url of the result page. That way if a tab
|
||||
|
||||
|
||||
FindAndActivateTab(TabURL){
|
||||
|
||||
DevModeMsgBox(TabURL)
|
||||
Loop, {
|
||||
if(A_index = 30)
|
||||
break
|
||||
|
||||
try CurrentTabTitle := driver.window.title
|
||||
if(CurrentTabTitle = "") ; caused by tab being manually closed. Not sure if this is the only cause though.
|
||||
{
|
||||
; DevModeMsgBox("currenttabtutle is blank")
|
||||
try driver.SwitchToNextWindow
|
||||
Continue
|
||||
}
|
||||
|
||||
; DevModeMsgBox(CurrentTabTitle)
|
||||
try CurrentTabURL := driver.Url
|
||||
DevModeMsgBox(CurrentTabURL)
|
||||
|
||||
if(CurrentTabURL = TabURL)
|
||||
Break
|
||||
|
||||
Reference in New Issue
Block a user