This commit is contained in:
2024-05-18 00:41:20 -04:00
parent cb42cd069f
commit 211c3ea4fa
7 changed files with 179 additions and 93 deletions

BIN
Assets/Preview.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

View File

@@ -64,6 +64,8 @@ global FullScriptName
global PostStatusesFilepath global PostStatusesFilepath
global ErrorLoggingDirectory global ErrorLoggingDirectory
global ConfirmBeforeSubmit
global DiscordErrorLoggingWebhookBotURL global DiscordErrorLoggingWebhookBotURL
global DiscordVideosWebhookURL global DiscordVideosWebhookURL
global VideoFolderDir global VideoFolderDir
@@ -104,12 +106,14 @@ FileInstall, Version.ini, %A_ScriptDir%\Lib\Version.ini, 1
IniRead, ScriptVersion, %A_ScriptDir%\Lib\Version.ini,%ScriptSettingsSection%, Version, 0.0 IniRead, ScriptVersion, %A_ScriptDir%\Lib\Version.ini,%ScriptSettingsSection%, Version, 0.0
; IniRead, ScriptName, %A_ScriptDir%\Lib\Version.ini,%ScriptSettingsSection%, Name, %ScriptSettingsSection% ; IniRead, ScriptName, %A_ScriptDir%\Lib\Version.ini,%ScriptSettingsSection%, Name, %ScriptSettingsSection%
global ScriptName := "Freedomain Livestream Scheduler" global ScriptName
global ScriptAbbreviatedName := "FLS" ; used for error logging ScriptName := "Freedomain Livestream Scheduler"
global ScriptAbbreviatedName
ScriptAbbreviatedName := "FLS" ; used for error logging
FullScriptName := ScriptName . " - " . ScriptVersion FullScriptName := ScriptName . " - " . ScriptVersion
; Msgbox % "FullScriptName: " FullScriptName
global GitReleasesAPIURL global GitReleasesAPIURL
GitReleasesAPIURL = https://freedomain.dev/api/v1/repos/yuriy/livestream-scheduler/releases GitReleasesAPIURL = https://freedomain.dev/api/v1/repos/yuriy/livestream-scheduler/releases
@@ -172,13 +176,20 @@ if(ErrorLogToDiscord){
; GUI Variables ; GUI Variables
; ------------------------------------------------ ; ------------------------------------------------
GuiFontSize = 15
MarginSize := 10 MarginSize := 10
MarginSizeDoubled := MarginSize * 2 MarginSizeDoubled := MarginSize * 2
ButtonHeights := 30 ButtonHeights := 30
ThumbnailPreviewWidth := 200 ThumbnailPreviewWidth := 150
GuiHeight := 470
VerticalLineHeight := GuiHeight - 100
GuiHeight := 440
; Column One ; Column One
ColumnOneWidth := 500 ColumnOneWidth := 500
@@ -187,14 +198,21 @@ ColumnOneEditBoxWidth := ColumnOneWidth - (MarginSize * 2)
ColumnOneEditBoxHalfWidth := (ColumnOneEditBoxWidth / 2) + 5 ColumnOneEditBoxHalfWidth := (ColumnOneEditBoxWidth / 2) + 5
GuiFontSize = 15
; Column Two ; Column Two
ColumnTwoXPosition := ColumnOneWidth + (MarginSize * 2) ColumnTwoXPosition := ColumnOneWidth + (MarginSize * 2)
ColumnTwoVerticalLineXPosition := ColumnTwoXPosition - (MarginSize * 2)
ColumnTwoEditBoxWidth := 200 ColumnTwoEditBoxWidth := 200
ColumnTwoEditBoxHalfWidth := ColumnTwoEditBoxWidth / 2 ColumnTwoEditBoxHalfWidth := ColumnTwoEditBoxWidth / 2
; Column Three
ColumnThreeXPosition := ColumnTwoXPosition + ColumnTwoEditBoxWidth + (MarginSizeDoubled * 2)
ColumnThreeVerticalLineXPosition := ColumnThreeXPosition - (MarginSize * 2)
ColumnThreeEditBoxWidth := 180
GUIWidth := ColumnThreeXPosition + ColumnThreeEditBoxWidth + MarginSize
; Results Screen ; Results Screen
ResultButtonWidth := 250 ResultButtonWidth := 250
@@ -203,87 +221,96 @@ ResultButtonHeights := 30
ResultButtonAndEditWidth := ResultButtonWidth + ResultButtonEditWidth + MarginSize ResultButtonAndEditWidth := ResultButtonWidth + ResultButtonEditWidth + MarginSize
; START OF GUI ; START OF GUI
; ------------------------------------------------ ; ------------------------------------------------
Gui, Margin, %MarginSize%, %MarginSize%
Gui, Font, s%GuiFontSize% ; Gui Color, 0193C4
; Column One ; Column One
;------------------------------------------------ ;------------------------------------------------
Gui, Font, Bold
Gui, Font, s8
Gui, Add, Text,, Title
Gui, Font, Normal
Gui, Font, s%GuiFontSize% Gui, Font, s%GuiFontSize%
Gui, Add, Edit,w%ColumnOneEditBoxWidth% vLivestreamTitle, %LivestreamTitle%
Gui, Font, Bold Gui, Font, Bold
Gui, Font, s8 Gui, Add, Text,x%MarginSize%, Title
Gui, Font, s10
Gui, Font, Normal
Gui, Add, Button, x+%MarginSize% gPasteClipboardToEditBox vPasteClipboardToFLSTitle, Paste Clipboard
Gui, Font, s%GuiFontSize%
Gui, Font, Normal
Gui, Add, Edit,x%MarginSize% w%ColumnOneEditBoxWidth% vLivestreamTitle, %LivestreamTitle%
Gui, Font, s%GuiFontSize%
Gui, Font, Bold
Gui, Add, Text,, Description Gui, Add, Text,, Description
Gui, Font, Normal
Gui, Font, s%GuiFontSize%
Gui, Add, Edit,w%ColumnOneEditBoxWidth% h150 vLivestreamDescription, %LivestreamDescription%
Gui, Font, s10
Gui, Font, Normal
Gui, Add, Button, x+%MarginSize% gPasteClipboardToEditBox vPasteClipboardToFLSDescription, Paste Clipboard
Gui, Font, s%GuiFontSize%
Gui, Font, Normal
Gui, Add, Edit,x%MarginSize% w%ColumnOneEditBoxWidth% h170 vLivestreamDescription, %LivestreamDescription%
Gui, Font, s%GuiFontSize%
Gui, Font, Bold Gui, Font, Bold
Gui, Font, s8
Gui, Add, Text,, Tags (Comma Seperated) Gui, Add, Text,, Tags (Comma Seperated)
Gui, Font, s10
Gui, Font, Normal Gui, Font, Normal
Gui, Add, Button, x+%MarginSize% gPasteClipboardToEditBox vPasteClipboardToFLSTags, Paste Clipboard
Gui, Font, s%GuiFontSize% Gui, Font, s%GuiFontSize%
Gui, Add, Edit,w%ColumnOneEditBoxWidth% vLivestreamTags, %LivestreamTags% Gui, Font, Normal
Gui, Add, Edit,x%MarginSize% w%ColumnOneEditBoxWidth% vLivestreamTags, %LivestreamTags%
; Buttons at Bottom of Page
; ------------------------------------------------
; Start with Column one and go across
ScheduleButtonWidths := 234
ScheduleButtonHeight := 50
Gui, Font, s%GuiFontSize%
Gui, Font, Bold
Gui, add, text, x0 y+%marginsizeDoubled% w970 0x10
Gui, Add, Button, x%MarginSize% yp+%marginsizeDoubled% w%ColumnTwoEditBoxWidth% h%ScheduleButtonHeight% gLoadPrevious , Load Previous
Gui, Font, Bold Gui, Font, Bold
Gui, Font, s8 ; Gui, Font, S10
Gui, Add, Text,, Thumbnail Gui, Add, Button, x+%marginsize% w%ScheduleButtonWidths% h%ScheduleButtonHeight% gSaveAsTemplate, Save As Template
Gui, Add, Button, x+%MarginSize% yp-3 gSelectThumbnail, Select Gui, Add, Button,x+%marginsize% gSchedulePost h%ScheduleButtonHeight% w%ScheduleButtonWidths% gLoadTemplate, Load Template
Gui, Font, Normal Gui, Add, Button, x+%marginsize% gSchedulePost h%ScheduleButtonHeight% w%ScheduleButtonWidths% gSchedulePost, Schedule
Gui, Font, s%GuiFontSize%
Gui, Add, Picture, x%MarginSize% w%ThumbnailPreviewWidth% h-1 vThumbnailPreview, %LivestreamThumbnail%
Gui, Font, Bold
Gui, Font, S10
Gui, Add, Button, x%ColumnOneEditBoxHalfWidth% yp-%marginsize% w%ColumnOneEditBoxHalfWidth% h40 gSaveAsTemplate, Save As Template
Gui, Add, Button,gSchedulePost w%ColumnOneEditBoxHalfWidth% gLoadTemplate h40 , Load Template
Gui, Font, Normal
Gui, Add, Button,gSchedulePost w%ColumnOneEditBoxHalfWidth% gLoadPrevious h20 , Load Previous
; Gui, Add, Button, yp+0 x%ColumnOneEditBoxHalfWidth% w%ColumnOneEditBoxHalfWidth%, Text button here
; Gui, Add, Edit,w%ColumnOneEditBoxWidth% h150 vLivestreamDescription, This livestream is happening soon!
; Column Two ; Column Two
; ------------------------------------------------ ; ------------------------------------------------
Gui, add, text, x%ColumnTwoVerticalLineXPosition% y%marginSize% h%VerticalLineHeight% 0x11 ;Vertical Line > Etched Gray
Gui, Font, s%GuiFontSize% Gui, Font, s%GuiFontSize%
Gui, Font, Bold Gui, Font, Bold
Gui, Add, Text,y0 x%ColumnTwoXPosition%, Settings ; Gui, Add, Text, , Thumbnail
Gui, Add, GroupBox, r2.5 x%ColumnTwoXPosition% y%marginSize% vImageThumbnail w%ColumnTwoEditBoxWidth%,Thumbnail
Gui, Font, s10
Gui, Font, Normal Gui, Font, Normal
Gui, Font, s8 Gui, Add, Button, xp+120 yp-3 gSelectThumbnail, Select
Gui, Add, Checkbox, vErrorLogToDiscord Checked%ErrorLogToDiscord%, Error Log to Discord ; Gui, Font, Normal
Gui, Add, Checkbox, vConfirmBeforeSubmit checked%ConfirmBeforeSubmit%, Confirm Before Submit ; Gui, Font, s%GuiFontSize%
Gui, Add, Checkbox, vAutoUpdateCheck Checked%AutoUpdateCheck%, Auto Update Check Gui, Add, Picture, x%ColumnTwoXPosition% y+%marginsize% w%ThumbnailPreviewWidth% h-1 vThumbnailPreview, %LivestreamThumbnail%
if(UpdateAvailable){
Gui, Add, Button, cRed w%ColumnTwoEditBoxWidth% gUpdateScript vUpdateAvailable center, Update Available!
}
else, {
Gui, Add, Button, w%ColumnTwoEditBoxWidth% gUpdateScript vUpdateAvailable center, No Updates Available
}
Gui, Font, s%GuiFontSize% Gui, Font, s%GuiFontSize%
Gui, Font, Bold Gui, Font, Bold
; Gui, Add, Text, , Settings Gui, Add, Text, x%ColumnTwoXPosition% yp+100 , Date and Time
Gui, Add, Text, y+%MarginSizeDoubled% , Date and Time
Gui, Font, Normal Gui, Font, Normal
Gui, Add, DateTime, vLivestreamDate w%ColumnTwoEditBoxWidth%, MM/dd/yyyy Gui, Add, DateTime, vLivestreamDate w%ColumnTwoEditBoxWidth%, MM/dd/yyyy
@@ -311,13 +338,41 @@ Gui, Add, Checkbox,x%ColumnTwoXPosition% y+%marginsize% checked vRumble, Rumble
Gui, Font, S8 Gui, Font, S8
Gui, Add, Checkbox, x+10 yp+5 Checked vInputRumbleCustomRTMP, Input RTMP Gui, Add, Checkbox, x+10 yp+5 Checked vInputRumbleCustomRTMP, Input RTMP
Gui, add, text, x%ColumnThreeVerticalLineXPosition% y%marginSize% h%VerticalLineHeight% 0x11 ;Vertical Line > Etched Gray
Gui, Font, s15
; Column Three
; ------------------------------------------------
Gui, Font, s%GuiFontSize%
Gui, Font, Bold Gui, Font, Bold
Gui, Add, Button, x%ColumnTwoXPosition% y+%marginsizeDoubled% gSchedulePost w%ColumnTwoEditBoxWidth% h60, Schedule Gui, Add, Text,y0 x%ColumnThreeXPosition%, Settings
; Gui, Font, Normal
Gui, Show, h%GuiHeight%, %FullScriptName%
Gui, Font, s12
Gui, Font, Normal
Gui, Add, Checkbox, vAutoUpdateCheck Checked%AutoUpdateCheck%, Auto Update Check
Gui, Add, Checkbox, vErrorLogToDiscord Checked%ErrorLogToDiscord%, Error Log to Discord
Gui, Add, Checkbox, vConfirmBeforeSubmit checked%ConfirmBeforeSubmit%, Confirm Before Submit
Gui, Font, s%GuiFontSize%
Gui, Font, Bold
Gui, Add, Text, y+%MarginSizeDoubled% x%ColumnThreeXPosition%, Updates
Gui, Font, S10
if(UpdateAvailable)
Gui, Add, Button, cRed w%ColumnTwoEditBoxWidth% center vUpdateAvailable gUpdateScript, FLS Update Available!
else,
Gui, Add, Button, w%ColumnThreeEditBoxWidth% center vUpdateAvailable gUpdateScript, FLS Up-to-Date
if(ChromeUpdateAvailable)
Gui, Add, Button, cRed w%ColumnThreeEditBoxWidth% center vChromeUpdateAvailable gUpdateChrome,Chrome Update Available!
else,
Gui, Add, Button, w%ColumnThreeEditBoxWidth% center vChromeUpdateAvailable gUpdateChrome, Chrome Up-to-Date
Gui, Show, h%GuiHeight% w%GUIWidth%, %FullScriptName%
@@ -413,8 +468,8 @@ ExitApp
SelectThumbnail: SelectThumbnail:
FileSelectFile, LivestreamThumbnail, FileSelectFile, LivestreamThumbnail,
; Msgbox % "ThumbnailPreviewWidth: " ThumbnailPreviewWidth
GuiControl, , ThumbnailPreview, *w%ThumbnailPreviewWidth% *h-1 %LivestreamThumbnail% GuiControl, , ThumbnailPreview, *h130 *w-1 %LivestreamThumbnail%
Return Return
@@ -595,9 +650,7 @@ if(SocialMediaPosterFilepath = "" or !FileExist(SocialMediaPosterFilepath)){
} Else IfMsgBox Cancel, { } Else IfMsgBox Cancel, {
Return Return
} }
IniWrite, %SocialMediaPosterFilepath%, %SettingsIniFilepath%, Filepaths, SocialMediaPosterFilepath IniWrite, %SocialMediaPosterFilepath%, %SettingsIniFilepath%, Filepaths, SocialMediaPosterFilepath
} }
run, %SocialMediaPosterFilepath% %StatusFileFilePath% run, %SocialMediaPosterFilepath% %StatusFileFilePath%
@@ -710,7 +763,7 @@ Return
#Include %A_ScriptDir%\Lib\Freedomain-Posters-Shared-Functions\Update-Functions.ahk #Include %A_ScriptDir%\Lib\Freedomain-Posters-Shared-Functions\Shared-GoTos.ahk
; Misc ; Misc

View File

@@ -5,7 +5,7 @@ MediaManagerUpdate:
CurrentSite := "Media Manager" CurrentSite := "Media Manager"
SaveOrPostProgress(Message:="Scheduling Post in Rumble Studio",PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging") SaveOrPostProgress(Message:="Navigating to Website",PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
IniRead, FDRRadioURL, %SettingsIniFilepath%, General, FDRRadioURL, %A_Space% IniRead, FDRRadioURL, %SettingsIniFilepath%, General, FDRRadioURL, %A_Space%
@@ -47,6 +47,9 @@ if(InStr(PageURL, "/NotLoggedIn")){
} }
Message = Updating Redirect URLs
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
; URL for each redirect ; URL for each redirect
LocalsLiveRedirectURL := FDRRadioBaseURL . "/manage/#/Redirects/Modify?redirectID=738" LocalsLiveRedirectURL := FDRRadioBaseURL . "/manage/#/Redirects/Modify?redirectID=738"
RumbleLiveRedirectURL := FDRRadioBaseURL . "/manage/#/Redirects/Modify?redirectID=739" RumbleLiveRedirectURL := FDRRadioBaseURL . "/manage/#/Redirects/Modify?redirectID=739"
@@ -59,15 +62,34 @@ IniRead, OdyseeLivestreamURL, %PostStatusesFilepath%, Livestream,OdyseeLivestrea
if(LocalsLivestreamURL)
UpdateMediaManagerRedirect(LocalsLiveRedirectURL, LocalsLivestreamURL) UpdateMediaManagerRedirect(LocalsLiveRedirectURL, LocalsLivestreamURL)
else, {
Message = LocalsLivestreamURL is blank. Skipping
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
}
if(RumbleLivestreamURL)
UpdateMediaManagerRedirect(RumbleLiveRedirectURL, RumbleLivestreamURL) UpdateMediaManagerRedirect(RumbleLiveRedirectURL, RumbleLivestreamURL)
else, {
Message = RumbleLivestreamURL is blank. Skipping
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
}
if(OdyseeLivestreamURL)
UpdateMediaManagerRedirect(OdyseeLiveRedirectURL, OdyseeLivestreamURL) UpdateMediaManagerRedirect(OdyseeLiveRedirectURL, OdyseeLivestreamURL)
else, {
Message = OdyseeLivestreamURL is blank. Skipping
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
}
UpdateMediaManagerRedirect(MediaManagerRedirectPageURL, RedirectURL){ UpdateMediaManagerRedirect(MediaManagerRedirectPageURL, RedirectURL){
try, driver.Get(MediaManagerRedirectPageURL) ;Open selected URL try, driver.Get(MediaManagerRedirectPageURL) ;Open selected URL
try, driver.executeScript("return document.readyState").equals("complete") ; wait until page loads completely before proceeding try, driver.executeScript("return document.readyState").equals("complete") ; wait until page loads completely before proceeding
@@ -75,18 +97,11 @@ UpdateMediaManagerRedirect(MediaManagerRedirectPageURL, RedirectURL){
Status := Selenium_LoopToSendValueToXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000,StringTextContent:=RedirectURL, ClearElement := 1) Status := Selenium_LoopToSendValueToXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000,StringTextContent:=RedirectURL, ClearElement := 1)
if(ConfirmBeforeSubmit){ ; Snippet to for check:
OnMessage(0x44, "OnMsgBoxUserConfirmation") if (ConfirmBeforeSubmit && ConfirmBeforeSubmitMsgboxFunc() != true) {
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. Message = User Selected STOP button when asked for confirmation. Cancelling Rest of Site Upload.
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging") SaveOrPostProgress(Message:=Message, PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
Return return
}
} }
; Save button ; Save button
@@ -98,6 +113,7 @@ UpdateMediaManagerRedirect(MediaManagerRedirectPageURL, RedirectURL){
Return Return
} }
Sleep, 1000
Return "Success" Return "Success"
} }

View File

@@ -256,6 +256,7 @@ IniWrite, %OdyseeLivestreamURL%, %PostStatusesFilepath%, Livestream,OdyseeLivest
; Grab RTMP Settings ; Grab RTMP Settings
Message = Waiting for Confirmation Screen to grab RTMP Settings Message = Waiting for Confirmation Screen to grab RTMP Settings
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
Xpath = (//span[contains(text(),'View Livestream Settings')])[1] Xpath = (//span[contains(text(),'View Livestream Settings')])[1]
loop, 60 { loop, 60 {
@@ -269,6 +270,12 @@ loop, 60 {
; click on the "View livestream Settings" button ; click on the "View livestream Settings" button
Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=5,SleepLength:=1000) Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=5,SleepLength:=1000)
if(Status){
Message = Failed to click on -View Livestream Settings- Button
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
Return
}
; Grab the Stream URL and Key ; Grab the Stream URL and Key
Xpath = (//input[@name='stream-server'])[1] Xpath = (//input[@name='stream-server'])[1]

View File

@@ -1,3 +1,13 @@
# Freedomain-Livestream-Scheduler # Freedomain-Livestream-Scheduler
Livestream Scheduler written for the [Freedomain Philosophy Show](https://freedomain.com/) 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.