Compare commits
No commits in common. 'main' and '1.21' have entirely different histories.
Binary file not shown.
Before Width: | Height: | Size: 114 KiB After Width: | Height: | Size: 101 KiB |
Binary file not shown.
Before Width: | Height: | Size: 90 KiB After Width: | Height: | Size: 50 KiB |
Binary file not shown.
Binary file not shown.
Before Width: | Height: | Size: 93 KiB |
@ -1 +1 @@
|
||||
Subproject commit cf56ae8136def874793895733d595349b20d9c19
|
||||
Subproject commit 0e02ae24bd4d909df30a58ba61693cef321fcaaa
|
@ -1,119 +0,0 @@
|
||||
|
||||
|
||||
MediaManagerUpdate:
|
||||
; ------------------------------------------------
|
||||
|
||||
|
||||
CurrentSite := "Media Manager"
|
||||
SaveOrPostProgress(Message:="Navigating to Website",PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||
|
||||
|
||||
IniRead, FDRRadioURL, %SettingsIniFilepath%, General, FDRRadioURL, %A_Space%
|
||||
if(FDRRadioURL = ""){
|
||||
Message = FDRRadioURL is blank in Settings.ini. Please add it to the following location: [General]`nFDRRadioURL=
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||
Return
|
||||
}
|
||||
|
||||
|
||||
FDRRadioBaseURL := "https://" . ExtractBaseURL(FDRRadioURL)
|
||||
FDRRadioURL := FDRRadioBaseURL . "/manage/"
|
||||
|
||||
Status := NavigateFromBaseURLTo(FDRRadioURL)
|
||||
if(Status)
|
||||
Return
|
||||
|
||||
CheckForAlerts()
|
||||
|
||||
Message = Checking Login Status
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||
|
||||
Try, PageURL := driver.Url
|
||||
if(InStr(PageURL, "/NotLoggedIn")){
|
||||
Message = Logged out. Trying to log back in.
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||
|
||||
Xpath = (//span[contains(text(),'Login')])[1]
|
||||
Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000)
|
||||
|
||||
sleep, 1000
|
||||
|
||||
Try, PageURL := driver.Url
|
||||
if(InStr(PageURL, "/NotLoggedIn")){
|
||||
Message = Failed to log back in automatically. Please login and try again.
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||
Return
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Message = Updating Redirect URLs
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||
|
||||
; URL for each redirect
|
||||
LocalsLiveRedirectURL := FDRRadioBaseURL . "/manage/#/Redirects/Modify?redirectID=738"
|
||||
RumbleLiveRedirectURL := FDRRadioBaseURL . "/manage/#/Redirects/Modify?redirectID=739"
|
||||
OdyseeLiveRedirectURL := FDRRadioBaseURL . "/manage/#/Redirects/Modify?redirectID=742"
|
||||
|
||||
; read the url's from the status file
|
||||
IniRead, LocalsLivestreamURL, %PostStatusesFilepath%, Livestream,LocalsLivestreamURL, %A_Space%
|
||||
IniRead, RumbleLivestreamURL, %PostStatusesFilepath%, Livestream,RumbleLivestreamURL, %A_Space%
|
||||
IniRead, OdyseeLivestreamURL, %PostStatusesFilepath%, Livestream,OdyseeLivestreamURL, %A_Space%
|
||||
|
||||
|
||||
|
||||
if(LocalsLivestreamURL)
|
||||
UpdateMediaManagerRedirect(LocalsLiveRedirectURL, LocalsLivestreamURL)
|
||||
else, {
|
||||
Message = LocalsLivestreamURL is blank. Skipping
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||
}
|
||||
|
||||
if(RumbleLivestreamURL)
|
||||
UpdateMediaManagerRedirect(RumbleLiveRedirectURL, RumbleLivestreamURL)
|
||||
else, {
|
||||
Message = RumbleLivestreamURL is blank. Skipping
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||
}
|
||||
|
||||
|
||||
if(OdyseeLivestreamURL)
|
||||
UpdateMediaManagerRedirect(OdyseeLiveRedirectURL, OdyseeLivestreamURL)
|
||||
else, {
|
||||
Message = OdyseeLivestreamURL is blank. Skipping
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
UpdateMediaManagerRedirect(MediaManagerRedirectPageURL, RedirectURL){
|
||||
|
||||
try, driver.Get(MediaManagerRedirectPageURL) ;Open selected URL
|
||||
try, driver.executeScript("return document.readyState").equals("complete") ; wait until page loads completely before proceeding
|
||||
|
||||
Xpath = (//input[@id='destinationURL'])[1]
|
||||
Status := Selenium_LoopToSendValueToXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000,StringTextContent:=RedirectURL, ClearElement := 1)
|
||||
|
||||
|
||||
; Snippet to for check:
|
||||
if (ConfirmBeforeSubmit && ConfirmBeforeSubmitMsgboxFunc() != true) {
|
||||
Message = User Selected STOP button when asked for confirmation. Cancelling Rest of Site Upload.
|
||||
SaveOrPostProgress(Message:=Message, PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||
return
|
||||
}
|
||||
|
||||
; Save button
|
||||
Xpath = (//span[contains(text(),'Save')])[1]
|
||||
Status := Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000)
|
||||
if(Status){
|
||||
Message = Failed to click Save button
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||
Return
|
||||
}
|
||||
|
||||
Sleep, 1000
|
||||
Return "Success"
|
||||
|
||||
}
|
@ -1,98 +0,0 @@
|
||||
RumbleSetRTMP:
|
||||
;------------------------------------------------
|
||||
|
||||
|
||||
CurrentSite := "Rumble Studio"
|
||||
|
||||
Status := NavigateFromBaseURLTo("https://studio.rumble.com/settings/connections")
|
||||
if(Status)
|
||||
Return
|
||||
|
||||
try driver.executeScript("return document.readyState").equals("complete") ; wait until page loads completely before proceeding
|
||||
|
||||
CheckForAlerts()
|
||||
|
||||
Message = Inputting Custom RTMP Settings into Rumble Studio
|
||||
SaveOrPostProgress(Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||
|
||||
|
||||
IniRead, LocalsRTMPURL, %PostStatusesFilepath%, Livestream,LocalsRTMPURL, %A_Space%
|
||||
IniRead, LocalsRTMPKey, %PostStatusesFilepath%, Livestream,LocalsRTMPKey, %A_Space%
|
||||
|
||||
IniRead, OdyseeRTMPKey, %PostStatusesFilepath%, Livestream,OdyseeRTMPKey, %A_Space%
|
||||
IniRead, OdyseeRTMPURL, %PostStatusesFilepath%, Livestream,OdyseeRTMPURL, %A_Space%
|
||||
|
||||
|
||||
if(LocalsRTMPURL = ""){
|
||||
Message = Skipping. No LocalsRTMPURL in Status.ini file
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||
Return
|
||||
}
|
||||
|
||||
if(OdyseeRTMPURL = ""){
|
||||
Message = Skipping. No OdyseeRTMPURL in Status.ini file
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||
Return
|
||||
}
|
||||
|
||||
|
||||
|
||||
Loop, 10 {
|
||||
|
||||
; IndexPlusOne := A_index + 1
|
||||
IndexMinusOne := A_index - 1
|
||||
Xpath = (//div[@class='flex shrink-0 items-center gap-x-4'])[%A_index%]
|
||||
XpathCheckbox = (//img[@alt='More options'])[%IndexMinusOne%]
|
||||
|
||||
|
||||
try SecondaryPlatformCheckboxName := driver.findelementbyxpath(Xpath).Attribute("innerText") ;XPATH Inner Text
|
||||
|
||||
if(SecondaryPlatformCheckboxName = "LOCALS RTMP USE" OR SecondaryPlatformCheckboxName = "ODYSEE RTMP"){
|
||||
|
||||
if(SecondaryPlatformCheckboxName = "LOCALS RTMP USE"){
|
||||
SiteRTMPURL := LocalsRTMPURL
|
||||
SiteRTMPKey := LocalsRTMPKey
|
||||
}
|
||||
|
||||
if(SecondaryPlatformCheckboxName = "ODYSEE RTMP"){
|
||||
SiteRTMPURL := OdyseeRTMPURL
|
||||
SiteRTMPKey := OdyseeRTMPKey
|
||||
}
|
||||
|
||||
Status := Selenium_LoopToClickXpath(Xpath:=XpathCheckbox,NumOfLoops:=2,SleepLength:=1000)
|
||||
if(Status){
|
||||
Message = Failed to click into 3 dot menu for %SecondaryPlatformCheckboxName%
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||
Return
|
||||
}
|
||||
|
||||
; click Edit RTMP in the popup menu
|
||||
Xpath = (//span[normalize-space()='Edit RTMP'])[1]
|
||||
Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000)
|
||||
if(Status){
|
||||
Message = Failed to click into 3 dot menu for %SecondaryPlatformCheckboxName%
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||
}
|
||||
|
||||
|
||||
; Input New RTMP Info
|
||||
XpathRTMP = (//input[@placeholder='Enter the RTMP URL'])[1]
|
||||
XpathStreamkey = (//input[@placeholder='Enter the stream key'])[1]
|
||||
|
||||
Status := Selenium_LoopToSendValueToXpath(Xpath:=XpathRTMP,NumOfLoops:=2,SleepLength:=1000,StringTextContent:=SiteRTMPURL,ClearElement:=1)
|
||||
Status := Selenium_LoopToSendValueToXpath(Xpath:=XpathStreamkey,NumOfLoops:=2,SleepLength:=1000,StringTextContent:=SiteRTMPKey,ClearElement:=1)
|
||||
|
||||
; click save button
|
||||
Xpath = (//button[@class='rounded-full block px-6 py-2 bg-primary hover:brightness-[0.92] cursor-pointer'])[1]
|
||||
Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000)
|
||||
if(Status){
|
||||
Message = Failed to Click Save Button for %SecondaryPlatformCheckboxName% modified RMTP Settings
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||
Return
|
||||
}
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
RumbleCustomRTMPs := "Success"
|
||||
IniWrite, %RumbleCustomRTMPs%, %PostStatusesFilepath%, Livestream,RumbleCustomRTMPs
|
@ -1,13 +1,3 @@
|
||||
# Freedomain-Livestream-Scheduler
|
||||
|
||||
Livestream Scheduler written for the [Freedomain Philosophy Show](https://freedomain.com/)
|
||||
|
||||
![Alt text](Assets/Preview.png "Screenshot of Main Window")
|
||||
|
||||
## Features
|
||||
Automated scheduling of livestreams on the following platforms using Selenium Chrome automation.
|
||||
* Odysee
|
||||
* Locals
|
||||
* Rumble
|
||||
|
||||
- The RTMP information from each platform will be grabbed at the end of the schedule and then input into Rumble Studio for Livestreaming.
|
Binary file not shown.
Loading…
Reference in New Issue