Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| aae8820e37 | |||
|
|
4a7e4658b2 | ||
|
|
a2ecaa50fa | ||
|
|
f988efb221 |
2
.gitignore
vendored
2
.gitignore
vendored
@@ -1,3 +1,5 @@
|
|||||||
|
Freedomain Livestream Scheduler.exe
|
||||||
|
Lib/Templates-FLS/
|
||||||
Settings.ini
|
Settings.ini
|
||||||
VideoLinks.ini
|
VideoLinks.ini
|
||||||
body.txt
|
body.txt
|
||||||
|
|||||||
BIN
Assets/Icon.ico
Normal file
BIN
Assets/Icon.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 101 KiB |
BIN
Assets/Icon.png
Normal file
BIN
Assets/Icon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 50 KiB |
BIN
Assets/Icon.xcf
Normal file
BIN
Assets/Icon.xcf
Normal file
Binary file not shown.
84
Compile AHK to EXE.ahk
Normal file
84
Compile AHK to EXE.ahk
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
;---ENVIRONMENT---------------------------------------------------------------------
|
||||||
|
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
|
||||||
|
;#Warn ; Enable warnings to assist with detecting common errors.
|
||||||
|
;DetectHiddenWindows, On
|
||||||
|
#SingleInstance, Force
|
||||||
|
DetectHiddenWindows, ON
|
||||||
|
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
|
||||||
|
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
|
||||||
|
;SetKeyDelay, 500
|
||||||
|
CoordMode, ToolTip, Screen
|
||||||
|
CoordMode, Mouse, Screen
|
||||||
|
; #NoTrayIcon
|
||||||
|
; Menu, Tray, Icon, RMScriptManager.ico
|
||||||
|
|
||||||
|
;---Notes/Extra Info/#Includes------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
;---VARIABLES-----------------------------------------------------------------------
|
||||||
|
ScriptName = Freedomain Livestream Scheduler
|
||||||
|
|
||||||
|
AHKFilepath = %A_ScriptDir%\%ScriptName%.ahk
|
||||||
|
Exefilepath = %A_ScriptDir%\%ScriptName%.exe
|
||||||
|
icopath = %A_ScriptDir%\Assets\Icon.ico
|
||||||
|
VersionIniFP = %A_ScriptDir%\Version.ini
|
||||||
|
|
||||||
|
|
||||||
|
;---MAIN SCRIPT---------------------------------------------------------------------
|
||||||
|
|
||||||
|
; Bump the version number in the version.ini file
|
||||||
|
IniRead, VersionNumber, %VersionIniFP%, %ScriptName%, Version, 0.0 ; , Filename, Section, Key [, Default]
|
||||||
|
VersionNumber += .01
|
||||||
|
VersionNumber := SubStr(VersionNumber, 1, 4)
|
||||||
|
|
||||||
|
IniWrite, %VersionNumber%, %VersionIniFP%,%ScriptName%, Version
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; Kill any active intances of the uploaders so the .exe file can be overwriten by the compilation
|
||||||
|
process, close, %ScriptName%.exe
|
||||||
|
|
||||||
|
sleep, 1000
|
||||||
|
|
||||||
|
; Delete the .exe file so it can be repalced
|
||||||
|
if(FileExist(Exefilepath)){
|
||||||
|
FileDelete, %Exefilepath%
|
||||||
|
if(ErrorLevel){
|
||||||
|
msgbox, failed to delete Exe file. Please delete manually and re-run the compiler.
|
||||||
|
ExitApp
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if(!FileExist(AHKFilepath)){
|
||||||
|
msgbox, %AHKFilepath% does not exist`nExiting
|
||||||
|
ExitApp
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if(!FileExist(icopath)){
|
||||||
|
msgbox, %icopath% does not exist`nExiting
|
||||||
|
ExitApp
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
run, %comspec% /c ""C:\Program Files\AutoHotkey\Compiler\Ahk2Exe.exe" /in "%AHKFilepath%" /out "%exefilepath%" /icon "%icopath%""
|
||||||
|
|
||||||
|
|
||||||
|
; OldNotify(ScriptToCompile,"Compiled Successfully",5)
|
||||||
|
; sleep, 5000
|
||||||
|
ExitApp
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
;---FUNCTIONS-----------------------------------------------------------------------
|
||||||
@@ -239,10 +239,12 @@ Gui, Add, Text, y+%MarginSizeDoubled%, Date and Time of Livestream
|
|||||||
Gui, Font, Normal
|
Gui, Font, Normal
|
||||||
|
|
||||||
Gui, Add, DateTime, vLivestreamDate w%ColumnTwoEditBoxWidth%, MM/dd/yyyy
|
Gui, Add, DateTime, vLivestreamDate w%ColumnTwoEditBoxWidth%, MM/dd/yyyy
|
||||||
Gui, Add, DateTime, vLivestreamTime w%ColumnTwoEditBoxWidth%, HH:mm
|
Gui, Add, DateTime, vLivestreamTime w%ColumnTwoEditBoxWidth% Choose200505311900, Time
|
||||||
|
Gui, Add, Button, gSetLivestreamTimeMorning,Morning
|
||||||
|
Gui, Add, Button,yp+0 x+%MarginSize% gSetLivestreamTimeMorning,Evening
|
||||||
|
|
||||||
Gui, Font, Bold
|
Gui, Font, Bold
|
||||||
Gui, Add, Text,y+%MarginSizeDoubled%, Platform to Schedule On
|
Gui, Add, Text,y+%MarginSizeDoubled% x%ColumnTwoXPosition%, Platform to Schedule On
|
||||||
Gui, Font, Normal
|
Gui, Font, Normal
|
||||||
|
|
||||||
; Gui, Add, Checkbox,, Dlive
|
; Gui, Add, Checkbox,, Dlive
|
||||||
@@ -250,7 +252,7 @@ Gui, Add, Checkbox, checked vLocals, Locals
|
|||||||
; Gui, Add, Checkbox,checked vOdysee, Odysee
|
; Gui, Add, Checkbox,checked vOdysee, Odysee
|
||||||
|
|
||||||
Gui, Font, Bold
|
Gui, Font, Bold
|
||||||
Gui, Add, Button,gSchedulePost w%ColumnTwoEditBoxWidth% y+100 gSaveAsTemplate, Save as Template
|
Gui, Add, Button,gSchedulePost w%ColumnTwoEditBoxWidth% y+50 gSaveAsTemplate, Save as Template
|
||||||
Gui, Add, Button,gSchedulePost w%ColumnTwoEditBoxWidth% gLoadTemplate, Load Template
|
Gui, Add, Button,gSchedulePost w%ColumnTwoEditBoxWidth% gLoadTemplate, Load Template
|
||||||
|
|
||||||
Gui, Font, s15
|
Gui, Font, s15
|
||||||
@@ -262,6 +264,14 @@ Return
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
SetLivestreamTimeMorning:
|
||||||
|
if(A_GuiControl = "Morning")
|
||||||
|
GuiControl, , LivestreamTime, 200505311130
|
||||||
|
if(A_GuiControl = "Evening")
|
||||||
|
GuiControl, , LivestreamTime, 200505311900
|
||||||
|
Return
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -272,7 +282,7 @@ Return
|
|||||||
SaveAsTemplate:
|
SaveAsTemplate:
|
||||||
Gui, submit, NoHide ; Update variables for all modified fields
|
Gui, submit, NoHide ; Update variables for all modified fields
|
||||||
|
|
||||||
TemplateDirectory = %A_ScriptDir%\Lib\Templates
|
TemplateDirectory = %A_ScriptDir%\Lib\Templates-%ScriptAbbreviatedName%
|
||||||
if(!FileExist(TemplateDirectory)){
|
if(!FileExist(TemplateDirectory)){
|
||||||
FileCreateDir, %TemplateDirectory%
|
FileCreateDir, %TemplateDirectory%
|
||||||
}
|
}
|
||||||
@@ -281,7 +291,7 @@ InputBox, TemplateName, Input Name, Please Input Name for the Template:
|
|||||||
if(ErrorLevel)
|
if(ErrorLevel)
|
||||||
Return
|
Return
|
||||||
|
|
||||||
TemplateDirectory = %A_ScriptDir%\Lib\Templates\%TemplateName%
|
TemplateDirectory = %TemplateDirectory%\%TemplateName%
|
||||||
ErrorLoggingDirectory := TemplateDirectory
|
ErrorLoggingDirectory := TemplateDirectory
|
||||||
; FileCreateDir, %TemplateDirectory%
|
; FileCreateDir, %TemplateDirectory%
|
||||||
CreateErrorLoggingFiles(ErrorLoggingDirectory)
|
CreateErrorLoggingFiles(ErrorLoggingDirectory)
|
||||||
@@ -304,7 +314,7 @@ LoadTemplate:
|
|||||||
Message = Loading Template
|
Message = Loading Template
|
||||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,DiscordErrorLogging")
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,DiscordErrorLogging")
|
||||||
|
|
||||||
ErrorLoggingDirectory = %A_ScriptDir%\Lib\Templates\
|
ErrorLoggingDirectory = %A_ScriptDir%\Lib\Templates-%ScriptAbbreviatedName%\
|
||||||
FileSelectFolder, ErrorLoggingDirectory, %ErrorLoggingDirectory%
|
FileSelectFolder, ErrorLoggingDirectory, %ErrorLoggingDirectory%
|
||||||
if(ErrorLevel){
|
if(ErrorLevel){
|
||||||
Tooltip
|
Tooltip
|
||||||
@@ -373,26 +383,33 @@ Gui, Destroy
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; ------------------------------------------------
|
||||||
|
; RESULTS SCREEN
|
||||||
|
; ------------------------------------------------
|
||||||
|
|
||||||
; Results Screen
|
|
||||||
|
; Read Info From .ini Files
|
||||||
; ------------------------------------------------
|
; ------------------------------------------------
|
||||||
IniRead, LocalsRTMPURL, %PostStatusesFilepath%, Livestream,LocalsRTMPURL, %A_Space%
|
IniRead, LocalsRTMPURL, %PostStatusesFilepath%, Livestream,LocalsRTMPURL, %A_Space%
|
||||||
IniRead, LocalsRTMPKey, %PostStatusesFilepath%, Livestream,LocalsRTMPKey, %A_Space%
|
IniRead, LocalsRTMPKey, %PostStatusesFilepath%, Livestream,LocalsRTMPKey, %A_Space%
|
||||||
|
IniRead, LivestreamURL, %PostStatusesFilepath%, Livestream,LivestreamURL, %A_Space%
|
||||||
|
|
||||||
; IniRead, OutputVar, Filename, Section, Key [, Default]
|
|
||||||
|
|
||||||
|
|
||||||
Gui, Font, Bold
|
Gui, Font, Bold
|
||||||
|
|
||||||
Gui, Font, s%GuiFontSize%
|
Gui, Font, s%GuiFontSize%
|
||||||
Gui, Add, Button, x10 y+10 h%ResultButtonHeights% w%ResultButtonWidth%, Locals RTMP Key
|
|
||||||
Gui, Add, Edit, x+5 yp+0 h%ResultButtonHeights% w%ResultButtonEditWidth% vLocalsRTMPKey center, %LocalsRTMPKey%
|
|
||||||
|
|
||||||
Gui, Add, Button, x10 y+10 h%ResultButtonHeights% w%ResultButtonWidth%, Locals RTMP URL
|
Gui, Add, Button, x10 y+10 h%ResultButtonHeights% w%ResultButtonWidth% gResultsGUIAction, Locals URL
|
||||||
|
Gui, Add, Edit, x+5 yp+0 h%ResultButtonHeights% w%ResultButtonEditWidth% vLivestreamURL center, %LivestreamURL%
|
||||||
|
|
||||||
|
Gui, Add, Button, x10 y+10 h%ResultButtonHeights% w%ResultButtonWidth% gResultsGUIAction, Locals RTMP URL
|
||||||
Gui, Add, Edit, x+5 yp+0 h%ResultButtonHeights% w%ResultButtonEditWidth% vLocalsRTMPURL center, %LocalsRTMPURL%
|
Gui, Add, Edit, x+5 yp+0 h%ResultButtonHeights% w%ResultButtonEditWidth% vLocalsRTMPURL center, %LocalsRTMPURL%
|
||||||
|
|
||||||
|
Gui, Add, Button, x10 y+10 h%ResultButtonHeights% w%ResultButtonWidth% gResultsGUIAction, Locals RTMP Key
|
||||||
|
Gui, Add, Edit, x+5 yp+0 h%ResultButtonHeights% w%ResultButtonEditWidth% vLocalsRTMPKey center, %LocalsRTMPKey%
|
||||||
|
|
||||||
Gui, Add, Button, gRetryUpload,Try Failed Again
|
|
||||||
|
Gui, Add, Button, gRetryUpload h%ResultButtonHeights% w%ResultButtonEditWidth%,Try Failed Again
|
||||||
|
|
||||||
Gui, Show
|
Gui, Show
|
||||||
|
|
||||||
@@ -402,6 +419,29 @@ Return
|
|||||||
|
|
||||||
; GoSubs
|
; GoSubs
|
||||||
; ------------------------------------------------
|
; ------------------------------------------------
|
||||||
|
ResultsGUIAction:
|
||||||
|
; Msgbox % "A_GuiControl: " A_GuiControl
|
||||||
|
|
||||||
|
Message = Copying %A_GuiControl% to Clipboard
|
||||||
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip")
|
||||||
|
|
||||||
|
|
||||||
|
if(A_GuiControl = "Locals URL"){
|
||||||
|
Clipboard := LivestreamURL
|
||||||
|
}
|
||||||
|
|
||||||
|
if(A_GuiControl = "Locals RTMP URL"){
|
||||||
|
Clipboard := LocalsRTMPURL
|
||||||
|
}
|
||||||
|
|
||||||
|
if(A_GuiControl = "Locals RTMP Key"){
|
||||||
|
Clipboard := LocalsRTMPKey
|
||||||
|
}
|
||||||
|
|
||||||
|
sleep, 1000
|
||||||
|
ToolTip
|
||||||
|
Return
|
||||||
|
|
||||||
KillScript:
|
KillScript:
|
||||||
ExitApp
|
ExitApp
|
||||||
|
|
||||||
|
|||||||
Submodule Lib/Freedomain-Posters-Shared-Functions updated: b8ffb10db1...2e0c81f34f
@@ -90,9 +90,21 @@ try, driver.FindElementByXPath(Xpath).SendKeys(driver.Keys.BackSpace).SendKeys(d
|
|||||||
Status := Selenium_LoopToSendValueToXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000,StringTextContent:=LocalsLivestreamTime)
|
Status := Selenium_LoopToSendValueToXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000,StringTextContent:=LocalsLivestreamTime)
|
||||||
|
|
||||||
|
|
||||||
if(ConfirmBeforeSubmit)
|
if(ConfirmBeforeSubmit){
|
||||||
msgbox, Please check that all data was input correctly and then click OK to Finalize Schedule and grab RTMP Settings
|
OnMessage(0x44, "OnMsgBoxUserConfirmation")
|
||||||
|
MsgBox 0x21, User Confirmation, Please check that all data was input correctly and fix any mistakes and then click PROCEED to finalize the Upload.`n`nClick STOP to cancel the rest of this Upload and move on to the next website.
|
||||||
|
OnMessage(0x44, "")
|
||||||
|
|
||||||
|
IfMsgBox OK, {
|
||||||
|
|
||||||
|
} Else IfMsgBox Cancel, {
|
||||||
|
Message = User Selected STOP button when asked for confirmation. Cancelling Rest of Site Upload.
|
||||||
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||||
|
Return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
*/
|
||||||
|
|
||||||
; click schedule button
|
; click schedule button
|
||||||
Xpath = //span[normalize-space()='Schedule']
|
Xpath = //span[normalize-space()='Schedule']
|
||||||
@@ -160,9 +172,11 @@ Xpath = //div[@class='modal-wrapper modal-wrapper_stream']//div[5]
|
|||||||
LocalsRTMPKey := GetHTMLValueFromXpathOuterHTML(XPATH, "value")
|
LocalsRTMPKey := GetHTMLValueFromXpathOuterHTML(XPATH, "value")
|
||||||
|
|
||||||
|
|
||||||
ToolTip
|
|
||||||
; Msgbox % "PostStatusesFilepath: " PostStatusesFilepath
|
|
||||||
IniWrite, %LocalsRTMPURL%, %PostStatusesFilepath%, Livestream,LocalsRTMPURL
|
IniWrite, %LocalsRTMPURL%, %PostStatusesFilepath%, Livestream,LocalsRTMPURL
|
||||||
IniWrite, %LocalsRTMPKey%, %PostStatusesFilepath%, Livestream,LocalsRTMPKey
|
IniWrite, %LocalsRTMPKey%, %PostStatusesFilepath%, Livestream,LocalsRTMPKey
|
||||||
|
IniWrite, %LivestreamURL%, %PostStatusesFilepath%, Livestream,LivestreamURL
|
||||||
|
|
||||||
|
ToolTip
|
||||||
Return
|
Return
|
||||||
|
|||||||
@@ -20,14 +20,319 @@ if(InStr(PageURL, "/signup")){
|
|||||||
Return
|
Return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
; If clear button exists, click it and clear any data from a previous attempt
|
||||||
|
Xpath = //span[contains(text(),'Clear')]
|
||||||
|
try, Status := driver.findelementbyxpath(Xpath).Attribute("innerText") ;XPATH Inner Text
|
||||||
|
if(InStr(Status, "Clear")){
|
||||||
|
Message = Clearing out previous unfinished upload
|
||||||
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||||
|
|
||||||
|
; we need to wipe out the previously unfinished upload
|
||||||
|
Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=5,SleepLength:=1000)
|
||||||
|
if(Status){
|
||||||
|
Message = Failed to clear out previous upload
|
||||||
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||||
|
Return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
; create a slug string and format it
|
||||||
|
FormatTime, OdyseeLivestreamDate , %LivestreamDate%, MM-dd-yyyy ; _hhmmss
|
||||||
|
OdyseeLivestreamSlug := "livestream-" . OdyseeLivestreamDate
|
||||||
|
OdyseeURLSLUG := LBRYCMDTextReplacement(OdyseeLivestreamSlug)
|
||||||
|
|
||||||
|
Message = Inputting Livestream Information
|
||||||
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||||
|
|
||||||
|
Xpath = //input[@placeholder='Descriptive titles work best']
|
||||||
|
Status := Selenium_LoopToSendValueToXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000,StringTextContent:=LivestreamTitle)
|
||||||
|
if(Status){
|
||||||
|
Message = Failed to Input Livestream Title
|
||||||
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||||
|
Return
|
||||||
|
}
|
||||||
|
|
||||||
|
Xpath = //input[@name='content_name']
|
||||||
|
Status := Selenium_LoopToSendValueToXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000,StringTextContent:=OdyseeURLSLUG)
|
||||||
|
if(Status){
|
||||||
|
Message = Failed to Input Livestream URL
|
||||||
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||||
|
Return
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Xpath = //textarea[@id='content_description']
|
||||||
|
Status := Selenium_LoopToSendValueToXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000,StringTextContent:=LivestreamDescription)
|
||||||
|
if(Status){
|
||||||
|
Message = Failed to Input Livestream Description
|
||||||
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||||
|
Return
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; Click "Scheduled Time" checkbox
|
||||||
|
Message = Selecting -Scheduled Time- checkbox
|
||||||
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||||
|
|
||||||
|
Xpath = //label[normalize-space()='Scheduled Time']
|
||||||
|
Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=5,SleepLength:=5000)
|
||||||
|
if(Status){
|
||||||
|
Message = Failed to click the "Scheduled Time" checkbox
|
||||||
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||||
|
Return
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
; Create variables with time and date of timestream
|
||||||
|
FormatTime, LivestreamYear , %LivestreamDate%, yyyy ; _hhmmss
|
||||||
|
FormatTime, LivestreamMonth , %LivestreamDate%, MM ; _hhmmss
|
||||||
|
FormatTime, LivestreamDay , %LivestreamDate%, dd ; _hhmmss
|
||||||
|
|
||||||
|
FormatTime, LivestreamHour , %LivestreamTime%, h ; _hhmmss
|
||||||
|
FormatTime, LivestreamMinute , %LivestreamTime%, m ; _hhmmss
|
||||||
|
FormatTime, LivestreamAMPM , %LivestreamTime%, tt ; _hhmmss
|
||||||
|
|
||||||
|
|
||||||
|
; Input Livestream Time and Date
|
||||||
|
Xpath = //input[@placeholder='----']
|
||||||
|
Status := Selenium_LoopToSendValueToXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000,StringTextContent:=LivestreamYear)
|
||||||
|
|
||||||
|
Xpath = //input[@name='month']
|
||||||
|
Status := Selenium_LoopToSendValueToXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000,StringTextContent:=LivestreamMonth, ClearElement:=1)
|
||||||
|
|
||||||
|
Xpath = //input[@name='day']
|
||||||
|
Status := Selenium_LoopToSendValueToXpath(Xpath,NumOfLoops:=1,SleepLength:=1000,StringTextContent:=LivestreamDay, ClearElement:=1)
|
||||||
|
|
||||||
|
Xpath = //input[@name='hour12']
|
||||||
|
Status := Selenium_LoopToSendValueToXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000,StringTextContent:=LivestreamHour, ClearElement:=1)
|
||||||
|
|
||||||
|
Xpath = //input[@name='minute']
|
||||||
|
Status := Selenium_LoopToSendValueToXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000,StringTextContent:=LivestreamMinute, ClearElement:=1)
|
||||||
|
|
||||||
|
Xpath = //select[@name='amPm']
|
||||||
|
Status := Selenium_LoopToSendValueToXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000,StringTextContent:=LivestreamAMPM)
|
||||||
|
|
||||||
|
|
||||||
|
if(LivestreamThumbnail != ""){
|
||||||
|
; Upload Thumbnail
|
||||||
|
Xpath = //input[@accept='.png, .jpg, .jpeg, .gif, .webp']
|
||||||
|
Status := Selenium_LoopToSendValueToXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000,StringTextContent:=LivestreamThumbnail)
|
||||||
|
if(Status){
|
||||||
|
Message = Failed to Upload Thumbnail
|
||||||
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||||
|
}
|
||||||
|
|
||||||
|
; check for the Upload Thumbnail Confirmation popup
|
||||||
|
Xpath = //h1[normalize-space()='Upload thumbnail']
|
||||||
|
loop, 10 {
|
||||||
|
if(A_index = 10){
|
||||||
|
Message = Upload Thumbnail Confirmation did not appear after 10 seconds.
|
||||||
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||||
|
}
|
||||||
|
|
||||||
|
try, Status := driver.findelementbyxpath(Xpath).Attribute("innerText")
|
||||||
|
if(Status = "Upload Thumbnail"){
|
||||||
|
break
|
||||||
|
}
|
||||||
|
else, {
|
||||||
|
sleep, 1000
|
||||||
|
Continue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
try, Status := driver.findelementbyxpath(Xpath).Attribute("innerText")
|
||||||
|
if(Status = "Upload Thumbnail"){
|
||||||
|
; click confirm upload button
|
||||||
|
Xpath = //div[@class='card__actions']//button[@aria-label='Upload']//span[@class='button__content']
|
||||||
|
Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000)
|
||||||
|
}
|
||||||
|
else, {
|
||||||
|
Message = Upload Failed: Upload thumbnail confirmation popup did not show up.
|
||||||
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||||
|
Return
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ; check if the "Are you sure you want to upload this thumbnail to odysee.com?" popup exists
|
||||||
|
; Xpath = /html/body/div[4]/div/div/label
|
||||||
|
; try Status := driver.findelementbyxpath(Xpath).Attribute("innerText") ;XPATH Inner Text
|
||||||
|
if(Status){ ; if element exists, then click the confirm button
|
||||||
|
|
||||||
|
Xpath = //div[@class='card__actions']//button[@aria-label='Upload']//span[@class='button__content']
|
||||||
|
Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000)
|
||||||
|
; MsgBox,,Element innerText: `n, % driver.findelementbyxpath(Xpath).Attribute("innerText") ;XPATH Inner Text
|
||||||
|
}
|
||||||
|
else, {
|
||||||
|
Message = Upload thumbnail confirmation popup did not show up.
|
||||||
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
Xpath = //div[@class='column__item thumbnail-picker__preview']
|
||||||
|
|
||||||
|
; Get element with Thumbnail and check if image upload was successful
|
||||||
|
Try, Status := driver.findelementbyxpath(Xpath).Attribute("outerHTML") ;XPATH-ID & Tag
|
||||||
|
if(!InStr(Status, "thumbs.odycdn.com")){
|
||||||
|
Message = Thumbnail Upload Failed
|
||||||
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||||
|
}
|
||||||
|
|
||||||
|
} else, {
|
||||||
|
Message = Video Upload Failed. Odysee Requires a thumbnail for video uploads.
|
||||||
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||||
|
Return
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
LivestreamTagsArray := StrSplit(LivestreamTags, ",")
|
||||||
|
|
||||||
|
Loop % LivestreamTagsArray.Length(){
|
||||||
|
; ArrayItem := ARRAY[A_Index]
|
||||||
|
Tag := LivestreamTagsArray[A_Index]
|
||||||
|
Xpath = //input[@placeholder='gaming, crypto']
|
||||||
|
|
||||||
|
Status := Selenium_LoopToSendValueToXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000,StringTextContent:=Tag)
|
||||||
|
sleep, 500
|
||||||
|
driver.FindElementByXPath(Xpath).SendKeys(driver.Keys.ENTER)
|
||||||
|
sleep, 500
|
||||||
|
|
||||||
|
; Odysee accepts max of 5 tags
|
||||||
|
if(A_Index = 5)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if(ConfirmBeforeSubmit){
|
||||||
|
OnMessage(0x44, "OnMsgBoxUserConfirmation")
|
||||||
|
MsgBox 0x21, User Confirmation, Please check that all data was input correctly and fix any mistakes and then click PROCEED to finalize the Upload.`n`nClick STOP to cancel the rest of this Upload and move on to the next website.
|
||||||
|
OnMessage(0x44, "")
|
||||||
|
|
||||||
|
IfMsgBox OK, {
|
||||||
|
|
||||||
|
} Else IfMsgBox Cancel, {
|
||||||
|
Message = User Selected STOP button when asked for confirmation. Cancelling Rest of Site Upload.
|
||||||
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||||
|
Return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
Message = Submitting Livestream
|
||||||
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||||
|
|
||||||
|
; Click Create Button in the confirmation popup
|
||||||
|
Xpath = //span[contains(text(),'Create')]
|
||||||
|
Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=5,SleepLength:=1000)
|
||||||
|
|
||||||
|
; Click confirm button in the popup
|
||||||
|
Xpath = //button[@aria-label='Confirm']//span[@class='button__content']
|
||||||
|
Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=5,SleepLength:=1000)
|
||||||
|
|
||||||
|
|
||||||
|
Message = Waiting for Livestream Created Confirmation Popup
|
||||||
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||||
|
|
||||||
|
Xpath = //h2[normalize-space()='Livestream Created']
|
||||||
|
|
||||||
|
Loop, 60 {
|
||||||
|
|
||||||
|
try, Status := ElementInnerText := driver.findelementbyxpath(Xpath).Attribute("innerText") ;XPATH Inner Text
|
||||||
|
if(Status = "Livestream Created")
|
||||||
|
break
|
||||||
|
else, {
|
||||||
|
sleep, 1000
|
||||||
|
Continue
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Message = Grabbing Livestream URL from Livestream Settings Page
|
||||||
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||||
|
/*
|
||||||
|
; Grab and Format the livestream URL
|
||||||
|
Xpath = //li[@role='link']
|
||||||
|
Loop, 60 {
|
||||||
|
URLSLUG := GetHTMLValueFromXpathOuterHTML(XPATH, "href")
|
||||||
|
if(URLSLug = "Failed"){
|
||||||
|
Message = Failed to Grab URL SLug from confirmation popup
|
||||||
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||||
|
Return
|
||||||
|
}
|
||||||
|
; Msgbox % "URLSLug: " URLSLug
|
||||||
|
if(InStr(URLSLug, OdyseeLivestreamSlug))
|
||||||
|
break
|
||||||
|
|
||||||
|
if(A_Index = 60){
|
||||||
|
Message = Odysee did not generate permanant livestream URL after 1 minute of waiting. Congestion Issues?
|
||||||
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||||
|
Return
|
||||||
|
}
|
||||||
|
|
||||||
|
sleep, 1000
|
||||||
|
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
; Message =
|
||||||
|
Xpath = //span[contains(text(),'View Livestream Settings')]
|
||||||
|
Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=5,SleepLength:=1000)
|
||||||
|
if(Status){
|
||||||
|
Message = Failed to click on View Livestream Settigns Button
|
||||||
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||||
|
Return
|
||||||
|
}
|
||||||
|
|
||||||
|
; Double check that we're on the right page.
|
||||||
|
Xpath = //label[normalize-space()='Stream server']
|
||||||
|
try InnerText := driver.findelementbyxpath(Xpath).Attribute("innerText") ;XPATH Inner Text
|
||||||
|
if(InnerText != "Stream server"){
|
||||||
|
Message = Failed to Navigate to View Livestream Settings Page
|
||||||
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||||
|
Return
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Xpath = //div[@class='section']//li[1]
|
||||||
|
Try ElementOuterHTML := driver.findelementbyxpath(Xpath).Attribute("outerHTML") ;XPATH-ID & Tag
|
||||||
|
; Clipboard := OdyseeURLSLUG
|
||||||
|
; Msgbox % "OdyseeURLSLUG: " OdyseeURLSLUG
|
||||||
|
; Clipboard := ElementOuterHTML
|
||||||
|
; Msgbox % "ElementOuterHTML: " ElementOuterHTML
|
||||||
|
|
||||||
|
|
||||||
|
if(!InStr(ElementOuterHTML, OdyseeURLSLUG)){
|
||||||
|
Message = Failed to Grab Livestream URL. Please copy and paste it manually.
|
||||||
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||||
|
return
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Xpath = //div[@class='section']//li[1]
|
||||||
|
URLSLUG := GetHTMLValueFromXpathOuterHTML(XPATH, "href")
|
||||||
|
if(URLSLUG = "Failed"){
|
||||||
|
Message = Failed to Grab Livestream URL from outerHTML of livestream element.
|
||||||
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||||
|
Return
|
||||||
|
}
|
||||||
|
|
||||||
|
OdyseeLivestreamURL := "https://odysee.com" . URLSLug
|
||||||
|
; Msgbox % "OdyseeLivestreamURL: " OdyseeLivestreamURL
|
||||||
|
|
||||||
|
; Message = URL Slug Grabbed from Confirmation Popup: %URLSLug%
|
||||||
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||||
|
|
||||||
|
; OdyseeLivestreamURL := "https://odysee.com" . URLSLug
|
||||||
|
|
||||||
|
|
||||||
|
IniWrite, %OdyseeLivestreamURL%, %PostStatusesFilepath%, Livestream,OdyseeLivestreamURL
|
||||||
|
|
||||||
|
|
||||||
Return
|
Return
|
||||||
BIN
Version.ini
Normal file
BIN
Version.ini
Normal file
Binary file not shown.
Reference in New Issue
Block a user