Compare commits
42 Commits
3.35
...
199fbc1b78
| Author | SHA1 | Date | |
|---|---|---|---|
| 199fbc1b78 | |||
| 9c52c6ec8d | |||
| 959a81bf98 | |||
| ce9f8a9885 | |||
| 71c4093bd9 | |||
| ba33d479ac | |||
| da34b98324 | |||
| 9e76ace3c3 | |||
| fd0b620e23 | |||
| c7924f7cc7 | |||
| 8b43ddc8be | |||
| dbdefc5a95 | |||
| 613f9d222a | |||
| f3817cb9f9 | |||
| 478f8f769e | |||
| 1b856287df | |||
| 45e2d2b0f0 | |||
| 76d410e4d3 | |||
| ee21a03d55 | |||
| 540a688733 | |||
| be75660548 | |||
| 9f1388160c | |||
| 4ce82bde6a | |||
| d1e471bd26 | |||
| f5ffe32766 | |||
| dcd947b136 | |||
| 4476bfdda6 | |||
| 5f63640185 | |||
| 6639c907c9 | |||
| 3492ecccee | |||
| 38a579c486 | |||
| 4beb83caa6 | |||
| b98ae5e190 | |||
| ba0bf308b4 | |||
| 58d80bd084 | |||
| 8b1a8d407c | |||
| b59bfbe2cf | |||
| c4b2eeea8e | |||
| 723dec3fac | |||
| c60a45445c | |||
| fa43716ebe | |||
| ef3cb41e9c |
4
.gitignore
vendored
4
.gitignore
vendored
@@ -19,3 +19,7 @@ Freedomain Video Uploader.exe
|
|||||||
Lib/LBRY Process Killer.exe
|
Lib/LBRY Process Killer.exe
|
||||||
Lib/chrome-win64
|
Lib/chrome-win64
|
||||||
Lib/Version.ini
|
Lib/Version.ini
|
||||||
|
Lib/Version-FVU.ini
|
||||||
|
Lib/Version-FPS.ini
|
||||||
|
**/Scheduled-Posts
|
||||||
|
Freedomain Post Scheduler.exe
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 302 KiB After Width: | Height: | Size: 302 KiB |
BIN
Assets/Screenshots/MainScreen_v341.png
Normal file
BIN
Assets/Screenshots/MainScreen_v341.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 406 KiB |
164
Compile and Release.ahk
Normal file
164
Compile and Release.ahk
Normal file
@@ -0,0 +1,164 @@
|
|||||||
|
;---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------------------------------------------------------
|
||||||
|
#Include, %A_ScriptDir%\Lib\Freedomain-Posters-Shared-Functions\WindowCredentialManager.ahk
|
||||||
|
|
||||||
|
;---VARIABLES-----------------------------------------------------------------------
|
||||||
|
ProgramName = Freedomain Video Uploader
|
||||||
|
ExeProgramName = %ProgramName%.exe
|
||||||
|
AHKFilepath = %A_ScriptDir%\%ProgramName%.ahk
|
||||||
|
Exefilepath = %A_ScriptDir%\%ProgramName%.exe
|
||||||
|
icopath = %A_ScriptDir%\Assets\Icon.ico
|
||||||
|
VersionIniFP = %A_ScriptDir%\Version.ini
|
||||||
|
|
||||||
|
; Generate a new errorlog text file each run
|
||||||
|
FormatTime, TodayDate , YYYYMMDDHH24MISS, yyyyMMdd_hhmmss
|
||||||
|
ErrorLogFilepath = %A_ScriptDir%\Lib\ErrorLogging\Compiler_%TodayDate%.txt
|
||||||
|
|
||||||
|
|
||||||
|
; Read Credential token from Windows Credential Manager using WindowCredentialManager.ahk
|
||||||
|
cred := CredRead("FDR-Gitea-Token")
|
||||||
|
GiteaToken := Cred.Password
|
||||||
|
|
||||||
|
; Info for Creating the Release with Gitea-CreateRelease.ps1
|
||||||
|
CreateReleasePS1Filepath = %A_ScriptDir%\Lib\Freedomain-Posters-Shared-Functions\Gitea-CreateRelease.ps1
|
||||||
|
CreateReleaseAPIURL = https://freedomain.dev/api/v1/repos/yuriy/video-uploader/releases?token=%GiteaToken%
|
||||||
|
|
||||||
|
; Info for Attaching exe file to release using Gitea-AttachAssetToRelease.ps1
|
||||||
|
AttachAssetToReleasePS1Filepath = %A_ScriptDir%\Lib\Freedomain-Posters-Shared-Functions\Gitea-AttachAssetToRelease.ps1
|
||||||
|
AttachAssetToReleaseAPIURL = https://freedomain.dev/api/v1/repos/yuriy/video-uploader/releases
|
||||||
|
|
||||||
|
;---\VARIABLES-----------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; Compile to .exe
|
||||||
|
; ------------------------------------------------
|
||||||
|
; Bump the version number in the version.ini file
|
||||||
|
IniRead, VersionNumber, %VersionIniFP%, Video-Uploader, Version, 0.0 ; , Filename, Section, Key [, Default]
|
||||||
|
VersionNumber += .01
|
||||||
|
VersionNumber := SubStr(VersionNumber, 1, 4)
|
||||||
|
IniWrite, %VersionNumber%, %VersionIniFP%,Video-Uploader, Version
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; Kill any active intances of the uploaders so the .exe file can be overwriten by the compilation
|
||||||
|
process, close, %ExeProgramName%
|
||||||
|
|
||||||
|
sleep, 500
|
||||||
|
|
||||||
|
; 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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
; check if file exists and if not, give user error and stop
|
||||||
|
if(!FileExist(AHKFilepath)){
|
||||||
|
msgbox, %AHKFilepath% does not exist`nExiting
|
||||||
|
ExitApp
|
||||||
|
}
|
||||||
|
|
||||||
|
; check if file exists and if not, give user error and stop
|
||||||
|
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%""
|
||||||
|
Command = "C:\Program Files\AutoHotkey\Compiler\Ahk2Exe.exe" /in "%AHKFilepath%" /out "%exefilepath%" /icon "%icopath%"
|
||||||
|
Results := RunCMD(Command)
|
||||||
|
LogToErrorLogFile(Results, ErrorLogFilepath)
|
||||||
|
|
||||||
|
if(!InStr(Results, "Successfully")){
|
||||||
|
Msgbox, Error, Compilation failed with the following error:`n`n%Results%
|
||||||
|
ExitApp
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; Create new Release on Gitea using Gitea-CreateRelease.ps1
|
||||||
|
; ------------------------------------------------
|
||||||
|
InputBox, ReleaseBody, Release Body, Please Input Text to be used in the Release Body
|
||||||
|
|
||||||
|
ReleaseName := VersionNumber
|
||||||
|
ReleaseTag := VersionNumber
|
||||||
|
|
||||||
|
; Strings with spaces in them need to be surrounted by a single quote and double quote, eg: "'spaced string'"
|
||||||
|
Command = Powershell "%CreateReleasePS1Filepath%" "%CreateReleaseAPIURL%" "%ReleaseName%" "%ReleaseTag%" "'%ReleaseBody%'"
|
||||||
|
|
||||||
|
Message = PowerShell Command to Create Release:`n%Command%
|
||||||
|
LogToErrorLogFile(Message, ErrorLogFilepath)
|
||||||
|
|
||||||
|
Results := RunCMD(Command)
|
||||||
|
Message = API Returned:`n%Results%
|
||||||
|
LogToErrorLogFile(Message, ErrorLogFilepath)
|
||||||
|
|
||||||
|
|
||||||
|
; Pull out the release ID Number, needed for attaching a file to the release
|
||||||
|
SplitText = @{id=
|
||||||
|
SplitText2 = `;
|
||||||
|
ReleaseID := StrSplit(Results, SplitText)[2]
|
||||||
|
ReleaseID := StrSplit(ReleaseID, SplitText2)[1]
|
||||||
|
|
||||||
|
if(ReleaseID = ""){
|
||||||
|
Message = Failed to Grab Release ID`nPlease See Errorlog for Details:`n%ErrorLogFilepath%
|
||||||
|
LogToErrorLogFile(Message, ErrorLogFilepath)
|
||||||
|
Msgbox, %Message%
|
||||||
|
Return
|
||||||
|
}
|
||||||
|
|
||||||
|
Message = ReleaseID: %ReleaseID%
|
||||||
|
LogToErrorLogFile(Message, ErrorLogFilepath)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; Attach .exe File to Release using Gitea-AttachAssetToRelease.ps1
|
||||||
|
; ------------------------------------------------
|
||||||
|
AttachAssetToReleaseAPIURL = %AttachAssetToReleaseAPIURL%/%ReleaseID%/assets
|
||||||
|
|
||||||
|
; Strings with spaces in them need to be surrounted by a single quote and double quote, eg: "'spaced string'"
|
||||||
|
Command = Powershell "%AttachAssetToReleasePS1Filepath%" "%AttachAssetToReleaseAPIURL%" "%GiteaToken%" "'%ExeProgramName%'" "'%Exefilepath%'"
|
||||||
|
LogToErrorLogFile(Command, ErrorLogFilepath)
|
||||||
|
|
||||||
|
Results := RunCMD(Command)
|
||||||
|
Message = API Returned: %Results%
|
||||||
|
LogToErrorLogFile(Message, ErrorLogFilepath)
|
||||||
|
|
||||||
|
|
||||||
|
ExitApp
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
;---FUNCTIONS-----------------------------------------------------------------------
|
||||||
|
LogToErrorLogFile(Text, TextFileFilepath){
|
||||||
|
FileAppend, `n%Text%`n, %TextFileFilepath%
|
||||||
|
}
|
||||||
@@ -14,22 +14,8 @@ CoordMode, Mouse, Screen
|
|||||||
|
|
||||||
;---Notes/Extra Info/#Includes------------------------------------------------------
|
;---Notes/Extra Info/#Includes------------------------------------------------------
|
||||||
|
|
||||||
; msgbox
|
|
||||||
;---VARIABLES-----------------------------------------------------------------------
|
;---VARIABLES-----------------------------------------------------------------------
|
||||||
/*ScriptToCompile = %1%
|
|
||||||
CompileType = %2% ; Testing OR Production
|
|
||||||
if(CompileType = "")
|
|
||||||
CompileType = Testing
|
|
||||||
; Msgbox % "CompileType: " CompileType
|
|
||||||
if(ScriptToCompile = "")
|
|
||||||
ExitApp
|
|
||||||
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
; Msgbox % "ScriptToCompile: " ScriptToCompile
|
|
||||||
ScriptToCompile = SocialMediaPoster
|
|
||||||
; ScriptToCompile = ScriptUpdater
|
|
||||||
;---MAIN SCRIPT---------------------------------------------------------------------
|
;---MAIN SCRIPT---------------------------------------------------------------------
|
||||||
|
|
||||||
AHKFilepath = %A_ScriptDir%\Freedomain Video Uploader.ahk
|
AHKFilepath = %A_ScriptDir%\Freedomain Video Uploader.ahk
|
||||||
@@ -77,9 +63,6 @@ if(!FileExist(icopath)){
|
|||||||
|
|
||||||
run, %comspec% /c ""C:\Program Files\AutoHotkey\Compiler\Ahk2Exe.exe" /in "%AHKFilepath%" /out "%exefilepath%" /icon "%icopath%""
|
run, %comspec% /c ""C:\Program Files\AutoHotkey\Compiler\Ahk2Exe.exe" /in "%AHKFilepath%" /out "%exefilepath%" /icon "%icopath%""
|
||||||
|
|
||||||
|
|
||||||
; OldNotify(ScriptToCompile,"Compiled Successfully",5)
|
|
||||||
; sleep, 5000
|
|
||||||
ExitApp
|
ExitApp
|
||||||
|
|
||||||
|
|
||||||
File diff suppressed because it is too large
Load Diff
Submodule Lib/Freedomain-Posters-Shared-Functions updated: e32fe026e9...95bda715cb
@@ -6,13 +6,24 @@ Message = Starting Upload
|
|||||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||||
|
|
||||||
|
|
||||||
Status := NavigateFromBaseURLTo("https://www.bitchute.com/myupload", "BitChute Video Uploader")
|
Status := NavigateFromBaseURLTo("https://www.bitchute.com/")
|
||||||
if(Status)
|
if(Status)
|
||||||
Return
|
Return
|
||||||
|
|
||||||
Message = Checking Login Status
|
Message = Checking Login Status
|
||||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||||
|
|
||||||
|
Xpath = (//div[normalize-space()='Sign in'])[1]
|
||||||
|
try LoginStatus := driver.findelementbyxpath(Xpath).Attribute("innerText")
|
||||||
|
if(LoginStatus = "Sign In"){
|
||||||
|
Message = Logged out. Trying to Log Back In
|
||||||
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
try TabUrl := driver.url
|
try TabUrl := driver.url
|
||||||
if(InStr(TabUrl, "/accounts/login/")){
|
if(InStr(TabUrl, "/accounts/login/")){
|
||||||
if(AutoLogin){
|
if(AutoLogin){
|
||||||
@@ -35,10 +46,33 @@ if(InStr(TabUrl, "/accounts/login/")){
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
CheckForAlerts()
|
CheckForAlerts()
|
||||||
|
|
||||||
|
if(BitchuteUploadUploadURL = "")
|
||||||
|
{
|
||||||
|
; click on video upload icon so dropdown menu appears
|
||||||
|
Xpath = (//i[normalize-space()='video_call'])[1]
|
||||||
|
Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000)
|
||||||
|
|
||||||
|
; grab upload url from dropdown menu
|
||||||
|
Xpath = (//a[@id='id_upload_video'])[1]
|
||||||
|
UploadURL := GetHTMLValueFromXpathOuterHTML(XPATH, "href")
|
||||||
|
|
||||||
|
if(!InStr(UploadURL, "https")){
|
||||||
|
Message = Failed to Grab Upload Page URL from Home Page
|
||||||
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||||
|
Return
|
||||||
|
}
|
||||||
|
|
||||||
|
UploadURL := StrReplace(UploadURL, "api.bitchute", "old.bitchute")
|
||||||
|
}
|
||||||
|
|
||||||
|
try, driver.Get(UploadURL) ;Open selected URL
|
||||||
|
try, driver.executeScript("return document.readyState").equals("complete") ; wait until page loads completely before proceeding
|
||||||
|
|
||||||
Message = Inputting Title
|
Message = Inputting Title
|
||||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile")
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile")
|
||||||
|
|
||||||
@@ -130,7 +164,7 @@ Loop, 3 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Message = Inputting Tags: %BitchuteTags%
|
Message = Inputting Tags: %BitchuteTags%
|
||||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||||
|
|
||||||
|
|
||||||
; input Search Terms (Tags)
|
; input Search Terms (Tags)
|
||||||
@@ -272,7 +306,6 @@ try driver.executeScript("history.go(0)") ;refresh page
|
|||||||
|
|
||||||
try FirstResultVideoTitle := driver.findElementsByClass("channel-videos-title").item[1].Attribute("innerText") ; Grabb innertext
|
try FirstResultVideoTitle := driver.findElementsByClass("channel-videos-title").item[1].Attribute("innerText") ; Grabb innertext
|
||||||
|
|
||||||
; msgbox % FirstResultVideoTitle = VideoTitle
|
|
||||||
|
|
||||||
try FirstResultIDAndTag := driver.findElementsByClass("channel-videos-title").item[1].Attribute("outerHTML") ;XPath: ID=site-title & span tag
|
try FirstResultIDAndTag := driver.findElementsByClass("channel-videos-title").item[1].Attribute("outerHTML") ;XPath: ID=site-title & span tag
|
||||||
; Msgbox % "FirstResultIDAndTag: " FirstResultIDAndTag
|
; Msgbox % "FirstResultIDAndTag: " FirstResultIDAndTag
|
||||||
@@ -287,9 +320,10 @@ if(VideoHref = ""){
|
|||||||
Return
|
Return
|
||||||
}
|
}
|
||||||
|
|
||||||
BitChuteURL := "https://www.bitchute.com/" . VideoHref
|
BitChuteURL := "https://old.bitchute.com/" . VideoHref
|
||||||
BitChuteURL := StrReplace(BitchuteURL, "//video", "/video")
|
BitChuteURL := StrReplace(BitchuteURL, "//video", "/video")
|
||||||
|
|
||||||
|
|
||||||
; navigate to video page
|
; navigate to video page
|
||||||
try driver.Get(BitChuteURL) ;Open selected URL
|
try driver.Get(BitChuteURL) ;Open selected URL
|
||||||
driver.executeScript("return document.readyState").equals("complete") ; wait until page loads completely before proceeding
|
driver.executeScript("return document.readyState").equals("complete") ; wait until page loads completely before proceeding
|
||||||
@@ -316,6 +350,9 @@ SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,Disc
|
|||||||
Xpath = //button[normalize-space()='Save']
|
Xpath = //button[normalize-space()='Save']
|
||||||
Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000)
|
Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000)
|
||||||
|
|
||||||
|
|
||||||
|
BitChuteURL := StrReplace(BitchuteURL, "old.", "")
|
||||||
|
|
||||||
Message = Upload Complete:`n%BitChuteURL%
|
Message = Upload Complete:`n%BitChuteURL%
|
||||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||||
IniWrite, %BitChuteURL%, %VideoLinksIniFile%, URLs, BitChuteURL
|
IniWrite, %BitChuteURL%, %VideoLinksIniFile%, URLs, BitChuteURL
|
||||||
|
|||||||
@@ -63,14 +63,6 @@ if(InStr(CurrentTab, "login")) ; we're logged out
|
|||||||
Message = Trying to Log Back In
|
Message = Trying to Log Back In
|
||||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile, DiscordErrorLogging")
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile, DiscordErrorLogging")
|
||||||
|
|
||||||
; js = return document.querySelector("input[placeholder='username/email']").value;
|
|
||||||
; status := try driver.executeScript(JS) ;Execute Javascript
|
|
||||||
|
|
||||||
; sleep, 5000
|
|
||||||
; Msgbox % "status: " status
|
|
||||||
|
|
||||||
; if(StrLen(Status) > 0){
|
|
||||||
; msgbox, clicking login button
|
|
||||||
Xpath = //a[normalize-space()='Log In'] ; click login button at top right of page
|
Xpath = //a[normalize-space()='Log In'] ; click login button at top right of page
|
||||||
Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000)
|
Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000)
|
||||||
|
|
||||||
@@ -80,8 +72,6 @@ if(InStr(CurrentTab, "login")) ; we're logged out
|
|||||||
try driver.executeScript("return document.readyState").equals("complete")
|
try driver.executeScript("return document.readyState").equals("complete")
|
||||||
|
|
||||||
sleep, 2000
|
sleep, 2000
|
||||||
; }
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
else, {
|
else, {
|
||||||
|
|||||||
@@ -246,10 +246,10 @@ SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,Disc
|
|||||||
; DailyMotion page automtically splits the tags into individual tags when they're seperated by commas
|
; DailyMotion page automtically splits the tags into individual tags when they're seperated by commas
|
||||||
|
|
||||||
; Iterate from one end of the array to another:
|
; Iterate from one end of the array to another:
|
||||||
Loop % VideoTagsArray.Length(){
|
Loop % ArrayOfVideoTags.Length(){
|
||||||
; ArrayItem := ARRAY[A_Index]
|
; ArrayItem := ARRAY[A_Index]
|
||||||
; MsgBox %
|
; MsgBox %
|
||||||
DailyMotionVideoTags .= VideoTagsArray[A_Index] . ","
|
DailyMotionVideoTags .= ArrayOfVideoTags[A_Index] . ","
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,33 +1,35 @@
|
|||||||
;---GUI Variables---
|
;---GUI Variables---
|
||||||
;------------------------------------------------
|
;------------------------------------------------
|
||||||
|
SetGUIVariables:
|
||||||
GuiHeight = 800
|
GuiHeight = 800
|
||||||
GuiWidth = 1366
|
GuiWidth = 1366
|
||||||
GuiFontSize = 10
|
GuiFontSize = 10
|
||||||
|
|
||||||
ButtonHeights := 30
|
ButtonHeights := 30
|
||||||
|
ResultsActionButtonHeights := 50
|
||||||
|
|
||||||
MarginSpace := 10
|
MarginSize := 10
|
||||||
MarginSpaceDoubled := MarginSpace * 2
|
MarginSizeDoubled := MarginSize * 2
|
||||||
MarginSpaceTripled := MarginSpace * 3
|
MarginSizeTripled := MarginSize * 3
|
||||||
|
|
||||||
EditBoxWidths := (GuiWidth / 100) * 60
|
EditBoxWidths := (GuiWidth / 100) * 60
|
||||||
EditBoxHalfWidths := (EditBoxWidths / 2) - (MarginSpace / 2)
|
EditBoxHalfWidths := (EditBoxWidths / 2) - (MarginSize / 2)
|
||||||
OdyseeURLSlugEditWidth := (EditBoxHalfWidths / 4) * 3
|
OdyseeURLSlugEditWidth := (EditBoxHalfWidths / 4) * 3
|
||||||
|
|
||||||
PodcastNumberTextXPos := EditBoxHalfWidths + OdyseeURLSlugEditWidth + (MarginSpace * 3)
|
PodcastNumberTextXPos := EditBoxHalfWidths + OdyseeURLSlugEditWidth + (MarginSize * 3)
|
||||||
PodcastNumberEditWidth := (EditBoxHalfWidths / 4) - MarginSpace
|
PodcastNumberEditWidth := (EditBoxHalfWidths / 4) - MarginSize
|
||||||
|
|
||||||
EditBoxOneFourthWidth := (EditBoxWidths / 4 )
|
EditBoxOneFourthWidth := (EditBoxWidths / 4 )
|
||||||
EditBoxThreeFourthsWidth := (EditBoxWidths / 4 ) * 3
|
EditBoxThreeFourthsWidth := (EditBoxWidths / 4 ) * 3
|
||||||
|
|
||||||
|
|
||||||
ColumnOneHalfWidthXPos := EditBoxHalfWidths + MarginSpaceDoubled
|
ColumnOneHalfWidthXPos := EditBoxHalfWidths + MarginSizeDoubled
|
||||||
|
|
||||||
EditBoxThirdsWidths := (EditBoxWidths / 3) - (MarginSpace / 2)
|
EditBoxThirdsWidths := (EditBoxWidths / 3) - (MarginSize / 2)
|
||||||
OdyseeURLSlugXPos := EditBoxHalfWidths + (MarginSpace * 2)
|
OdyseeURLSlugXPos := EditBoxHalfWidths + (MarginSize * 2)
|
||||||
|
|
||||||
EditBoxFourthWidths := (EditBoxWidths / 4) - (MarginSpace - 2)
|
EditBoxFourthWidths := (EditBoxWidths / 4) - (MarginSize - 2)
|
||||||
VideoTagsTextXPos := EditBoxHalfWidths + (MarginSpace * 2)
|
VideoTagsTextXPos := EditBoxHalfWidths + (MarginSize * 2)
|
||||||
|
|
||||||
; EditBoxHalfWidthsWithMargin := (EditBoxWidths / 2)
|
; EditBoxHalfWidthsWithMargin := (EditBoxWidths / 2)
|
||||||
DescriptionCharCountXPos := EditBoxHalfWidths - 40
|
DescriptionCharCountXPos := EditBoxHalfWidths - 40
|
||||||
@@ -35,22 +37,27 @@ DescriptionCharCountXPos := EditBoxHalfWidths - 40
|
|||||||
PageTwoXStartPos := EditBoxWidths + 50
|
PageTwoXStartPos := EditBoxWidths + 50
|
||||||
|
|
||||||
CopyButtonWidths := 150
|
CopyButtonWidths := 150
|
||||||
ResultEditBoxXPos := CopyButtonWidths + MarginSpace + 5
|
ResultEditBoxXPos := CopyButtonWidths + MarginSize + 5
|
||||||
ResultEditBoxWidths := EditBoxWidths - CopyButtonWidths
|
ResultEditBoxWidth := EditBoxWidths - ( CopyButtonWidths)
|
||||||
|
|
||||||
ResultEditBoxHalfWidths := (ResultEditBoxWidths / 2) - (MarginSpace /2)
|
ResultsEditAndCopyButtonWidth := CopyButtonWidths + ResultEditBoxWidth + MarginSize
|
||||||
ResultLBRYURLEditBoxWidthPieces := (ResultEditBoxWidths / 4)
|
ResultsGUIWidth := ResultsEditAndCopyButtonWidth + ErrorLogEditBoxWidth + MarginSize
|
||||||
|
|
||||||
|
|
||||||
|
ErrorLogEditBoxXPos := ResultEditBoxWidth + CopyButtonWidths + 30
|
||||||
|
ErrorLogEditBoxHeight := ButtonHeights * 14 + (MarginSize * 9)
|
||||||
|
ErrorLogEditBoxWidth := 330
|
||||||
|
|
||||||
|
|
||||||
|
ResultEditBoxHalfWidths := (((ResultEditBoxWidth + CopyButtonWidths)) - (MarginSize * 3))
|
||||||
|
ResultLBRYURLEditBoxWidthPieces := (ResultEditBoxWidth / 4)
|
||||||
ResultLBRYURLEditBoxWidths := ResultLBRYURLEditBoxWidthPieces * 3
|
ResultLBRYURLEditBoxWidths := ResultLBRYURLEditBoxWidthPieces * 3
|
||||||
|
|
||||||
ResultEditBoxThirdsWidths := (ResultEditBoxWidths / 3) - (MarginSpace /3)
|
ResultEditBoxThirdsWidths := (ResultEditBoxWidth / 3) - (MarginSize /3)
|
||||||
|
ResultsScreenOneThirdsWidth := (ResultEditBoxWidth + CopyButtonWidths + ErrorLogEditBoxWidth) / 3
|
||||||
|
|
||||||
ResultLBRYThumbEditBoxWidth := ResultLBRYURLEditBoxWidthPieces - 5
|
ResultLBRYThumbEditBoxWidth := ResultLBRYURLEditBoxWidthPieces - 5
|
||||||
|
|
||||||
ErrorLogEditBoxXPos := ResultEditBoxWidths + CopyButtonWidths + 30
|
|
||||||
ErrorLogEditBoxHeight := GuiHeight - (MarginSpace * 20) - (ButtonHeights * 2)
|
|
||||||
ErrorLogEditBoxWidth := GuiWidth - ErrorLogEditBoxXPos - (MarginSpace * 12)
|
|
||||||
|
|
||||||
|
|
||||||
ButtonWidths := 150
|
ButtonWidths := 150
|
||||||
ButtonXPos := GuiWidth - ButtonWidths - 15
|
ButtonXPos := GuiWidth - ButtonWidths - 15
|
||||||
@@ -67,11 +74,11 @@ PageTwoGroupBoxWidth := ThumbnailPreviewWidth + 20
|
|||||||
VideoDescriptionEditBoxHeight = 100
|
VideoDescriptionEditBoxHeight = 100
|
||||||
CheckboxesStartYPos := 630
|
CheckboxesStartYPos := 630
|
||||||
|
|
||||||
FilePathEditBoxWidths := EditBoxWidths - MarginSpace - 70
|
FilePathEditBoxWidths := EditBoxWidths - MarginSize - 70
|
||||||
SelectFileButtonWidths := 30
|
SelectFileButtonWidths := 30
|
||||||
|
|
||||||
ButtonStartYPos := CheckboxesStartYPos + 10
|
ButtonStartYPos := CheckboxesStartYPos + 10
|
||||||
MarginSquared := MarginSpace * 2
|
MarginSquared := MarginSize * 2
|
||||||
|
|
||||||
if(DevMode){
|
if(DevMode){
|
||||||
MainButtonHeight := 30
|
MainButtonHeight := 30
|
||||||
@@ -84,14 +91,18 @@ else, {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Return
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
; -------------------------------GUI-------------------------------
|
; -------------------------------GUI-------------------------------
|
||||||
|
SetAndShowMainGUI:
|
||||||
|
Gosub, SetGUIVariables
|
||||||
|
|
||||||
Gui, Font, s%GuiFontSize%
|
Gui, Font, s%GuiFontSize%
|
||||||
Gui, Margin, %MarginSpace%, %MarginSpace%
|
Gui, Margin, %MarginSize%, %MarginSize%
|
||||||
|
|
||||||
; Video Title
|
; Video Title
|
||||||
Gui, Font, Bold
|
Gui, Font, Bold
|
||||||
@@ -101,35 +112,35 @@ Gui, Add, Text, x%PodcastNumberTextXPos% yp+0,Podcast #
|
|||||||
|
|
||||||
|
|
||||||
Gui, Font, Normal
|
Gui, Font, Normal
|
||||||
Gui, Add, Edit, y+5 x%MarginSpace% w%EditBoxHalfWidths% h%EditBoxHeight% gUpdateVars vVideoTitle, %VideoTitle%
|
Gui, Add, Edit, y+5 x%MarginSize% w%EditBoxHalfWidths% h%EditBoxHeight% gUpdateVars vVideoTitle, %VideoTitle%
|
||||||
Gui, Add, Edit, yp+0 x+%Marginspace% w%OdyseeURLSlugEditWidth% h%EditBoxHeight% gUpdateVars vLBRYURLSlug, %LBRYURLSlug%
|
Gui, Add, Edit, yp+0 x+%MarginSize% w%OdyseeURLSlugEditWidth% h%EditBoxHeight% gUpdateVars vLBRYURLSlug, %LBRYURLSlug%
|
||||||
Gui, Add, Edit, yp+0 x+%Marginspace% w%PodcastNumberEditWidth% h%EditBoxHeight% gUpdateVars vPodcastNumber, %PodcastNumber%
|
Gui, Add, Edit, yp+0 x+%MarginSize% w%PodcastNumberEditWidth% h%EditBoxHeight% gUpdateVars vPodcastNumber, %PodcastNumber%
|
||||||
|
|
||||||
; LBRY URL
|
; LBRY URL
|
||||||
Gui, Font, Bold
|
Gui, Font, Bold
|
||||||
Gui, Add, Text, x%Marginspace%,Video Tags (Comma Seperated)
|
Gui, Add, Text, x%MarginSize%,Video Tags (Comma Seperated)
|
||||||
Gui, Add, Text,x%ColumnOneHalfWidthXPos% yp+0,Podcast Tags (Comma Seperated)
|
Gui, Add, Text,x%ColumnOneHalfWidthXPos% yp+0,Podcast Tags (Comma Seperated)
|
||||||
|
|
||||||
Gui, Font, Normal
|
Gui, Font, Normal
|
||||||
Gui, Add, Edit, x%Marginspace% Y+5 w%EditBoxHalfWidths% h%EditBoxHeight% gUpdateVars vVideoTags, %VideoTags%
|
Gui, Add, Edit, x%MarginSize% Y+5 w%EditBoxHalfWidths% h%EditBoxHeight% gUpdateVars vVideoTags, %VideoTags%
|
||||||
Gui, Add, Edit, yp+0 x+%Marginspace% w%EditBoxHalfWidths% h%EditBoxHeight% gUpdateVars vPodcastTags, %PodcastTags%
|
Gui, Add, Edit, yp+0 x+%MarginSize% w%EditBoxHalfWidths% h%EditBoxHeight% gUpdateVars vPodcastTags, %PodcastTags%
|
||||||
|
|
||||||
; Description/Summary Headers
|
; Description/Summary Headers
|
||||||
Gui, Font, Bold
|
Gui, Font, Bold
|
||||||
Gui, Add, Text,y+%Marginspace% x%Marginspace%,Description
|
Gui, Add, Text,y+%MarginSize% x%MarginSize%,Description
|
||||||
Gui, Add, Text,yp+0 x%ColumnOneHalfWidthXPos%,Summary
|
Gui, Add, Text,yp+0 x%ColumnOneHalfWidthXPos%,Summary
|
||||||
|
|
||||||
Gui, Font, Normal
|
Gui, Font, Normal
|
||||||
; Video Description edit box
|
; Video Description edit box
|
||||||
Gui, Add, Edit,x%Marginspace% y+5 w%EditBoxHalfWidths% h%VideoDescriptionEditBoxHeight% vVideoDescription gSubmitDescription,%VideoDescription%
|
Gui, Add, Edit,x%MarginSize% y+5 w%EditBoxHalfWidths% h%VideoDescriptionEditBoxHeight% vVideoDescription gSubmitDescription,%VideoDescription%
|
||||||
; Video Summary Edit Box
|
; Video Summary Edit Box
|
||||||
Gui, Add, Edit,x%ColumnOneHalfWidthXPos% yp+0 w%EditBoxHalfWidths% h%VideoDescriptionEditBoxHeight% vVideoSummary gUpdateVars,%VideoSummary%
|
Gui, Add, Edit,x%ColumnOneHalfWidthXPos% yp+0 w%EditBoxHalfWidths% h%VideoDescriptionEditBoxHeight% vVideoSummary gUpdateVars,%VideoSummary%
|
||||||
|
|
||||||
|
|
||||||
Gui, Font, Normal
|
Gui, Font, Normal
|
||||||
gui, font, s8
|
gui, font, s8
|
||||||
Gui, Add, Edit, x%Marginspace% y+5 vDescriptionCharCount, %DescriptionCharCount%
|
Gui, Add, Edit, x%MarginSize% y+5 vDescriptionCharCount, %DescriptionCharCount%
|
||||||
Gui, Add,Text, yp+4 x+%MarginSpace%,Limits: DM+Bitchute = 3K, Odysee, Brighteon = 5K
|
Gui, Add,Text, yp+4 x+%MarginSize%,Limits: DM+Bitchute = 3K, Odysee, Brighteon = 5K
|
||||||
; Gui, font, Bold
|
; Gui, font, Bold
|
||||||
|
|
||||||
Gui, Font, s%GuiFontSize%
|
Gui, Font, s%GuiFontSize%
|
||||||
@@ -137,14 +148,14 @@ Gui, font, Bold
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
Gui, Add, GroupBox,r8.5 x%MarginSpace% y+10 w%EditBoxWidths% Center, Filepaths
|
Gui, Add, GroupBox,r8.5 x%MarginSize% y+10 w%EditBoxWidths% Center, Filepaths
|
||||||
|
|
||||||
; Video Filepath
|
; Video Filepath
|
||||||
Gui, Font, Bold
|
Gui, Font, Bold
|
||||||
Gui, Add, Text,xp+5 yp+15,Video Filepath
|
Gui, Add, Text,xp+5 yp+15,Video Filepath
|
||||||
Gui, Font, Normal
|
Gui, Font, Normal
|
||||||
Gui, Add, Edit, x%MarginSquared% y+2 w%FilePathEditBoxWidths% h%EditBoxHeight% gUpdateVars vVideoFilepath,%VideoFilepath%
|
Gui, Add, Edit, x%MarginSquared% y+2 w%FilePathEditBoxWidths% h%EditBoxHeight% gUpdateVars vVideoFilepath,%VideoFilepath%
|
||||||
Gui, Add, Button, x+5 yp+0 h%EditBoxHeight% gSelectVideoFilepath, Select
|
Gui, Add, Button, x+%MarginSize% yp+0 h%EditBoxHeight% gSelectVideoFilepath, Select
|
||||||
|
|
||||||
; Video Thumbnail Filepath
|
; Video Thumbnail Filepath
|
||||||
Gui, Font, Bold
|
Gui, Font, Bold
|
||||||
@@ -154,7 +165,7 @@ else,
|
|||||||
Gui, Add, Text,y+15 x%MarginSquared% ,Video Thumbnail Filepath
|
Gui, Add, Text,y+15 x%MarginSquared% ,Video Thumbnail Filepath
|
||||||
Gui, Font, Normal
|
Gui, Font, Normal
|
||||||
Gui, Add, Edit, x%MarginSquared% y+2 w%FilePathEditBoxWidths% h%EditBoxHeight% gUpdateVars vVideoThumbFilepath,%VideoThumbFilepath%
|
Gui, Add, Edit, x%MarginSquared% y+2 w%FilePathEditBoxWidths% h%EditBoxHeight% gUpdateVars vVideoThumbFilepath,%VideoThumbFilepath%
|
||||||
Gui, Add, Button, x+5 yp+0 h%EditBoxHeight% gSelectVideoThumbFilepath, Select
|
Gui, Add, Button, x+%MarginSize% yp+0 h%EditBoxHeight% gSelectVideoThumbFilepath, Select
|
||||||
; WAV Audio File Filepath
|
; WAV Audio File Filepath
|
||||||
Gui, Font, Bold
|
Gui, Font, Bold
|
||||||
if(WavAudioFilepath = "")
|
if(WavAudioFilepath = "")
|
||||||
@@ -167,7 +178,7 @@ else, { ; change text depending on if WAV or FLAC file
|
|||||||
}
|
}
|
||||||
Gui, Font, Normal
|
Gui, Font, Normal
|
||||||
Gui, Add, Edit, x%MarginSquared% y+2 w%FilePathEditBoxWidths% h%EditBoxHeight% gUpdateVars vWavAudioFilepath,%WavAudioFilepath%
|
Gui, Add, Edit, x%MarginSquared% y+2 w%FilePathEditBoxWidths% h%EditBoxHeight% gUpdateVars vWavAudioFilepath,%WavAudioFilepath%
|
||||||
Gui, Add, Button, x+5 yp+0 h%EditBoxHeight% gSelectWAVFilepath, Select
|
Gui, Add, Button, x+%MarginSize% yp+0 h%EditBoxHeight% gSelectWAVFilepath, Select
|
||||||
|
|
||||||
Gui, Font, Bold
|
Gui, Font, Bold
|
||||||
if(MP3AudioFilepath = "")
|
if(MP3AudioFilepath = "")
|
||||||
@@ -176,135 +187,114 @@ else,
|
|||||||
Gui, Add, Text,x%MarginSquared% y+15,Podcast MP3 Filepath
|
Gui, Add, Text,x%MarginSquared% y+15,Podcast MP3 Filepath
|
||||||
Gui, Font, Normal
|
Gui, Font, Normal
|
||||||
Gui, Add, Edit, x%MarginSquared% y+2 w%FilePathEditBoxWidths% h%EditBoxHeight% gUpdateVars vMP3AudioFilepath,%MP3AudioFilepath%
|
Gui, Add, Edit, x%MarginSquared% y+2 w%FilePathEditBoxWidths% h%EditBoxHeight% gUpdateVars vMP3AudioFilepath,%MP3AudioFilepath%
|
||||||
Gui, Add, Button, x+5 yp+0 h%EditBoxHeight% gSelectMP3Filepath, Select
|
Gui, Add, Button, x+%MarginSize% yp+0 h%EditBoxHeight% gSelectMP3Filepath, Select
|
||||||
|
|
||||||
|
|
||||||
; Submit Button
|
; Submit Button
|
||||||
Gui, Font, s%GuiFontSize%
|
Gui, Font, s%GuiFontSize%
|
||||||
gui, Font, Bold
|
gui, Font, Bold
|
||||||
|
|
||||||
; if(DevMode)
|
Gui, Add, Button, w%EditBoxFourthWidths% x%MarginSize% vUpdateAvailable h%SecondaryButtonHeights% gUpdateScript,FVU Up-to-Date
|
||||||
; Gui, Add, Button, x%MarginSpace% w%EditBoxHalfWidths% y+25 h%MainButtonHeight% gCancelPost hwndIcon, Close
|
|
||||||
; else,
|
|
||||||
|
|
||||||
|
Gui, Add, Button, x+%MarginSize% w%EditBoxFourthWidths% h%SecondaryButtonHeights% gOpenProjectFolder, Open Folder
|
||||||
|
|
||||||
; Script Update Button
|
Gui, Add, Button, x+%MarginSize% w%EditBoxHalfWidths% h%SecondaryButtonHeights% gScheduleUpload, Schedule for Later
|
||||||
if(UpdateAvailable){
|
|
||||||
Gui, Add, Button, w%EditBoxHalfWidths% x%MarginSpace% gUpdateScript vUpdateAvailable h%SecondaryButtonHeights% center,Uploader Update Available!
|
|
||||||
; GuiButtonIcon(Icon, "shell32.dll", 278, "s20 a1 r2")
|
|
||||||
}
|
|
||||||
else, {
|
|
||||||
Gui, Add, Button, w%EditBoxHalfWidths% x%MarginSpace% gUpdateScript vUpdateAvailable h%SecondaryButtonHeights% center,Uploader Up-to-Date
|
|
||||||
; Gui, Add, Button, w%EditBoxHalfWidths% x+%Marginspace% vUpdateAvailable hwndIcon, Script is Up-to-Date
|
|
||||||
; GuiButtonIcon(Icon, "shell32.dll", 239, "s20 a1 r2")
|
|
||||||
|
|
||||||
}
|
Gui, Add, Button, w%EditBoxFourthWidths% h%SecondaryButtonHeights% x%MarginSize% y+%MarginSize% vChromeUpdateAvailable gUpdateChrome, Chrome Up-to-Date
|
||||||
; Gui, Font, s20
|
|
||||||
; Gui, Font, Bold
|
|
||||||
Gui, Add, Button, x+%MarginSpace% w%EditBoxHalfWidths% h%SecondaryButtonHeights% gStartScript, UPLOAD
|
|
||||||
|
|
||||||
|
Gui, Add, Button, x+%MarginSize% yp+0 w%EditBoxFourthWidths% h%SecondaryButtonHeights% gDisplayResults, View Status
|
||||||
|
Gui, Add, Button, x+%MarginSize% w%EditBoxHalfWidths% h%SecondaryButtonHeights% gStartScript, UPLOAD
|
||||||
|
|
||||||
Gui, Font, s%GuiFontSize%
|
Gui, Add, Button, w%EditBoxFourthWidths% h%SecondaryButtonHeights% x%MarginSize% y+%MarginSize% vPostSchedulerUpdateAvailable gUpdatePostScheduler, Post Scheduler Up-To-Date
|
||||||
|
; Gui, Add, Button, w%EditBoxFourthWidths% h%SecondaryButtonHeights% x%MarginSize% y+%MarginSize% vPostSchedulerUpdateAvailable, Post Scheduler Up-To-Date
|
||||||
|
|
||||||
; Chrome Update Button
|
Gui, Add, Button, x+%MarginSize% w%EditBoxFourthWidths% h%SecondaryButtonHeights%
|
||||||
if(ChromeUpdateAvailable){
|
Gui, Add, Button, x+%MarginSize% w%EditBoxHalfWidths% h%SecondaryButtonHeights% gReloadScript, Open New Project
|
||||||
Gui, Add, Button, x%MarginSpace% w%EditBoxHalfWidths% y+%Marginspace% h%SecondaryButtonHeights% vChromeUpdateAvailable gUpdateChrome center,Chrome Update Available!
|
|
||||||
}
|
|
||||||
else, {
|
|
||||||
Gui, Add, Button, x%MarginSpace% w%EditBoxHalfWidths% y+%Marginspace% h%SecondaryButtonHeights% vChromeUpdateAvailable gUpdateChrome center,Chrome Up-to-Date
|
|
||||||
|
|
||||||
}
|
|
||||||
; Gui, Add, Button, x%MarginSpace% w%EditBoxHalfWidths% y+25 h%MainButtonHeight% gCancelPost hwndIcon, Exit
|
|
||||||
; GuiButtonIcon(Icon, "imageres.dll",208, "s20 a1 r2")
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if(DevMode)
|
|
||||||
Gui, Add, Button, x+%MarginSpace% yp+0 w%EditBoxFourthWidths% h%SecondaryButtonHeights% gDisplayResults, View Results
|
|
||||||
else,
|
|
||||||
Gui, Add, Button, x+%MarginSpace% yp+0 w%EditBoxFourthWidths% h%SecondaryButtonHeights% gDisplayResults, View Results
|
|
||||||
|
|
||||||
Gui, Add, Button, w%EditBoxFourthWidths% x+%Marginspace% h%SecondaryButtonHeights% gOpenProjectFolder, Open Project Folder
|
|
||||||
|
|
||||||
|
|
||||||
if(DevMode){
|
if(DevMode){
|
||||||
Gui, Add, Button, x%MarginSpace% w%EditBoxFourthWidths% h30 y+5 h%SecondaryButtonHeights% gOpenErrorLog, Open ErrorLog
|
Gui, Add, Button, x%MarginSize% w%EditBoxFourthWidths% h30 y+5 h%SecondaryButtonHeights% gOpenErrorLog, Open ErrorLog
|
||||||
Gui, Add, Button, x+%MarginSpace% w%EditBoxFourthWidths% h30 h%SecondaryButtonHeights% gClearVideoLinks, Clear VideoLinks
|
Gui, Add, Button, x+%MarginSize% w%EditBoxFourthWidths% h30 h%SecondaryButtonHeights% gClearVideoLinks, Clear VideoLinks
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
; -------------------------------Page 2 Side of Main GUI Window-------------------------------
|
; -------------------------------Page 2 Side of Main GUI Window-------------------------------
|
||||||
LineSplitXPosition := PageTwoXStartPos - ( MarginSpace * 2)
|
LineSplitXPosition := PageTwoXStartPos - ( MarginSize * 2)
|
||||||
gui, add, text, x%LineSplitXPosition% y20 h500 0x11 ; 0x11 is a "line" ; refer to here: https://autohotkey.com/board/topic/50910-draw-line-gui/
|
gui, add, text, x%LineSplitXPosition% y20 h600 0x11 ; 0x11 is a "line"
|
||||||
; Thumbnail Preview
|
|
||||||
Gui, Font, Normal
|
|
||||||
gui, Font, s4
|
|
||||||
; Miscellaneous Settings
|
; Miscellaneous Settings
|
||||||
|
; DevMode Buttons
|
||||||
|
gui, Font, s4
|
||||||
|
Gui, Font, Normal
|
||||||
DevModToggleButton := PageTwoXStartPos + 160
|
DevModToggleButton := PageTwoXStartPos + 160
|
||||||
Gui, Add, Button, x%DevModToggleButton% y5 w50 h10 gToggleDevMode,DevMode
|
Gui, Add, Button, x%DevModToggleButton% y5 w50 h10 gToggleDevMode,DevMode
|
||||||
Gui, Add, Button, x+5 y5 w50 h10 gToggleTestingMode, Testing Mode
|
Gui, Add, Button, x+%MarginSize% y5 w50 h10 gToggleTestingMode, Testing Mode
|
||||||
Gui, Add, Button, x+5 y5 w50 h10 gOpenGiteaPage, Gitea
|
Gui, Add, Button, x+%MarginSize% y5 w50 h10 gOpenGiteaPage, Gitea
|
||||||
|
|
||||||
Gui, Font, s%GuiFontSize%
|
Gui, Font, s%GuiFontSize%
|
||||||
Gui, Font, Bold
|
Gui, Font, Normal
|
||||||
|
|
||||||
; Settings Section
|
; Settings Section
|
||||||
Gui, Add, GroupBox,r5 y+0 x%PageTwoXStartPos% w%PageTwoGroupBoxWidth%,Settings
|
Gui, Add, GroupBox,r6 y+0 x%PageTwoXStartPos% w%PageTwoGroupBoxWidth%,Settings
|
||||||
Gui, Add, Checkbox, xp+10 yp+20 vAutoUpdateCheck gUpdateVars Checked%AutoUpdateCheckCheckStatus%, Auto Update Check
|
Gui, Add, Checkbox, xp+10 yp+20 vAutoUpdateCheck gUpdateVars Checked%AutoUpdateCheck%, Auto Update Check
|
||||||
Gui, Add, Checkbox, vShowTooltipProgress Checked%ShowTooltipProgressCheckStatus% gUpdateVars,Show Tooltip of Actions
|
Gui, Add, Checkbox, vShowTooltipProgress Checked%ShowTooltipProgress% gUpdateVars,Show Tooltip of Actions
|
||||||
Gui, Add, Checkbox, vKillLBRYAfterUpload Checked%KillLBRYAfterUploadCheckStatus%, Kill LBRY After Uploading
|
Gui, Add, Checkbox, vKillLBRYAfterUpload Checked%KillLBRYAfterUpload%, Kill LBRY After Uploading
|
||||||
Gui, Add, Checkbox, vAutoLogin gUpdateVars Checked%AutoLoginCheckStatus%, Try to Login Automatically
|
Gui, Add, Checkbox, vErrorLogToDiscord gUpdateVars Checked%ErrorLogToDiscord%, Error Log to Discord
|
||||||
Gui, Add, Checkbox, vPingOnCompletion gUpdateVars Checked%PingOnCompletionCheckStatus%, Discord Ping Upon Completion
|
Gui, Add, Checkbox, vDiscordPingOnCompletion gUpdateVars Checked%DiscordPingOnCompletion%, Discord Ping Upon Completion
|
||||||
|
Gui, Add, Checkbox, vConfirmBeforeSubmit checked%ConfirmBeforeSubmit%, Confirm Before Submit
|
||||||
|
|
||||||
|
|
||||||
GroupBoxCheckboxPos := PageTwoXStartPos + MarginSpace
|
GroupBoxCheckboxPos := PageTwoXStartPos + MarginSize
|
||||||
|
|
||||||
; -------------------------------PLATFORMS-------------------------------
|
; -------------------------------PLATFORMS-------------------------------
|
||||||
Gui, Add, GroupBox,r6 y+%MarginSpaceTripled% x%PageTwoXStartPos% w%PageTwoGroupBoxWidth%, Platforms
|
Gui, Font, s%GuiFontSize%
|
||||||
|
Gui, Font, Bold
|
||||||
|
Gui, Add, GroupBox,r6 y+%MarginSizeTripled% x%PageTwoXStartPos% w%PageTwoGroupBoxWidth%, Platforms
|
||||||
|
|
||||||
; Msgbox % "LocalsURL: " LocalsURL
|
Gui, Font, s8
|
||||||
; if(VideoFileSizeInMB < 1792)
|
Gui, Font, Bold
|
||||||
; Gui, Add, Checkbox, x+%MarginSpaceDoubled% vFacebook Checked%FacebookCheckStatus%, Facebook
|
Gui, Add, Button, xp+80 yp+0 gUncheckAllPlatforms, Uncheck All
|
||||||
|
|
||||||
Gui, Add, Checkbox, xp+10 yp+25 vBitChute Checked%BitChuteCheckStatus% gUpdateVars, BitChute
|
|
||||||
|
|
||||||
|
Gui, Font, s%GuiFontSize%
|
||||||
|
Gui, Font, Normal
|
||||||
|
Gui, Add, Checkbox, x%GroupBoxCheckboxPos% yp+30 vBitChute Checked%BitChute% gUpdateVars, BitChute
|
||||||
|
|
||||||
if(LocalsURL = "LocalsUploadStartedNeedToGrabURL"){
|
if(LocalsURL = "LocalsUploadStartedNeedToGrabURL"){
|
||||||
; msgbox, checking grab url
|
; msgbox, checking grab url
|
||||||
Gui, Add, Checkbox, x+%MarginSpaceTripled% yp+0 vLocalsGrabURL Checked%LocalsCheckStatus% gUpdateVars, Locals (Grab URL)
|
Gui, Add, Checkbox, x+%MarginSizeTripled% yp+0 vLocalsGrabURL Checked%Locals% gUpdateVars, Locals (Grab URL)
|
||||||
LocalsGrabURL := 1
|
LocalsGrabURL := 1
|
||||||
Locals := 0
|
Locals := 0
|
||||||
}
|
}
|
||||||
else, {
|
else, {
|
||||||
; msgbox, checking locals
|
; msgbox, checking locals
|
||||||
Gui, Add, Checkbox, x+%MarginSpaceTripled% yp+0 vLocals Checked%LocalsCheckStatus% gUpdateVars, Locals
|
Gui, Add, Checkbox, x+%MarginSizeTripled% yp+0 vLocals Checked%Locals% gUpdateVars, Locals
|
||||||
LocalsGrabURL := 0
|
LocalsGrabURL := 0
|
||||||
Locals := 1
|
Locals := 1
|
||||||
}
|
}
|
||||||
|
|
||||||
Gui, Add, Checkbox, x%GroupBoxCheckboxPos% y+%MarginSpace% vOdyseeVideo Checked%OdyseeVideoCheckStatus% gUpdateVars, Odysee Video
|
Gui, Add, Checkbox, x%GroupBoxCheckboxPos% y+%MarginSize% vOdyseeVideo Checked%OdyseeVideo% gUpdateVars, Odysee Video
|
||||||
|
Gui, Add, Checkbox, x%GroupBoxCheckboxPos% y+%MarginSize% vOdyseeAudio Checked%OdyseeAudio% gUpdateVars, Odysee Audio
|
||||||
|
|
||||||
|
Gui, Add, Checkbox, x%GroupBoxCheckboxPos% y+%MarginSize% vRumble Checked%Rumble% gUpdateVars, Rumble
|
||||||
|
|
||||||
; Gui, Add, Checkbox, x+%MarginSpace% vOdyseeVideoThumb Checked%OdyseeVideoThumbCheckStatus%,Thumbnail
|
; Brighteon Does not accept videos lower than 300kbps or that don't have the appropriate aspect ratio
|
||||||
Gui, Add, Checkbox, x%GroupBoxCheckboxPos% y+%MarginSpace% vOdyseeAudio Checked%OdyseeAudioCheckStatus% gUpdateVars, Odysee Audio
|
if(VideoTotalBitrate < 300000 OR !VideoHasBrighteonCompatibleAspectRatio){
|
||||||
; Gui, Add, Checkbox, x+%MarginSpace% vOdyseeAudioThumb Checked%OdyseeAudioThumbCheckStatus%, Thumbnail
|
if(!VideoHasBrighteonCompatibleAspectRatio)
|
||||||
|
Gui, Add, Checkbox, cRed vBrighteon y+%MarginSize% Checked0 gUpdateVars, Brighteon (Aspect Ratio is %VideoAspectRatio%)
|
||||||
Gui, Add, Checkbox, x%GroupBoxCheckboxPos% y+%MarginSpace% vRumble Checked%RumbleCheckStatus% gUpdateVars, Rumble
|
else,
|
||||||
|
Gui, Add, Checkbox, cRed vBrighteon y+%MarginSize% Checked0 gUpdateVars, Brighteon (Bitrate Below 300kbps)
|
||||||
if(VideoTotalBitrate > 300000)
|
}
|
||||||
Gui, Add, Checkbox, vBrighteon y+%MarginSpace% Checked%BrighteonCheckStatus% gUpdateVars, Brighteon
|
|
||||||
else,{
|
else,{
|
||||||
Gui, Add, Checkbox, cRed vBrighteon y+%MarginSpace% Checked0 gUpdateVars, Brighteon (Bitrate Below 300kbps)
|
Gui, Add, Checkbox, vBrighteon y+%MarginSize% Checked%Brighteon% gUpdateVars, Brighteon
|
||||||
}
|
}
|
||||||
|
|
||||||
Gui, Add, Checkbox, vDailyMotion y+%MarginSpace% Checked%DailyMotionCheckStatus% gUpdateVars, DailyMotion
|
Gui, Add, Checkbox, vDailyMotion y+%MarginSize% Checked%DailyMotion% gUpdateVars, DailyMotion
|
||||||
; Gui, Add, Checkbox, vStreamanity Checked%StreamanityCheckStatus%, Streamanity
|
|
||||||
|
|
||||||
; Gui, Font, s12
|
Gui, Font, s%GuiFontSize%
|
||||||
gui, Font, Bold
|
Gui, Font, Bold
|
||||||
Gui, Add, GroupBox, r6.5 y+%MarginSpaceTripled% vImageThumbnail x%PageTwoXStartPos% w%PageTwoGroupBoxWidth%,Thumbnail
|
Gui, Add, GroupBox, r6.5 y+%MarginSizeTripled% vImageThumbnail x%PageTwoXStartPos% w%PageTwoGroupBoxWidth%,Thumbnail
|
||||||
gui, Font, Normal
|
gui, Font, Normal
|
||||||
Gui, Add, Picture, xp+10 yp+20 w%ThumbnailPreviewWidth% h-1, %VideoThumbFilepath%
|
Gui, Add, Picture, xp+10 yp+20 w%ThumbnailPreviewWidth% h-1, %VideoThumbFilepath%
|
||||||
|
|
||||||
@@ -325,4 +315,170 @@ Gui, Show,, %FullScriptName% - Upload Settings - %BodyTextFilePath%
|
|||||||
ControlFocus, Edit4, %FullScriptName%
|
ControlFocus, Edit4, %FullScriptName%
|
||||||
ToolTip
|
ToolTip
|
||||||
|
|
||||||
|
; calculate run time and convert to seconds
|
||||||
|
URunTime1 := round(((A_TickCount - UStartTime) / 1000), 2)
|
||||||
|
|
||||||
|
|
||||||
|
; - Check for Updates
|
||||||
|
;------------------------------------------------
|
||||||
|
if(AutoUpdateCheck AND !UpdateAvailable){
|
||||||
|
SetTimer, CheckForUpdates, -1000
|
||||||
|
}
|
||||||
|
|
||||||
|
; calculate run time and convert to seconds
|
||||||
|
URunTime2 := round(((A_TickCount - UStartTime) / 1000), 2)
|
||||||
|
|
||||||
|
Return
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; Scheduler GUI
|
||||||
|
; ------------------------------------------------
|
||||||
|
ScheduleUpload:
|
||||||
|
gui, Submit, NoHide ; submit the main GUI so all the variables get updated
|
||||||
|
|
||||||
|
; Create GUI for Scheduler
|
||||||
|
Gui, ScheduleGUI:New
|
||||||
|
Gui, Font, s15
|
||||||
|
Gui, Font, Bold
|
||||||
|
Gui, Add, Text,, Date:
|
||||||
|
Gui, Add, DateTime,w%EditBoxHalfWidths% vScheduledDate , MM/dd/yyyy
|
||||||
|
Gui, Add, Text,, Time:
|
||||||
|
Gui, Add, DateTime, w%EditBoxHalfWidths% vScheduledTime Choose200505311900, Time
|
||||||
|
Gui, Add, Button,w%EditBoxHalfWidths% gSubmitScheduler, Schedule
|
||||||
|
Gui, Show,, Scheduler
|
||||||
|
|
||||||
|
Return
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; Results GUI Screen
|
||||||
|
; ------------------------------------------------
|
||||||
|
SetAndShowResultsGUI:
|
||||||
|
; Set the GUI Variables, needed if called from Scheduler
|
||||||
|
Gosub, SetGUIVariables
|
||||||
|
|
||||||
|
Gui, Font, s%GuiFontSize%
|
||||||
|
Gui, Font, Bold
|
||||||
|
Gui, Add, Button, x%MarginSize% y+%MarginSize% h%ButtonHeights% w%CopyButtonWidths% gCopyToClipboard,Transcript URL
|
||||||
|
Gui, Font, Normal
|
||||||
|
Gui, Add, Edit, x+%MarginSize% yp+0 h%ButtonHeights% w%ResultEditBoxWidth% gUpdateVars vPodcastTranscriptURL, %PodcastTranscriptURL%
|
||||||
|
|
||||||
|
Gui, Font, Bold
|
||||||
|
Gui, Add, Button, x%MarginSize% y+%MarginSize% h%ButtonHeights% w%CopyButtonWidths% gCopyToClipboard, Bitchute
|
||||||
|
Gui, Font, Normal
|
||||||
|
Gui, Add, Edit, x+%MarginSize% yp+0 h%ButtonHeights% vBitChuteURL w%ResultEditBoxWidth% gUpdateVars , %BitChuteURL%
|
||||||
|
|
||||||
|
Gui, Font, Bold
|
||||||
|
Gui, Add, Button, x%MarginSize% y+%MarginSize% h%ButtonHeights% w%CopyButtonWidths% gCopyToClipboard, Brighteon
|
||||||
|
Gui, Font, Normal
|
||||||
|
Gui, Add, Edit, x+%MarginSize% yp+0 h%ButtonHeights% vBrighteonURL w%ResultEditBoxWidth% gUpdateVars , %BrighteonURL%
|
||||||
|
|
||||||
|
Gui, Font, Bold
|
||||||
|
Gui, Add, Button, x%MarginSize% y+10 h%ButtonHeights% w%CopyButtonWidths% gCopyToClipboard, DailyMotion
|
||||||
|
Gui, Font, Normal
|
||||||
|
Gui, Add, Edit, x+%MarginSize% yp+0 h%ButtonHeights% vDailyMotionURL w%ResultEditBoxWidth% gUpdateVars , %DailyMotionURL%
|
||||||
|
|
||||||
|
Gui, Font, Bold
|
||||||
|
Gui, Add, Button, x%MarginSize% y+10 h%ButtonHeights% w%CopyButtonWidths% gCopyToClipboard, Odysee Video
|
||||||
|
Gui, Font, Normal
|
||||||
|
Gui, Add, Edit, x+%MarginSize% yp+0 h%ButtonHeights% vOdyseeVideoURL w%ResultEditBoxWidth% gUpdateVars, %OdyseeVideoURL%
|
||||||
|
|
||||||
|
Gui, Font, Bold
|
||||||
|
Gui, Add, Button, x%MarginSize% y+10 h%ButtonHeights% w%CopyButtonWidths% gCopyToClipboard, Odysee Audio
|
||||||
|
Gui, Font, Normal
|
||||||
|
Gui, Add, Edit, x+%MarginSize% yp+0 h%ButtonHeights% vOdyseeAudioURL w%ResultEditBoxWidth% gUpdateVars , %OdyseeAudioURL%
|
||||||
|
|
||||||
|
Gui, Font, Bold
|
||||||
|
Gui, Add, Button, x%MarginSize% y+10 h%ButtonHeights% w%CopyButtonWidths% gCopyToClipboard, Rumble
|
||||||
|
Gui, Font, Normal
|
||||||
|
Gui, Add, Edit, x+%MarginSize% yp+0 h%ButtonHeights% vRumbleURL w%ResultEditBoxWidth% gUpdateVars , %RumbleURL%
|
||||||
|
|
||||||
|
Gui, Font, Bold
|
||||||
|
Gui, Add, Button, x%MarginSize% y+10 h%ButtonHeights% w%CopyButtonWidths% gCopyToClipboard, Locals
|
||||||
|
Gui, Font, Normal
|
||||||
|
Gui, Add, Edit, x+%MarginSize% yp+0 h%ButtonHeights% vLocalsURL w%ResultEditBoxWidth% gUpdateVars, %LocalsURL%
|
||||||
|
|
||||||
|
Gui, Font, Bold
|
||||||
|
Gui, Add, Button, x%MarginSize% y+10 h%ButtonHeights% w%CopyButtonWidths% gCopyToClipboard, Unauthorized
|
||||||
|
Gui, Font, Normal
|
||||||
|
Gui, Add, Edit, x+%MarginSize% yp+0 h%ButtonHeights% vUnauthorizedTVURL w%ResultEditBoxWidth% gUpdateVars, %UnauthorizedTVURL%
|
||||||
|
|
||||||
|
Gui, Font, Bold
|
||||||
|
Gui, Add, Button, x%MarginSize% y+10 h%ButtonHeights% w%CopyButtonWidths% gCopyToClipboard, Video Tags
|
||||||
|
Gui, Font, Normal
|
||||||
|
Gui, Add, Edit, x+%MarginSize% yp+0 h%ButtonHeights% vVideoTags w%ResultEditBoxWidth% gUpdateVars , %VideoTags%
|
||||||
|
|
||||||
|
Gui, Font, Bold
|
||||||
|
Gui, Add, Button, x%MarginSize% y+10 h%ButtonHeights% w%CopyButtonWidths% gCopyToClipboard, Podcast Tags
|
||||||
|
Gui, Font, Normal
|
||||||
|
Gui, Add, Edit, x+%MarginSize% yp+0 h%ButtonHeights% vPodcasttags w%ResultEditBoxWidth% gUpdateVars , %Podcasttags%
|
||||||
|
|
||||||
|
Gui, Font, Bold
|
||||||
|
Gui, Add, Button, x%MarginSize% y+10 h%ButtonHeights% w%CopyButtonWidths% gCopyToClipboard, Description
|
||||||
|
Gui, Font, Normal
|
||||||
|
Gui, Add, Edit, x+%MarginSize% yp+0 h%ButtonHeights% vVideoDescription w%ResultEditBoxWidth% gUpdateVars , %VideoDescription%
|
||||||
|
|
||||||
|
Gui, Font, Bold
|
||||||
|
Gui, Add, Button, x%MarginSize% y+10 h%ButtonHeights% w%CopyButtonWidths% gCopyToClipboard, Summary
|
||||||
|
Gui, Font, Normal
|
||||||
|
|
||||||
|
Gui, Font, Normal
|
||||||
|
Gui, Add, Edit, x+%MarginSize% yp+0 h%ButtonHeights% vVideoSummary w%ResultEditBoxWidth% gUpdateVars , %VideoSummary%
|
||||||
|
|
||||||
|
Gui, Font, s%GuiFontSize%
|
||||||
|
Gui, Font, Bold
|
||||||
|
Gui, Add, Button, x%MarginSize% w%ResultsEditAndCopyButtonWidth% h%SecondaryButtonHeights% gUpdateINI, Save Modified Links to Files
|
||||||
|
|
||||||
|
|
||||||
|
; Error Log Column
|
||||||
|
; ------------------------------------------------
|
||||||
|
Gui, Font, s%GuiFontSize%
|
||||||
|
Gui, Add, Button, x+%MarginSize% y%MarginSize% w%ErrorLogEditBoxWidth% h%ButtonHeights% y%MarginSize% gOpenErrorLog, Error Log (Click to Open Detailed Log)
|
||||||
|
Gui, Add, Edit,x%ErrorLogEditBoxXPos% h%ErrorLogEditBoxHeight% w%ErrorLogEditBoxWidth% y+10, %ErrorLogVar%
|
||||||
|
|
||||||
|
gui, font, Normal
|
||||||
|
gui, font, s7
|
||||||
|
Gui, Add, StatusBar,, Total Videos Uploaded: %TotalVideosUploaded% | Total Clicks Saved: %MouseClicksSaved%
|
||||||
|
Gui, +Resize +MaximizeBox
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Gui, add, text, x%MarginSize% y+%MarginSize% w%ResultsGUIWidth% 0x10 ;Horizontal Line > Etched Gray
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; Results GUI Action Buttons
|
||||||
|
; ------------------------------------------------
|
||||||
|
Gui, Font, s%GuiFontSize%
|
||||||
|
Gui, Font, Bold
|
||||||
|
Gui, Add, Button, x%MarginSize% yp+%MarginSize% w%ResultsScreenOneThirdsWidth% h%SecondaryButtonHeights% gOpenLBRYBlobFilesFolder, Open LBRY Blob Folder
|
||||||
|
Gui, Add, Button, x+%MarginSize% w%ResultsScreenOneThirdsWidth% h%SecondaryButtonHeights% gUploadPodcast vUploadPodcast, Upload Podcast
|
||||||
|
Gui, Add, Button, x+%MarginSize% w%ResultsScreenOneThirdsWidth% h%SecondaryButtonHeights% gRetryUpload, Try Failed Again
|
||||||
|
|
||||||
|
|
||||||
|
Gui, Add, Button, x%MarginSize% y+%MarginSize% w%ResultsScreenOneThirdsWidth% h%SecondaryButtonHeights% gPostToDiscordAndTelegram vPostToDiscordTelegramButton, Post to Discord/Telegram
|
||||||
|
; Gui, Add, Button, x+%MarginSize% w%ResultsScreenOneThirdsWidth% h%SecondaryButtonHeights% gPostToTelegram vPostToTelegramButton, Post to Telegram
|
||||||
|
Gui, Add, Button, x+%MarginSize% w%ResultsScreenOneThirdsWidth% h%SecondaryButtonHeights% gStartSocialMediaPoster, Start Social Media Poster
|
||||||
|
|
||||||
|
; Row 3
|
||||||
|
; Gui, Add, Button, x%ResultEditBoxXPos% y+%MarginSize% w%ResultsScreenOneThirdsWidth% h%ButtonHeights%,
|
||||||
|
|
||||||
|
|
||||||
|
; Gui, Add, Button, x+%MarginSize% w%ResultEditBoxHalfWidths% w%ButtonWidths% h%ButtonHeights% gCancelPost , Close
|
||||||
|
; Gui, Add, Button, x+%MarginSize% w%ResultEditBoxHalfWidths% gKillScript %ButtonWidths% , Close
|
||||||
|
; gui, Add, Text, y+10
|
||||||
|
|
||||||
|
OriginalVideoDescription := VideoDescription
|
||||||
|
OriginalPodcastTags := PodcastTags
|
||||||
|
|
||||||
|
|
||||||
|
if(XPosition and YPosition)
|
||||||
|
Gui, Show,x%XPosition% y%YPosition%,%FullScriptName% - Uploads Status
|
||||||
|
else,
|
||||||
|
Gui, Show,,%FullScriptName% - Uploads Results
|
||||||
Return
|
Return
|
||||||
@@ -1,93 +0,0 @@
|
|||||||
|
|
||||||
Gui, Font, s%GuiFontSize%
|
|
||||||
Gui, Font, Bold
|
|
||||||
Gui, Add, Button, x10 y+%Marginspace% h%ButtonHeights% w%CopyButtonWidths% gCopyPodcastTranscriptURL,Transcript URL
|
|
||||||
Gui, Font, Normal
|
|
||||||
Gui, Add, Edit, x+5 yp+0 h%ButtonHeights% w%ResultEditBoxWidths% gUpdateVars vPodcastTranscriptURL, %PodcastTranscriptURL%
|
|
||||||
|
|
||||||
Gui, Font, Bold
|
|
||||||
Gui, Add, Button, x10 y+%Marginspace% h%ButtonHeights% w%CopyButtonWidths% gCopyBitChuteURL, Bitchute
|
|
||||||
Gui, Font, Normal
|
|
||||||
Gui, Add, Edit, x+5 yp+0 h%ButtonHeights% vBitChuteURL w%ResultEditBoxWidths% gUpdateVars , %BitChuteURL%
|
|
||||||
|
|
||||||
Gui, Font, Bold
|
|
||||||
Gui, Add, Button, x10 y+%Marginspace% h%ButtonHeights% w%CopyButtonWidths% gCopyBrighteonURL, Brighteon
|
|
||||||
Gui, Font, Normal
|
|
||||||
Gui, Add, Edit, x+5 yp+0 h%ButtonHeights% vBrighteonURL w%ResultEditBoxWidths% gUpdateVars , %BrighteonURL%
|
|
||||||
|
|
||||||
Gui, Font, Bold
|
|
||||||
Gui, Add, Button, x10 y+10 h%ButtonHeights% w%CopyButtonWidths% gCopyDailyMotionURL, DailyMotion
|
|
||||||
Gui, Font, Normal
|
|
||||||
Gui, Add, Edit, x+5 yp+0 h%ButtonHeights% vDailyMotionURL w%ResultEditBoxWidths% gUpdateVars , %DailyMotionURL%
|
|
||||||
|
|
||||||
Gui, Font, Bold
|
|
||||||
Gui, Add, Button, x10 y+10 h%ButtonHeights% w%CopyButtonWidths% gCopyOdyseeVideoURL, Odysee Video
|
|
||||||
Gui, Font, Normal
|
|
||||||
Gui, Add, Edit, x+5 yp+0 h%ButtonHeights% vOdyseeVideoURL w%ResultEditBoxWidths% gUpdateVars, %OdyseeVideoURL%
|
|
||||||
|
|
||||||
Gui, Font, Bold
|
|
||||||
Gui, Add, Button, x10 y+10 h%ButtonHeights% w%CopyButtonWidths% gCopyOdyseeAudioURL, Odysee Audio
|
|
||||||
Gui, Font, Normal
|
|
||||||
Gui, Add, Edit, x+5 yp+0 h%ButtonHeights% vOdyseeAudioURL w%ResultEditBoxWidths% gUpdateVars , %OdyseeAudioURL%
|
|
||||||
|
|
||||||
Gui, Font, Bold
|
|
||||||
Gui, Add, Button, x10 y+10 h%ButtonHeights% w%CopyButtonWidths% gCopyRumbleURL, Rumble
|
|
||||||
Gui, Font, Normal
|
|
||||||
Gui, Add, Edit, x+5 yp+0 h%ButtonHeights% vRumbleURL w%ResultEditBoxWidths% gUpdateVars , %RumbleURL%
|
|
||||||
|
|
||||||
Gui, Font, Bold
|
|
||||||
Gui, Add, Button, x10 y+10 h%ButtonHeights% w%CopyButtonWidths%, Locals
|
|
||||||
Gui, Font, Normal
|
|
||||||
Gui, Add, Edit, x+5 yp+0 h%ButtonHeights% vLocalsURL w%ResultEditBoxWidths% gUpdateVars, %LocalsURL%
|
|
||||||
|
|
||||||
Gui, Font, Bold
|
|
||||||
Gui, Add, Button, x10 y+10 h%ButtonHeights% w%CopyButtonWidths% gCopyVideoTags vVideoTagsEdit, Video Tags
|
|
||||||
Gui, Font, Normal
|
|
||||||
Gui, Add, Edit, x+5 yp+0 h%ButtonHeights% vVideoTags w%ResultEditBoxWidths% gUpdateVars , %VideoTags%
|
|
||||||
|
|
||||||
Gui, Font, Bold
|
|
||||||
Gui, Add, Button, x10 y+10 h%ButtonHeights% w%CopyButtonWidths% gCopyPodcastTags, Podcast Tags
|
|
||||||
Gui, Font, Normal
|
|
||||||
Gui, Add, Edit, x+5 yp+0 h%ButtonHeights% vPodcasttags w%ResultEditBoxWidths% gUpdateVars , %Podcasttags%
|
|
||||||
|
|
||||||
Gui, Font, Bold
|
|
||||||
Gui, Add, Button, x%Marginspace% y+10 h%ButtonHeights% w%CopyButtonWidths% gCopyVideoDescription, Description
|
|
||||||
Gui, Font, Normal
|
|
||||||
Gui, Add, Edit, x+5 yp+0 h50 vVideoDescription w%ResultEditBoxWidths% gUpdateVars , %VideoDescription%
|
|
||||||
|
|
||||||
Gui, Font, s%GuiFontSize%
|
|
||||||
Gui, Font, Bold
|
|
||||||
|
|
||||||
Gui, Add, Button, x%ResultEditBoxXPos% w%ResultEditBoxHalfWidths% gUpdateINI, Save Modified Links
|
|
||||||
Gui, Add, Button, x+%MarginSpace% w%ResultEditBoxHalfWidths% gUploadPodcast, Upload Podcast
|
|
||||||
|
|
||||||
Gui, Add, Button, x%ResultEditBoxXPos% y+%MarginSpace% w%ResultEditBoxThirdsWidths% gPostToDiscord vPostToDiscordButton, Post to Discord
|
|
||||||
Gui, Add, Button, x+5 w%ResultEditBoxThirdsWidths% gPostToTelegram vPostToTelegramButton, Post to Telegram
|
|
||||||
Gui, Add, Button, x+5 w%ResultEditBoxThirdsWidths% gStartSocialMediaPoster, Start Social Media Poster
|
|
||||||
|
|
||||||
Gui, Font, Bold
|
|
||||||
Gui, Add, Button, x%ResultEditBoxXPos% y+%MarginSpace% w%ResultEditBoxHalfWidths% gSendErrorLoggingThroughTelegram,
|
|
||||||
Gui, Add, Button, x+%MarginSpace% w%ResultEditBoxHalfWidths% gRetryUpload, Try Failed Again
|
|
||||||
|
|
||||||
Gui, Add, Button, x%ResultEditBoxXPos% w%ResultEditBoxHalfWidths% gOpenLBRYBlobFilesFolder %ButtonWidths% , Open LBRY Blob Files Folder
|
|
||||||
Gui, Add, Button, x+%MarginSpace% w%ResultEditBoxHalfWidths% gCancelPost %ButtonWidths% , Close
|
|
||||||
; Gui, Add, Button, x+%MarginSpace% w%ResultEditBoxHalfWidths% gKillScript %ButtonWidths% , Close
|
|
||||||
; gui, Add, Text, y+10
|
|
||||||
|
|
||||||
Gui, Font, s%GuiFontSize%
|
|
||||||
Gui, Add, Button, x%ErrorLogEditBoxXPos% w%ErrorLogEditBoxWidth% y%MarginSpace% h%ButtonHeights%, Error Log
|
|
||||||
Gui, Add, Edit,x%ErrorLogEditBoxXPos% h%ErrorLogEditBoxHeight% w%ErrorLogEditBoxWidth% y+10, %ErrorLogVar%
|
|
||||||
|
|
||||||
gui, font, Normal
|
|
||||||
gui, font, s7
|
|
||||||
Gui, Add, StatusBar,, Total Videos Uploaded: %TotalVideosUploaded% | Total Clicks Saved: %MouseClicksSaved%
|
|
||||||
Gui, +Resize +MaximizeBox
|
|
||||||
|
|
||||||
OriginalVideoDescription := VideoDescription
|
|
||||||
OriginalPodcastTags := PodcastTags
|
|
||||||
|
|
||||||
|
|
||||||
if(XPosition and YPosition)
|
|
||||||
Gui, Show,x%XPosition% y%YPosition%,%FullScriptName% - Upload Results
|
|
||||||
else,
|
|
||||||
Gui, Show,,%FullScriptName% - Upload Results
|
|
||||||
@@ -21,31 +21,6 @@ CheckLBRYProcess() ; double check lbry process
|
|||||||
|
|
||||||
SaveOrPostProgress(Message:="Starting Upload",PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
SaveOrPostProgress(Message:="Starting Upload",PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||||
|
|
||||||
|
|
||||||
; If LBRY Killer not found, then download it
|
|
||||||
; @todo: Add LBRY kill download functionality from gitea
|
|
||||||
|
|
||||||
LBRYKillerPath := LibFolder . "\LBRY Process Killer.exe"
|
|
||||||
if(!FileExist(LBRYKillerPath)){
|
|
||||||
|
|
||||||
; Msgbox % "LBRYKillerPath: " LBRYKillerPath
|
|
||||||
; Msgbox % "LBRYProcessKillerURL: " LBRYProcessKillerURL
|
|
||||||
LBRYKillerPath = %A_ScriptDir%\Lib\LBRY Process Killer.exe
|
|
||||||
LBRYKillerUpdateURL = https://freedomain.dev/yuriy/video-uploader/raw/branch/main/Modules/LBRY-Process-Killer.exe
|
|
||||||
|
|
||||||
Message = LBRY Process Killer Not Found. Automatically Downloading.
|
|
||||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
|
||||||
|
|
||||||
UrlDownloadToFile, %LBRYKillerUpdateURL%, %LBRYKillerPath%
|
|
||||||
if(ErrorLevel){
|
|
||||||
Message = Failed to download the the LBRY-Killer.exe from %LBRYKillerUpdateURL%
|
|
||||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
|
||||||
Return
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
TooltipThis("Uploading Video through API")
|
TooltipThis("Uploading Video through API")
|
||||||
; Variables of items that need to be replaced before argument is passed to API
|
; Variables of items that need to be replaced before argument is passed to API
|
||||||
Apostrophe = '
|
Apostrophe = '
|
||||||
@@ -201,13 +176,6 @@ if(!InStr(UploadResult, "permanent_url")){ ; if no permanent_url is generated th
|
|||||||
Return
|
Return
|
||||||
}
|
}
|
||||||
|
|
||||||
if(KillLBRYAfterUpload){
|
|
||||||
try run, %LBRYKillerPath%
|
|
||||||
catch e {
|
|
||||||
Message = LBRYKiller not found. Unable to find File.
|
|
||||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
; Transform the Upload Result json into the LBRY.tv link
|
; Transform the Upload Result json into the LBRY.tv link
|
||||||
; PermanentURL := GetPermanentLBRYURL(UploadResult) ; get permanentURL from the upload result json
|
; PermanentURL := GetPermanentLBRYURL(UploadResult) ; get permanentURL from the upload result json
|
||||||
@@ -360,7 +328,40 @@ if(LBRYUploadType = "Audio"){
|
|||||||
IniWrite, %OdyseeAudioURL%, %VideoLinksIniFile%, URLs, OdyseeAudioURL
|
IniWrite, %OdyseeAudioURL%, %VideoLinksIniFile%, URLs, OdyseeAudioURL
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(!LBRYKillerStarted){
|
||||||
|
|
||||||
|
; If LBRY Killer not found, then download it
|
||||||
|
; @todo: Add LBRY kill download functionality from gitea
|
||||||
|
LBRYKillerPath := LibFolder . "\LBRY Process Killer.exe"
|
||||||
|
if(!FileExist(LBRYKillerPath)){
|
||||||
|
|
||||||
|
; Msgbox % "LBRYKillerPath: " LBRYKillerPath
|
||||||
|
; Msgbox % "LBRYProcessKillerURL: " LBRYProcessKillerURL
|
||||||
|
LBRYKillerPath = %A_ScriptDir%\Lib\LBRY Process Killer.exe
|
||||||
|
LBRYKillerUpdateURL = https://freedomain.dev/yuriy/video-uploader/raw/branch/main/Modules/LBRY-Process-Killer.exe
|
||||||
|
|
||||||
|
Message = LBRY Process Killer Not Found. Automatically Downloading.
|
||||||
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||||
|
|
||||||
|
UrlDownloadToFile, %LBRYKillerUpdateURL%, %LBRYKillerPath%
|
||||||
|
if(ErrorLevel){
|
||||||
|
Message = Failed to download the the LBRY-Killer.exe from %LBRYKillerUpdateURL%
|
||||||
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||||
|
Return
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if(KillLBRYAfterUpload){
|
||||||
|
try run, %LBRYKillerPath%
|
||||||
|
catch e {
|
||||||
|
Message = LBRYKiller not found. Unable to find File.
|
||||||
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||||
|
}
|
||||||
|
LBRYKillerStarted := 1
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
; SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
; SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||||
; SaveDriverURL()
|
; SaveDriverURL()
|
||||||
AddToTotalVideosUploadedCount()
|
AddToTotalVideosUploadedCount()
|
||||||
|
|||||||
@@ -100,6 +100,14 @@ Loop, 5 {
|
|||||||
sleep, 2000
|
sleep, 2000
|
||||||
}
|
}
|
||||||
|
|
||||||
|
; click the "Hide Links Preview" checkbox to hide previews of hyperlinks
|
||||||
|
if(InStr(VideoDescription, "https")){
|
||||||
|
Xpath = (//div[@class='hide-switcher-container'])[1]
|
||||||
|
Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=1,SleepLength:=100)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
; SaveOrPostProgress(Message:="Waiting Video to finish uploading",PostType:="Tooltip,ErrorLoggingTextFile")
|
; SaveOrPostProgress(Message:="Waiting Video to finish uploading",PostType:="Tooltip,ErrorLoggingTextFile")
|
||||||
Message = Uploading Video File
|
Message = Uploading Video File
|
||||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile")
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile")
|
||||||
@@ -112,6 +120,19 @@ if(Status){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
; make sure the "Notify Users" checkbox is selected
|
||||||
|
Xpath = (//input[contains(@name,'is_do_promo')])[1]
|
||||||
|
|
||||||
|
try, Status := driver.findelementbyxpath(Xpath).isSelected()
|
||||||
|
if(Status = 0){
|
||||||
|
Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=1,SleepLength:=1000)
|
||||||
|
try, Status := driver.findelementbyxpath(Xpath).isSelected()
|
||||||
|
if(Status = "0"){
|
||||||
|
Message = Failed to Check ON the Notify Users Checkbox
|
||||||
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
; check if the "Auto Submit Post" checkbox is checked, and if not check it
|
; check if the "Auto Submit Post" checkbox is checked, and if not check it
|
||||||
js = return document.querySelector("#autosubmit_enabled").checked;
|
js = return document.querySelector("#autosubmit_enabled").checked;
|
||||||
try AutoSubmitstatus := driver.executeScript(js)
|
try AutoSubmitstatus := driver.executeScript(js)
|
||||||
@@ -288,9 +309,9 @@ Loop % VideoTitleArray.Length(){
|
|||||||
|
|
||||||
|
|
||||||
; get longest word in video title to use for grabbing the share link from the raw page
|
; get longest word in video title to use for grabbing the share link from the raw page
|
||||||
RegExMatch(VideoTitle, "ms)\b\S+(?CFindLongestWordInString)\b(?R)", m)
|
; RegExMatch(VideoTitle, "ms)\b\S+(?CFindLongestWordInString)\b(?R)", m)
|
||||||
LongestWordInVideoTitle := longestWord
|
; LongestWordInVideoTitle := longestWord
|
||||||
Msgbox % "LongestWordInVideoTitle: " LongestWordInVideoTitle
|
; Msgbox % "LongestWordInVideoTitle: " LongestWordInVideoTitle
|
||||||
|
|
||||||
; MsgBox, Longest word: %longestWord%`, #%wordLength%
|
; MsgBox, Longest word: %longestWord%`, #%wordLength%
|
||||||
|
|
||||||
@@ -299,9 +320,23 @@ Msgbox % "LongestWordInVideoTitle: " LongestWordInVideoTitle
|
|||||||
|
|
||||||
; Grab Video Share Link From Page Source
|
; Grab Video Share Link From Page Source
|
||||||
; ------------------------------------------------
|
; ------------------------------------------------
|
||||||
|
ShareLink := GrabLocalsPostURLUsingTitle(VideoTitle)
|
||||||
|
|
||||||
|
if(!InStr(ShareLink, "https")){
|
||||||
|
Message = Couldn't find Video Share link in the first 10 posts. Is the video possibly still uploading?
|
||||||
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||||
|
Return
|
||||||
|
}
|
||||||
|
|
||||||
|
; Msgbox % "ShareLink: " ShareLink
|
||||||
|
|
||||||
|
; Msgbox % "LocalsVideoURL: " LocalsVideoURL
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
; Iterate over the last couple of posts, find the post with the title that contains the Longest word from the uploaded video
|
; Iterate over the last couple of posts, find the post with the title that contains the Longest word from the uploaded video
|
||||||
; And grab the share URL for it
|
; And grab the share URL for it
|
||||||
|
/*
|
||||||
Message = Looking for - %LongestWordInVideoTitle% - within first 7 posts in order to grab share URL
|
Message = Looking for - %LongestWordInVideoTitle% - within first 7 posts in order to grab share URL
|
||||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||||
|
|
||||||
@@ -358,6 +393,7 @@ loop, 7 {
|
|||||||
ShareLink :=
|
ShareLink :=
|
||||||
}
|
}
|
||||||
|
|
||||||
|
*/
|
||||||
if(ShareLink = ""){
|
if(ShareLink = ""){
|
||||||
Message = Video was published succsessfully, but failed to grab Share Link.
|
Message = Video was published succsessfully, but failed to grab Share Link.
|
||||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||||
|
|||||||
@@ -1,307 +0,0 @@
|
|||||||
|
|
||||||
; -------------------------------Functions-------------------------------
|
|
||||||
|
|
||||||
OnMsgBoxConfirmChromiumOverwrite() {
|
|
||||||
DetectHiddenWindows, On
|
|
||||||
Process, Exist
|
|
||||||
If (WinExist("ahk_class #32770 ahk_pid " . ErrorLevel)) {
|
|
||||||
ControlSetText Button1, Cancel
|
|
||||||
ControlSetText Button2, Yes
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
; https://www.autohotkey.com/docs/v2/Functions.htm#Variadic
|
|
||||||
Join(sep, params*) {
|
|
||||||
For index, param in params
|
|
||||||
str .= param . sep
|
|
||||||
return SubStr(str, 1, -StrLen(sep))
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
CheckLBRYProcess(){
|
|
||||||
; Check if LBRY Process exists
|
|
||||||
Process, Exist,LBRY.exe
|
|
||||||
if(ErrorLevel = 0) ; if doesn't exist
|
|
||||||
{
|
|
||||||
Message = Not Running. Starting up LBRY.exe
|
|
||||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile")
|
|
||||||
|
|
||||||
LBRYExeFilepath = C:\Program Files\LBRY\LBRY.exe
|
|
||||||
if(!FileExist(LBRYExeFilepath)){
|
|
||||||
Message = Failed to Find LBRY.exe executable. LBRY not installed?
|
|
||||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
|
||||||
Return
|
|
||||||
}
|
|
||||||
|
|
||||||
Message = Checking LBRY daemon_settings.yml file for Odysee Wallet Servers
|
|
||||||
SaveOrPostProgress(Message:=Message,PostType:=",ErrorLoggingTextFile,DiscordErrorLogging")
|
|
||||||
|
|
||||||
FileRead, daemon_settingsFileContent, C:\Users\%A_UserName%\AppData\Local\lbry\lbrynet\daemon_settings.yml
|
|
||||||
|
|
||||||
if(!InStr(daemon_settingsFileContent, "a-hub1.odysee.com")){
|
|
||||||
Message = Odysee wallet server is not in daemon_settings.yml. Replacing File with required settings.
|
|
||||||
SaveOrPostProgress(Message:=Message,PostType:=",DiscordErrorLogging")
|
|
||||||
|
|
||||||
LBRYDaemonSettingsFP = C:\Users\%A_UserName%\AppData\Local\lbry\lbrynet\daemon_settings.yml
|
|
||||||
LBRYDaemonSettingsBackupFP = C:\Users\%A_UserName%\AppData\Local\lbry\lbrynet\daemon_settings_BU.yml
|
|
||||||
|
|
||||||
|
|
||||||
; Msgbox % "daemon_settingsText: " daemon_settingsText
|
|
||||||
FileMove, %LBRYDaemonSettingsFP%, %LBRYDaemonSettingsBackupFP%, 1 ; Dest [, Flag (1 = overwrite)]
|
|
||||||
|
|
||||||
UrlDownloadToFile, https://freedomain.dev/yuriy/video-uploader/raw/branch/main/Assets/daemon_settings.yml , %LBRYDaemonSettingsFP%
|
|
||||||
|
|
||||||
sleep, 1000
|
|
||||||
|
|
||||||
if(!FileExist(LBRYDaemonSettingsFP)){
|
|
||||||
Message = Failed to download the custom daemon_settings.yml file from git. Restoring Original File
|
|
||||||
SaveOrPostProgress(Message:=Message,PostType:=",ErrorLoggingTextFile,DiscordErrorLogging")
|
|
||||||
FileMove,%LBRYDaemonSettingsBackupFP%,%LBRYDaemonSettingsFP%, 1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
try run, "%LBRYExeFilepath%"
|
|
||||||
Message = Waiting 1 Minute for LBRY to start up
|
|
||||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip")
|
|
||||||
Sleep, 60000 ; 1 minute
|
|
||||||
|
|
||||||
Process, Exist,LBRY.exe
|
|
||||||
if(ErrorLevel = 0) ; if doesn't exist
|
|
||||||
{
|
|
||||||
Message = Failed to Start LBRY.exe after 60 seconds of waiting
|
|
||||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
|
||||||
Return
|
|
||||||
}
|
|
||||||
WinMinimize, LBRY
|
|
||||||
}
|
|
||||||
Return
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
GetPermanentLBRYURL(UploadResult){
|
|
||||||
SingleQuotationmark = "
|
|
||||||
|
|
||||||
UploadResult := StrSplit(UploadResult, "`n") ; split results by new line
|
|
||||||
|
|
||||||
; Iterate through the array of the results
|
|
||||||
Loop % UploadResult.Length() {
|
|
||||||
PermanentURL := UploadResult[A_Index]
|
|
||||||
if(InStr(PermanentURL, "permanent_url"))
|
|
||||||
Break
|
|
||||||
}
|
|
||||||
|
|
||||||
; Starting Result: "permanent_url": "lbry://Test-Video-161-Numbered#c9ad9afe54c7178d6f870b59bbe129aef8efc3ff",
|
|
||||||
PermanentURL := StrSplit(PermanentURL, "lbry:")
|
|
||||||
PermanentURL := "lbry:" . PermanentURL[2]
|
|
||||||
PermanentURL := StrReplace(PermanentURL, ",", "")
|
|
||||||
PermanentURL := StrReplace(PermanentURL, SingleQuotationmark, "")
|
|
||||||
PermanentURL := StrReplace(PermanentURL, "`n", "")
|
|
||||||
PermanentURL := StrReplace(PermanentURL, "`r", "")
|
|
||||||
|
|
||||||
; End Result lbry://Test-Video-161-Numbered#c9ad9afe54c7178d6f870b59bbe129aef8efc3ff
|
|
||||||
Return PermanentURL
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
GetLBRYCanonicalURL(LBRYJSONObject){ ; input json string
|
|
||||||
; ResolveURL := StrSplit(LBRYResolveAPICommand, "lbry://")
|
|
||||||
; ResolveURL := "lbry://" . ResolveURL[2]
|
|
||||||
; StrReplace(Haystack, SearchText [, ReplaceText, OutputVarCount, Limit := -1])
|
|
||||||
LBRYPermanentURLJsonOBJ := StrReplace(LBRYJSONObject, LBRYPermanentURL, "LBRYPermanentURL")
|
|
||||||
; clipboard := LBRYPermanentURLJsonOBJ
|
|
||||||
; DevModeMsgBox(LBRYPermanentURLJsonOBJ)
|
|
||||||
|
|
||||||
try parsed := JSON.Load(LBRYPermanentURLJsonOBJ)
|
|
||||||
try LBRYCanonicalURL := parsed.LBRYPermanentURL.canonical_url
|
|
||||||
|
|
||||||
; DevModeMsgBox(LBRYCanonicalURL)
|
|
||||||
|
|
||||||
if(LBRYCanonicalURL = ""){
|
|
||||||
Return "" ; return blank
|
|
||||||
}
|
|
||||||
|
|
||||||
; otherwise return the LBRY url
|
|
||||||
LBRYCanonicalURL := StrReplace(LBRYCanonicalURL, "lbry://", "https://lbry.tv/")
|
|
||||||
Return LBRYCanonicalURL
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
LBRYCMDTextReplacement(LBRYURLSlug){
|
|
||||||
SingleQUote = "
|
|
||||||
LBRYURLSlug := StrReplace(LBRYURLSlug, " ", "_") ; replace all spaces with dashes
|
|
||||||
LBRYURLSlug := StrReplace(LBRYURLSlug, ":", "_") ; replace all colons with dashes
|
|
||||||
LBRYURLSlug := StrReplace(LBRYURLSlug, ",", "_") ; replace all colons with dashes
|
|
||||||
LBRYURLSlug := StrReplace(LBRYURLSlug, "?", "") ; replace all colons with dashes
|
|
||||||
LBRYURLSlug := StrReplace(LBRYURLSlug, "!", "") ; replace all colons with dashes
|
|
||||||
LBRYURLSlug := StrReplace(LBRYURLSlug, "`;", "_") ; replace all colons with dashes
|
|
||||||
LBRYURLSlug := StrReplace(LBRYURLSlug, "/", "_") ; replace all colons with dashes
|
|
||||||
; LBRYURLSlug := StrReplace(LBRYURLSlug, "?", "") ; replace all colons with dashes
|
|
||||||
LBRYURLSlug := StrReplace(LBRYURLSlug, "<", "_") ; replace all colons with dashes
|
|
||||||
LBRYURLSlug := StrReplace(LBRYURLSlug, ">", "_") ; replace all colons with dashes
|
|
||||||
LBRYURLSlug := StrReplace(LBRYURLSlug, SingleQUote, "") ; replace all colons with dashes
|
|
||||||
LBRYURLSlug := StrReplace(LBRYURLSlug, "'", "") ; replace all colons with dashes
|
|
||||||
LBRYURLSlug := StrReplace(LBRYURLSlug, "=", "") ; replace all colons with dashes
|
|
||||||
LBRYURLSlug := StrReplace(LBRYURLSlug, ";", "") ; replace all colons with dashes
|
|
||||||
LBRYURLSlug := StrReplace(LBRYURLSlug, ")", "") ; replace all colons with dashes
|
|
||||||
LBRYURLSlug := StrReplace(LBRYURLSlug, "(", "") ; replace all colons with dashes
|
|
||||||
LBRYURLSlug := StrReplace(LBRYURLSlug, "___", "_") ; replace all colons with dashes
|
|
||||||
LBRYURLSlug := StrReplace(LBRYURLSlug, "__", "_") ; replace all colons with dashes
|
|
||||||
LBRYURLSlug := StrReplace(LBRYURLSlug, "__", "_") ; replace all colons with dashes
|
|
||||||
Return LBRYURLSlug
|
|
||||||
}
|
|
||||||
|
|
||||||
GetLBRYAPIErrorFromString(UploadResult){
|
|
||||||
UploadResultArray := StrSplit(UploadResult, "message")
|
|
||||||
LBRYAPIError := UploadResultArray[2]
|
|
||||||
; LBRYAPIErrorStrLen := StrLen(LBRYAPIError)
|
|
||||||
|
|
||||||
; LBRYAPIErrorStrToTrim := LBRYAPIErrorStrLen - 3
|
|
||||||
; Msgbox % "LBRYAPIErrorStrToTrim: " LBRYAPIErrorStrToTrim
|
|
||||||
LBRYAPIError := SubStr(LBRYAPIError, 4)
|
|
||||||
LBRYAPIError := StrReplace(LBRYAPIError, "}", "")
|
|
||||||
|
|
||||||
|
|
||||||
; Msgbox % "LBRYAPIError: " LBRYAPIError
|
|
||||||
Return LBRYAPIError
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
LogErrorToTextFile(Error){
|
|
||||||
/* if(LogErrorsToTextFile != 1)
|
|
||||||
Return
|
|
||||||
*/
|
|
||||||
ErrorLoggingFile := VideoFolderDir . "\" . "ErrorLogging.txt"
|
|
||||||
FormatTime, TodayDate , YYYYMMDDHH24MISS, yyyyMMdd_hhmmss
|
|
||||||
text =
|
|
||||||
(
|
|
||||||
|
|
||||||
|
|
||||||
---------------%TodayDate%---------------
|
|
||||||
%CurrentSite%: %Error%
|
|
||||||
|
|
||||||
|
|
||||||
)
|
|
||||||
if(LogErrorsToMsgbox)
|
|
||||||
Msgbox % "Text: " Text
|
|
||||||
|
|
||||||
FileAppend, %Text%, %ErrorLoggingFile%
|
|
||||||
} ; End of Function
|
|
||||||
|
|
||||||
/*
|
|
||||||
*/
|
|
||||||
|
|
||||||
AddToTotalVideosUploadedCount(){
|
|
||||||
; IniRead, TotalVideosUploaded, %SettingsIniFilepath%, General, TotalVideosUploaded, %A_Space%
|
|
||||||
TotalVideosUploaded += 1
|
|
||||||
; IniWrite, %TotalVideosUploaded%, %SettingsIniFilepath%, General, TotalVideosUploaded
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
OnMsgBoxPodcastFinish() {
|
|
||||||
DetectHiddenWindows, On
|
|
||||||
Process, Exist
|
|
||||||
If (WinExist("ahk_class #32770 ahk_pid " . ErrorLevel)) {
|
|
||||||
WinMove,, 0
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
OnMsgBoxSocialMediaPoster() {
|
|
||||||
DetectHiddenWindows, On
|
|
||||||
Process, Exist
|
|
||||||
If (WinExist("ahk_class #32770 ahk_pid " . ErrorLevel)) {
|
|
||||||
ControlSetText Button1, Yes
|
|
||||||
ControlSetText Button2, Not Now
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Check_For_Stuck_Video_Upload(Index_Number, Upload_Status){
|
|
||||||
if(A_index = 1){ ; Create a blank array
|
|
||||||
ProgressStatusArray := []
|
|
||||||
Return
|
|
||||||
}
|
|
||||||
|
|
||||||
Message = Upload Status: %Upload_Status%
|
|
||||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip")
|
|
||||||
|
|
||||||
; if we reached the last loop number:
|
|
||||||
if(A_index = %Number_of_loops_to_Check_Upload_status%){
|
|
||||||
Message = Upload Most Likely Failed: Video Hasn't Finished Uploading after 1 hour.
|
|
||||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
|
||||||
SaveDriverURLOFErrorPage()
|
|
||||||
Return "Failed"
|
|
||||||
}
|
|
||||||
|
|
||||||
; If progress is still the same after a ten minute interval then error out
|
|
||||||
if(HasVal(Array_Index_Num_of_Upload_StatusChecks, A_index)){ ; if current index is in Array of index numbers to check status during
|
|
||||||
|
|
||||||
; Send a notification message of upload status
|
|
||||||
Message = Upload Status: %Upload_Status%
|
|
||||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
|
||||||
|
|
||||||
; if current upload_status is in the array of values that are updated every 10 mins
|
|
||||||
if(HasVal(ProgressStatusArray, Upload_Status)){
|
|
||||||
Message = Upload Failed (E#4508)`nUpload Stuck at same point for 10 minutes. Stuck Status: %ProgressStatus%
|
|
||||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
|
||||||
SaveDriverURLOFErrorPage()
|
|
||||||
Return "Failed"
|
|
||||||
}
|
|
||||||
ProgressStatusArray.Push(Upload_Status) ; append current status to array
|
|
||||||
}
|
|
||||||
} ; end of func
|
|
||||||
|
|
||||||
/*
|
|
||||||
*/
|
|
||||||
; Find the longest word in a string of words
|
|
||||||
FindLongestWordInString(m, calloutNumber, pos, haystack, pattern){
|
|
||||||
Global wordLength, longestWord
|
|
||||||
|
|
||||||
len := StrLen(m)
|
|
||||||
|
|
||||||
If ( len > wordLength )
|
|
||||||
{
|
|
||||||
wordLength := len
|
|
||||||
longestWord := m
|
|
||||||
|
|
||||||
; MsgBox, %m%
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
*/
|
|
||||||
|
|
||||||
; Split a long string into multiple pieces based on the string lengtht you want and return an array with all strings
|
|
||||||
SplitStringWithSentences(text, maxChunkSize) {
|
|
||||||
sentences := StrSplit(text, "\. ") ; split at period with space after it
|
|
||||||
|
|
||||||
currentChunk := ""
|
|
||||||
chunks := []
|
|
||||||
|
|
||||||
Loop, % sentences.Length()
|
|
||||||
{
|
|
||||||
sentence := sentences[A_Index]
|
|
||||||
CurrentChunkAndSentence := currentChunk . sentence
|
|
||||||
; Msgbox % "CurrentChunkAndSentence: " CurrentChunkAndSentence
|
|
||||||
; msgbox % StrLen(CurrentChunkAndSentence)
|
|
||||||
|
|
||||||
if (StrLen(CurrentChunkAndSentence) <= maxChunkSize)
|
|
||||||
{
|
|
||||||
currentChunk .= sentence . "\. "
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
chunks.Push(currentChunk)
|
|
||||||
currentChunk := sentence . "\. "
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (currentChunk != "")
|
|
||||||
chunks.Push(currentChunk)
|
|
||||||
|
|
||||||
return chunks
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -216,6 +216,9 @@ Status := Selenium_LoopToSendValueToXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength
|
|||||||
Xpath = //input[@id='url-rumble']
|
Xpath = //input[@id='url-rumble']
|
||||||
Status := Selenium_LoopToSendValueToXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000,StringTextContent:=RumbleURL)
|
Status := Selenium_LoopToSendValueToXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000,StringTextContent:=RumbleURL)
|
||||||
|
|
||||||
|
; Input Rumble URL
|
||||||
|
Xpath = //input[@id='url-unauthorizedtv']
|
||||||
|
Status := Selenium_LoopToSendValueToXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000,StringTextContent:=UnauthorizedTVURL)
|
||||||
|
|
||||||
; Soundcloud but actually LBRY Audio URL
|
; Soundcloud but actually LBRY Audio URL
|
||||||
Xpath = //input[@id='url-lbry-audio']
|
Xpath = //input[@id='url-lbry-audio']
|
||||||
@@ -244,9 +247,11 @@ SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile")
|
|||||||
Xpath = //textarea[@id='description']
|
Xpath = //textarea[@id='description']
|
||||||
Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000)
|
Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000)
|
||||||
|
|
||||||
; Input Description
|
; Format text JS
|
||||||
JSVideoDescription := FormatTextToJSText(VideoDescription)
|
JSVideoDescription := FormatTextToJSText(VideoDescription)
|
||||||
|
JSVideoSummary := FormatTextToJSText(VideoSummary)
|
||||||
|
|
||||||
|
; Input Description
|
||||||
js = document.getElementById('description').value = "%JSVideoDescription%";
|
js = document.getElementById('description').value = "%JSVideoDescription%";
|
||||||
try driver.executeScript(js)
|
try driver.executeScript(js)
|
||||||
|
|
||||||
@@ -325,7 +330,10 @@ Sublime Indentation Reset
|
|||||||
Message = Input Complete! `nPlease Confirm and click Final "Save" Button on Podcast Page
|
Message = Input Complete! `nPlease Confirm and click Final "Save" Button on Podcast Page
|
||||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile")
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile")
|
||||||
|
|
||||||
sleep, 5000
|
; Change GUI button from "Upload Podcast"
|
||||||
|
GuiControl,,UploadPodcast, Podcast Uploaded
|
||||||
|
|
||||||
|
; sleep, 5000
|
||||||
|
|
||||||
CurrentSite :=
|
CurrentSite :=
|
||||||
ToolTip
|
ToolTip
|
||||||
|
|||||||
@@ -1,7 +1,15 @@
|
|||||||
PostToDiscord:
|
PostToDiscord:
|
||||||
;------------------------------------------------
|
;------------------------------------------------
|
||||||
|
CurrentSite := "Discord"
|
||||||
|
|
||||||
|
if(!FileExist(VideoThumbFilepath)){
|
||||||
|
Message = Post Aborted.`nVideo Thumbnail not found at:`n%VideoThumbFilepath%
|
||||||
|
SaveOrPostProgress(Message,PostType:="ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||||
|
MsgBox 0x10,, %Message%
|
||||||
|
Return
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
CurrentSocialMediaPosting := "Discord"
|
|
||||||
Message = Posting Video Links to Discord
|
Message = Posting Video Links to Discord
|
||||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||||
|
|
||||||
@@ -13,54 +21,82 @@ if(DiscordVideosWebhookURL = ""){
|
|||||||
Msgbox, Unable to Grab DiscordVideosWebhookURL from %SettingsIniFilepath%.`nPlease input the URL and then try again.
|
Msgbox, Unable to Grab DiscordVideosWebhookURL from %SettingsIniFilepath%.`nPlease input the URL and then try again.
|
||||||
Return
|
Return
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
; If description is longer than 2k chars, then API will error out. goto section that will allow user to edit video description to shorten it for posting
|
|
||||||
if(StrLen(SocialMediaDescription) > 2000 AND VideoDescriptionForVideosChannel = ""){
|
|
||||||
Goto, CreateDescriptionForVideosPosting
|
|
||||||
}
|
|
||||||
|
|
||||||
*/
|
|
||||||
if(SocialMediaDescription = ""){
|
|
||||||
CreateDescriptionForSocialMedia()
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
SubmitDescriptionForDiscordVideosChannel:
|
|
||||||
Message := "**" . VideoTitle . "**" . "`n" . SocialMediaDescription . "`n"
|
|
||||||
; https://stackoverflow.com/questions/63160401/how-to-create-hyperlink-in-discord-in-an-embed-in-general
|
; https://stackoverflow.com/questions/63160401/how-to-create-hyperlink-in-discord-in-an-embed-in-general
|
||||||
|
|
||||||
if(BitChuteURL != "")
|
; clear out variables in case the button is clicked twice
|
||||||
Message .= "[BitChute](<" . BitChuteURL . ">) \| "
|
VideoLinks :=
|
||||||
|
Message :=
|
||||||
|
DiscordVideoDescription :=
|
||||||
|
|
||||||
|
TooltipMessage = Checking Bitchute and Brighteon URL for Processing Status
|
||||||
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||||
|
|
||||||
|
; check the status of the Bitchute URL to see if it's done processing
|
||||||
|
; shows "404 - Page not found" on page if not
|
||||||
|
if(BitChuteURL){
|
||||||
|
if(!InStr(URLDownloadToVar(BitChuteURL), "404 - Page not found")){
|
||||||
|
if(BitChuteURL != "")
|
||||||
|
VideoLinks .= "[BitChute](<" . BitChuteURL . ">) \| "
|
||||||
|
}
|
||||||
|
else, {
|
||||||
|
LogMessage = Bitchute URL skipped, URL Currently leads to: 404 - page not found
|
||||||
|
SaveOrPostProgress(Message:=LogMessage,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
; check the status of the Brighteon URL to see if it's done processing
|
||||||
|
; shows "404 - Page not found" on page if not
|
||||||
|
if(BrighteonURL){
|
||||||
|
if(!InStr(URLDownloadToVar(BrighteonURL), "SELECTED IS NOT CURRENTLY AVAILABLE")){
|
||||||
if(BrighteonURL != "")
|
if(BrighteonURL != "")
|
||||||
Message .= "[Brighteon](<" . BrighteonURL . ">) \| "
|
VideoLinks .= "[Brighteon](<" . BrighteonURL . ">) \| "
|
||||||
|
}
|
||||||
|
else, {
|
||||||
|
ErrorLogMsg = Brighteon URL skipped, URL Currently leads to: 404 - page not found
|
||||||
|
SaveOrPostProgress(Message:=ErrorLogMsg,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if(OdyseeVideoURL != "")
|
if(OdyseeVideoURL != "")
|
||||||
Message .= "[Odysee](<" . OdyseeVideoURL . ">) \| "
|
VideoLinks .= "[Odysee](<" . OdyseeVideoURL . ">) \| "
|
||||||
|
|
||||||
if(OdyseeAudioURL != "")
|
if(OdyseeAudioURL != "")
|
||||||
Message .= "[Odysee (Audio)](<" . OdyseeAudioURL . ">) \| "
|
VideoLinks .= "[Odysee (Audio)](<" . OdyseeAudioURL . ">) \| "
|
||||||
|
|
||||||
if(RumbleURL != "")
|
if(RumbleURL != "")
|
||||||
Message .= "[Rumble](<" . RumbleURL . ">) \| "
|
VideoLinks .= "[Rumble](<" . RumbleURL . ">) \| "
|
||||||
|
|
||||||
if(DailyMotionURL != "")
|
if(DailyMotionURL != "")
|
||||||
Message .= "[DailyMotion](<" . DailyMotionURL . ">) \| "
|
VideoLinks .= "[DailyMotion](<" . DailyMotionURL . ">) \| "
|
||||||
|
|
||||||
if(PodcastTranscriptURL != "")
|
if(PodcastTranscriptURL != "")
|
||||||
Message .= "[Video Transcript](<" . PodcastTranscriptURL . ">) \| "
|
VideoLinks .= "[Video Transcript](<" . PodcastTranscriptURL . ">) \| "
|
||||||
|
|
||||||
if(PodcastNumber != "")
|
if(PodcastNumber != "")
|
||||||
Message .= "[FDRPodcasts](<" . "https://fdrpodcasts.com/" . PodcastNumber . ">) \| "
|
VideoLinks .= "[FDRPodcasts](<" . "https://fdrpodcasts.com/" . PodcastNumber . ">) \| "
|
||||||
|
|
||||||
|
; trim the video description if Title + Body + Links is longer than 2000 chars
|
||||||
|
if((StrLen(VideoTitle) + StrLen(VideoDescription) + StrLen(VideoLinks)) > 2000){
|
||||||
|
|
||||||
UploadImageToDiscord(DiscordVideosWebhookURL, Message, VideoThumbFilepath)
|
DiscordAPICharsLeft := 2000 - StrLen(VideoTitle) - StrLen(VideoLinks) - 15
|
||||||
|
|
||||||
|
DiscordVideoDescription := SubStr(VideoDescription, 1, DiscordAPICharsLeft) . "..."
|
||||||
|
}
|
||||||
|
else,
|
||||||
|
DiscordVideoDescription := VideoDescription
|
||||||
|
|
||||||
|
Message = VideoLinks variable contents:
|
||||||
|
|
||||||
|
Message := "**" . VideoTitle . "**" . "`n" . DiscordVideoDescription . "`n`n" . VideoLinks
|
||||||
|
|
||||||
|
Status := UploadImageToDiscord(DiscordVideosWebhookURL, Message, VideoThumbFilepath)
|
||||||
|
Message = API Response:`n%Status%
|
||||||
|
SaveOrPostProgress(Message:=Message,PostType:="ErrorLoggingTextFile")
|
||||||
|
|
||||||
|
|
||||||
SaveOrPostProgress(Message:="Video Links posted to #Videos Successfully.",PostType:="Tooltip,ErrorLoggingTextFile")
|
SaveOrPostProgress(Message:="Video Links posted to #Videos Successfully.",PostType:="Tooltip,ErrorLoggingTextFile")
|
||||||
GuiControl,, PostToDiscordButton, Discord - Posted Successfully
|
GuiControl,, PostToDiscordTelegramButton, Discord - Posted Successfully
|
||||||
|
|
||||||
sleep, 2000
|
sleep, 2000
|
||||||
ToolTip
|
ToolTip
|
||||||
|
|||||||
@@ -1,6 +1,14 @@
|
|||||||
PostToTelegram:
|
PostToTelegram:
|
||||||
;------------------------------------------------
|
;------------------------------------------------
|
||||||
CurrentSocialMediaPosting := "Telegram"
|
CurrentSite := "Telegram"
|
||||||
|
|
||||||
|
if(!FileExist(VideoThumbFilepath)){
|
||||||
|
Message = Post Aborted.`nVideo Thumbnail not found at:`n%VideoThumbFilepath%
|
||||||
|
SaveOrPostProgress(Message,PostType:="ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||||
|
MsgBox 0x10,, %Message%
|
||||||
|
Return
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
Message = Posting Video Links to Telegram
|
Message = Posting Video Links to Telegram
|
||||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||||
@@ -15,41 +23,47 @@ if(TelegramBotToken = "" Or TelegramBotChatID =""){
|
|||||||
Message = TelegramBotToken or TelegramBotChatID is missing from %SettingsIniFilepath%. `nPlease input them and click the button again.
|
Message = TelegramBotToken or TelegramBotChatID is missing from %SettingsIniFilepath%. `nPlease input them and click the button again.
|
||||||
msgbox, 4096, Error!, %Message%
|
msgbox, 4096, Error!, %Message%
|
||||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||||
; Msgbox, 4096, Error!, TelegramBotToken or TelegramBotChatID is missing from %SettingsIniFilepath%. `nPlease input them and rerun the script.
|
|
||||||
Return
|
Return
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
; If description is longer than 2k chars, then API will error out. goto section that will allow user to edit video description to shorten it for posting
|
|
||||||
if(StrLen(SocialMediaDescription) > 2000 AND VideoDescriptionForVideosChannel = ""){
|
|
||||||
goto, CreateDescriptionForVideosPosting
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
/*
|
|
||||||
if(SocialMediaDescription = ""){
|
|
||||||
CreateDescriptionForSocialMedia()
|
|
||||||
}
|
|
||||||
if(SocialMediaDescription > 1000){ ; Telegram has a 1024 char media caption capacity
|
|
||||||
SocialMediaDescription := SubStr(SocialMediaDescription, 1, 500)
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
; @todo: split telegram message into multiple posts
|
|
||||||
|
|
||||||
|
|
||||||
SubmitDescriptionForTelegramVideosChannel:
|
|
||||||
TelegramVideoTitle := ASCIISTRReplace(VideoTitle)
|
TelegramVideoTitle := ASCIISTRReplace(VideoTitle)
|
||||||
TelegramVideoTitle := "*" . TelegramVideoTitle . "*"
|
TelegramVideoTitle := "*" . TelegramVideoTitle . "*"
|
||||||
|
|
||||||
TelegramBodymessage := ASCIISTRReplace(VideoDescription)
|
TelegramBodymessage := ASCIISTRReplace(VideoDescription)
|
||||||
|
|
||||||
|
; Variables
|
||||||
LineBreakChar = `%0A ; Used for API
|
LineBreakChar = `%0A ; Used for API
|
||||||
|
VideoLinks :=
|
||||||
|
|
||||||
|
|
||||||
|
; Create the Hyperlinks for each Platform
|
||||||
|
; ------------------------------------------------
|
||||||
|
; check the status of the Bitchute URL to see if it's done processing
|
||||||
|
; shows "404 - Page not found" on page if not
|
||||||
|
if(BitChuteURL){
|
||||||
|
if(!InStr(URLDownloadToVar(BitChuteURL), "404 - Page not found")){
|
||||||
if(BitChuteURL != "")
|
if(BitChuteURL != "")
|
||||||
VideoLinks .= "[BitChute](" . BitChuteURL . ") \| "
|
VideoLinks .= "[BitChute](" . BitChuteURL . ") \| "
|
||||||
|
}
|
||||||
|
else, {
|
||||||
|
LogMessage = Bitchute URL skipped, URL Currently leads to: 404 - page not found
|
||||||
|
SaveOrPostProgress(Message:=LogMessage,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
; check the status of the Brighteon URL to see if it's done processing
|
||||||
|
; shows "404 - Page not found" on page if not
|
||||||
|
if(BrighteonURL){
|
||||||
|
if(!InStr(URLDownloadToVar(BrighteonURL), "SELECTED IS NOT CURRENTLY AVAILABLE")){
|
||||||
if(BrighteonURL != "")
|
if(BrighteonURL != "")
|
||||||
VideoLinks .= "[Brighteon](" . BrighteonURL . ") \| "
|
VideoLinks .= "[Brighteon](" . BrighteonURL . ") \| "
|
||||||
|
}
|
||||||
|
else, {
|
||||||
|
LogMessage = Brighteon URL skipped, URL Currently leads to: 404 - page not found
|
||||||
|
SaveOrPostProgress(Message:=LogMessage,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if(OdyseeVideoURL != "")
|
if(OdyseeVideoURL != "")
|
||||||
VideoLinks .= "[Odysee](" . OdyseeVideoURL . ") \| "
|
VideoLinks .= "[Odysee](" . OdyseeVideoURL . ") \| "
|
||||||
@@ -63,9 +77,6 @@ VideoLinks .= "[Rumble](" . RumbleURL . ") \| "
|
|||||||
if(DailyMotionURL != "")
|
if(DailyMotionURL != "")
|
||||||
VideoLinks .= "[DailyMotion](" . DailyMotionURL . ") \| "
|
VideoLinks .= "[DailyMotion](" . DailyMotionURL . ") \| "
|
||||||
|
|
||||||
if(PodcastTranscriptURL != "")
|
|
||||||
VideoLinks .= "[Video Transcript](" . PodcastTranscriptURL . ") \| "
|
|
||||||
|
|
||||||
if(PodcastNumber != "")
|
if(PodcastNumber != "")
|
||||||
VideoLinks .= "[FDRPodcasts](" . "https://fdrpodcasts.com/" . PodcastNumber . ") \| "
|
VideoLinks .= "[FDRPodcasts](" . "https://fdrpodcasts.com/" . PodcastNumber . ") \| "
|
||||||
|
|
||||||
@@ -73,46 +84,65 @@ VideoLinks .= "[FDRPodcasts](" . "https://fdrpodcasts.com/" . PodcastNumber . ")
|
|||||||
TelegramMessage := TelegramVideoTitle . "`n" . TelegramBodymessage . "`n" . VideoLinks
|
TelegramMessage := TelegramVideoTitle . "`n" . TelegramBodymessage . "`n" . VideoLinks
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
StrLenOfMessageAndVideoLinks := StrLen(TelegramVideoTitle) + StrLen(TelegramBodymessage) + StrLen(VideoLinks)
|
StrLenOfMessageAndVideoLinks := StrLen(TelegramVideoTitle) + StrLen(TelegramBodymessage) + StrLen(VideoLinks)
|
||||||
; DevModeMsgBox(StrLenOfMessageAndVideoLinks)
|
|
||||||
|
|
||||||
|
|
||||||
; If Length of Title, Video Links and Message is less than 1024 characters:
|
; If Length of Title, Video Links and Message is less than 1024 characters:
|
||||||
; ------------------------------------------------
|
; ------------------------------------------------
|
||||||
if(StrLenOfMessageAndVideoLinks < 1024) {
|
if(StrLenOfMessageAndVideoLinks < 1024) {
|
||||||
|
Message = Sending Post as One Message
|
||||||
|
SaveOrPostProgress(Message,PostType:="Tooltip,ErrorLoggingTextFile")
|
||||||
|
|
||||||
Status := SendTelegramPhoto(TelegramBotToken, TelegramBotChatID, VideoThumbFilepath, caption := TelegramMessage ) ; you could add more options; compare the Telegram API docs
|
Status := SendTelegramPhoto(TelegramBotToken, TelegramBotChatID, VideoThumbFilepath, caption := TelegramMessage ) ; you could add more options; compare the Telegram API docs
|
||||||
if(InStr(Status, "error_code")){
|
if(InStr(Status, "error_code")){
|
||||||
Message = Telegram Post Failed due to an API Issue. Error was saved to ErrorLogging file. Please send it to Yuriy.
|
Message = Telegram Post Failed Due To An Api Issue. Please See Errorlog For More Info.
|
||||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||||
|
|
||||||
; SaveOrPostProgress(Message:=Status,PostType:=",ErrorLoggingTextFile")
|
|
||||||
Message = Telegram Error: %Status%
|
|
||||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
|
||||||
|
|
||||||
ToolTip
|
|
||||||
Return
|
|
||||||
}
|
}
|
||||||
|
Message = API Response:`n%Status% ; Output returned data to ErrorLog File
|
||||||
|
SaveOrPostProgress(Message:=Message,PostType:=",ErrorLoggingTextFile")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
; If Title, Links and Message are longer than 1024, but less than 4096, split into 2 pieces: sendphoto and sendmessage
|
; If Title, Links and Message are longer than 1024, but less than 4096, split into 2 pieces: sendphoto and sendmessage
|
||||||
; ------------------------------------------------
|
; ------------------------------------------------
|
||||||
if(StrLenOfMessageAndVideoLinks < 4096){
|
if(StrLenOfMessageAndVideoLinks < 4096){
|
||||||
|
Message = Sending Post as Two Messages
|
||||||
|
SaveOrPostProgress(Message,PostType:="Tooltip,ErrorLoggingTextFile")
|
||||||
|
|
||||||
; Photo and Video Title go into SendPhoto
|
; Photo and Video Title go into SendPhoto
|
||||||
TelegramVideoTitle := TelegramVideoTitle . "`n" . VideoLinks
|
TelegramVideoTitle := TelegramVideoTitle . "`n" . VideoLinks
|
||||||
Status := SendTelegramPhoto(TelegramBotToken, TelegramBotChatID, VideoThumbFilepath, caption := TelegramVideoTitle ) ; you could add more options; compare the Telegram API docs
|
Status := SendTelegramPhoto(TelegramBotToken, TelegramBotChatID, VideoThumbFilepath, caption := TelegramVideoTitle ) ; you could add more options; compare the Telegram API docs
|
||||||
|
if(InStr(Status, "error_code")){
|
||||||
|
Message = Telegram Post Failed Due To An Api Issue. Please See Errorlog For More Info.
|
||||||
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||||
|
}
|
||||||
|
Message = API Response:`n%Status% ; Output returned data to ErrorLog File
|
||||||
|
SaveOrPostProgress(Message:=Message,PostType:=",ErrorLoggingTextFile")
|
||||||
|
|
||||||
|
|
||||||
; Video Description goes into TelegramMessage
|
; Video Description goes into TelegramMessage
|
||||||
Status2 := SendTelegramMessage(TelegramBotToken, TelegramBotChatID, text := TelegramBodymessage)
|
Status := SendTelegramMessage(TelegramBotToken, TelegramBotChatID, text := TelegramBodymessage)
|
||||||
|
if(InStr(Status, "error_code")){
|
||||||
|
Message = Telegram Post Failed Due To An Api Issue. Please See Errorlog For More Info.
|
||||||
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||||
|
}
|
||||||
|
Message = API Response:`n%Status% ; Output returned data to ErrorLog File
|
||||||
|
SaveOrPostProgress(Message:=Message,PostType:=",ErrorLoggingTextFile")
|
||||||
|
|
||||||
} else, {
|
}
|
||||||
|
else, {
|
||||||
; If Title, links and message are longer than 4096 chars, we need to split them into multiple messages
|
; If Title, links and message are longer than 4096 chars, we need to split them into multiple messages
|
||||||
; ------------------------------------------------
|
; ------------------------------------------------
|
||||||
|
Message = Sending Post as Multiple Messages
|
||||||
|
SaveOrPostProgress(Message,PostType:="Tooltip,ErrorLoggingTextFile")
|
||||||
|
|
||||||
TelegramVideoTitle := TelegramVideoTitle . "`n" . VideoLinks
|
TelegramVideoTitle := TelegramVideoTitle . "`n" . VideoLinks
|
||||||
Status := SendTelegramPhoto(TelegramBotToken, TelegramBotChatID, VideoThumbFilepath, caption := TelegramVideoTitle ) ; you could add more options; compare the Telegram API docs
|
Status := SendTelegramPhoto(TelegramBotToken, TelegramBotChatID, VideoThumbFilepath, caption := TelegramVideoTitle ) ; you could add more options; compare the Telegram API docs
|
||||||
|
if(InStr(Status, "error_code")){
|
||||||
|
Message = Telegram Post Failed Due To An Api Issue. Please See Errorlog For More Info.
|
||||||
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||||
|
}
|
||||||
|
Message = API Response:`n%Status% ; Output returned data to ErrorLog File
|
||||||
|
SaveOrPostProgress(Message:=Message,PostType:=",ErrorLoggingTextFile")
|
||||||
|
|
||||||
; Split the Description into 4096 character chunks while preserving sentences
|
; Split the Description into 4096 character chunks while preserving sentences
|
||||||
; Used 4095 because a ". " has to be put in at the end of the chunk.
|
; Used 4095 because a ". " has to be put in at the end of the chunk.
|
||||||
@@ -125,24 +155,19 @@ Loop % VideoDescriptionChunks.Length(){
|
|||||||
Description := VideoDescriptionChunks[A_Index]
|
Description := VideoDescriptionChunks[A_Index]
|
||||||
|
|
||||||
|
|
||||||
SendTelegramMessage(TelegramBotToken, TelegramBotChatID, text := Description)
|
Status := SendTelegramMessage(TelegramBotToken, TelegramBotChatID, text := Description)
|
||||||
; Clipboard := Description
|
if(InStr(Status, "error_code")){
|
||||||
; msgbox % Description
|
Message = Telegram Post Failed Due To An Api Issue. Please See Errorlog For More Info.
|
||||||
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||||
|
}
|
||||||
|
Message = API Response:`n%Status% ; Output returned data to ErrorLog File
|
||||||
|
SaveOrPostProgress(Message:=Message,PostType:=",ErrorLoggingTextFile")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
; SaveOrPostProgress(Message:="Video Links posted to #Videos Successfully.",PostType:="Tooltip,ErrorLoggingTextFile")
|
|
||||||
Message = Video Links Posted to Telegram Successfully
|
Message = Video Links Posted to Telegram Successfully
|
||||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile")
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile")
|
||||||
GuiControl,, PostToTelegramButton, Telegram - Posted Successfully
|
GuiControl,, PostToDiscordTelegramButton, Telegram - Posted Successfully
|
||||||
|
|
||||||
|
|
||||||
; sleep, 2000
|
|
||||||
|
|
||||||
|
|
||||||
ToolTip
|
ToolTip
|
||||||
CurrentSite :=
|
CurrentSite :=
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ try CurrentURL := driver.URL
|
|||||||
if(InStr(CurrentURL, "/login.php")){
|
if(InStr(CurrentURL, "/login.php")){
|
||||||
|
|
||||||
if(AutoLogin){
|
if(AutoLogin){
|
||||||
Message = Logging in Automatically by clicking into the UN+PW fields for info to register
|
Message = Trying to Log in Automatically by clicking into the UN+PW fields for info to register from Password Manager
|
||||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile")
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile")
|
||||||
|
|
||||||
; have to click into username and password field for page to register that there's input
|
; have to click into username and password field for page to register that there's input
|
||||||
@@ -39,11 +39,12 @@ if(InStr(CurrentURL, "/login.php")){
|
|||||||
js = document.querySelector("button[type='submit']").click();
|
js = document.querySelector("button[type='submit']").click();
|
||||||
driver.executeScript(js)
|
driver.executeScript(js)
|
||||||
|
|
||||||
|
|
||||||
; Do a double check to make sure that login worked
|
; Do a double check to make sure that login worked
|
||||||
Message = Checking Login Status
|
Message = Checking Login Status
|
||||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||||
|
|
||||||
|
sleep, 5000
|
||||||
|
|
||||||
try CurrentURL := driver.URL
|
try CurrentURL := driver.URL
|
||||||
|
|
||||||
if(!InStr(CurrentURL, "/upload")){
|
if(!InStr(CurrentURL, "/upload")){
|
||||||
@@ -67,11 +68,10 @@ if(InStr(CurrentURL, "/login.php")){
|
|||||||
sleep, 5000
|
sleep, 5000
|
||||||
}
|
}
|
||||||
|
|
||||||
; CheckForAlerts()
|
|
||||||
|
|
||||||
Message = Uploading Video File
|
Message = Uploading Video File
|
||||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||||
; SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile")
|
|
||||||
|
|
||||||
Xpath = //input[@id='Filedata']
|
Xpath = //input[@id='Filedata']
|
||||||
Status := Selenium_LoopToSendValueToXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000,StringTextContent:=VideoFilepath)
|
Status := Selenium_LoopToSendValueToXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000,StringTextContent:=VideoFilepath)
|
||||||
@@ -84,6 +84,9 @@ if(Status){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Message = Inputting Video Information
|
||||||
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||||
|
|
||||||
; Input Title
|
; Input Title
|
||||||
try driver.findElementsByName("title").item[1].SendKeys(VideoTitle) ;selects element based on Name and sends variable to it.
|
try driver.findElementsByName("title").item[1].SendKeys(VideoTitle) ;selects element based on Name and sends variable to it.
|
||||||
catch e {
|
catch e {
|
||||||
@@ -117,63 +120,36 @@ Loop, 5 { ; Attempt to input video description a couple of times
|
|||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
; Input Primary Category
|
||||||
|
Xpath = (//input[@placeholder='- Primary category -'])[1]
|
||||||
|
try, driver.FindElementByXPath(Xpath).SendKeys("Podcasts").SendKeys(driver.Keys.ENTER)
|
||||||
|
|
||||||
|
/*
|
||||||
|
; Skip the channel selection for now
|
||||||
; sleep, 5000
|
; Rumble now has a "Set this channel as default" checkbox
|
||||||
|
|
||||||
|
|
||||||
Message = Selecting Channel
|
Message = Selecting Channel
|
||||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile")
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile")
|
||||||
|
|
||||||
|
; Get list of channels and select the second one in the list
|
||||||
|
; First is the user profile
|
||||||
|
; Second is the Normal Channel
|
||||||
|
|
||||||
|
Xpath = (//fieldset[@id='channelId'])[1]
|
||||||
|
Try Channels := driver.findelementbyxpath(Xpath).Attribute("innerText") ;XPATH Inner Text
|
||||||
|
UploadChannelName := StrSplit(Channels, "`n")[2]
|
||||||
|
|
||||||
; try driver.findElementsByID("channelId").item[1].click()
|
if(!UploadChannelName){
|
||||||
|
Message = Failed to Grab Upload Channel Name
|
||||||
; @todo replace with regex
|
SaveOrPostProgress(Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||||
js = return document.querySelector("#channelId").innerHTML;
|
|
||||||
try, ChannelIDNumber := driver.executeScript(js)
|
|
||||||
; Msgbox % "ChannelIDNumber: " ChannelIDNumber
|
|
||||||
ChannelIDNumber := StrSplit(ChannelIDNumber, "option value=")
|
|
||||||
|
|
||||||
; Msgbox % "ChannelIDNumber: " ChannelIDNumber
|
|
||||||
|
|
||||||
ChannelIDNumber := ChannelIDNumber[3]
|
|
||||||
; Msgbox % "ChannelIDNumber: " ChannelIDNumber
|
|
||||||
|
|
||||||
SingleQuote = "
|
|
||||||
ChannelIDNumber := StrSplit(ChannelIDNumber, "data-private")
|
|
||||||
ChannelIDNumber := ChannelIDNumber[1]
|
|
||||||
ChannelIDNumber := StrReplace(ChannelIDNumber, SingleQuote, "")
|
|
||||||
ChannelIDNumber := StrReplace(ChannelIDNumber, " ", "")
|
|
||||||
|
|
||||||
; Msgbox % "ChannelIDNumber: " ChannelIDNumber
|
|
||||||
|
|
||||||
|
|
||||||
; js = return document.querySelector("#channelId").value;
|
|
||||||
; try, ChannelIDNumber := driver.executeScript(js)
|
|
||||||
; Msgbox % "ChannelIDNumber: " ChannelIDNumber
|
|
||||||
if(ChannelIDNumber = ""){
|
|
||||||
Message = ChannelIDNumber is blank. Unable to select Upload Channel
|
|
||||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
|
||||||
SaveDriverURLOFErrorPage()
|
|
||||||
Return
|
Return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
; //option[@value='762377'] ; freedomain
|
Xpath = (//label[normalize-space()='%UploadChannelName%'])[1]
|
||||||
Xpath = //option[@value='%ChannelIDNumber%']
|
Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000)
|
||||||
try driver.FindElementByXPath(Xpath).click()
|
|
||||||
catch e {
|
|
||||||
Message = Failed to click on Channel using %ChannelIDNumber%.
|
|
||||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
|
||||||
SaveDriverURLOFErrorPage()
|
|
||||||
Return
|
|
||||||
; SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
|
||||||
; SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
; Input Tags
|
; Input Tags
|
||||||
Message = Inputting Tags
|
Message = Inputting Tags
|
||||||
|
|||||||
64
README.md
64
README.md
@@ -1,16 +1,28 @@
|
|||||||
# Freedomain-Video-Uploader
|
# Automated Video and Podcast Uploading to Multiple Sites using Autohotkey, Selenium, and Platform APIs
|
||||||
|
|
||||||
Video Uploader written for the [Freedomain Philosophy Show](https://freedomain.com/)
|

|
||||||
|
|
||||||

|
# Supported Platforms
|
||||||
|
| Platform | Upload Type |
|
||||||
|
|--|--|
|
||||||
|
| Locals | Video Upload w/Selenium |
|
||||||
|
| Bitchute | Video Upload w/Selenium |
|
||||||
|
| Rumble | Video Upload w/Selenium |
|
||||||
|
| DailyMotion | Video Upload w/Selenium |
|
||||||
|
| Brighteon | Video Upload w/Selenium |
|
||||||
|
| Odysee | Video + Audio Upload w/LBRY API |
|
||||||
|
| FDRPodcasts | Podcast w/Selenium |
|
||||||
|
| Discord | Announcement w/API |
|
||||||
|
| Telegram | Announcement w/API |
|
||||||
|
|
||||||
|
## Other Features
|
||||||
## Features
|
- Install Uploader Updates from Gitea automatically
|
||||||
Automated posting to the following media platform using either the Platform's API or Selenium Chrome automation.
|
- Install Chrome Updates from chromium.org automatically
|
||||||
|
- Schedule Posts for a later date & time
|
||||||
|**Locals**|**Bitchute**|**Rumble**|**DailyMotion**|**Brighteon**|**Odysee**
|
- Log Errors to a Discord Channel using webhook
|
||||||
|--|--|--|--|--|--|
|
- Discord Ping on Upload Completion
|
||||||
|Selenium|Selenium|Selenium|Selenium|Selenium|LBRY API
|
- Setting to confirm an upload before it's published
|
||||||
|
- Setting to show Tooltip progress at top of the screen showing current action being executed
|
||||||
|
|
||||||
# Installation
|
# Installation
|
||||||
1. Install .Net Framework 3.5
|
1. Install .Net Framework 3.5
|
||||||
@@ -28,14 +40,11 @@ Automated posting to the following media platform using either the Platform's AP
|
|||||||
- When run, the Uploader will automatically create the folders and files it requires in the same directory it's run from.
|
- When run, the Uploader will automatically create the folders and files it requires in the same directory it's run from.
|
||||||
|
|
||||||
# Using Portable Version of Chrome
|
# Using Portable Version of Chrome
|
||||||
Using a portable version of Chrome will give you full control over chrome and chromedriver updates.
|
Using Selenium with a portable `Chrome for Testing` version of Chrome is the preferred way of uploading as it gives you full control over chrome and chromedriver updates and when to install them.
|
||||||
|
- When running the uploader for the first time, you will be notified that `Chrome for Testing` was not found and that you can download it by clicking the `Chrome Up to Date` button. This will automatically get the latest version of Chrome and download + extract it to the the `\lib\` folder. It will also download the appropriate `chromedriver.exe` file for that version and prompt you for admin permission to move it to `C:\Program Files\SeleniumBasic\chromedriver.exe`.
|
||||||
|
|
||||||
The Uploader will check for a portable version of Chrome first, before defaulting to the system installation
|
# Windows Defender False Positive
|
||||||
|
Windows Defender will sometimes flag the compiled .exe version as a false positive. The easiest way to get around this is to whitelist the directory the folder where you're keeping the Uploader files in. To do this, open up `Windows Powershell` as Administrator and run the following command: `Add-MpPreference -ExclusionPath "PATHTOTHEFOLDER"`, eg: `Add-MpPreference -ExclusionPath "C:\Users\yuriy\Downloads\VideoUploader"`
|
||||||
1. To use a portable version of Chrome, download the latest version Chrome version that has a chromedriver from [Chrome-for-Testing](https://googlechromelabs.github.io/chrome-for-testing/latest-versions-per-milestone-with-downloads.json), extract the `chrome-win64.zip` file and move the extracted folder to the `\Lib\` directory:
|
|
||||||
The resulting chrome filepath should be `..\Freedomain-Video-Uploader-Folder\Lib\chrome-win64\chrome.exe`
|
|
||||||
|
|
||||||
2. Download the `win64` chromedriver for the same version and move it to `C:\Program Files\SeleniumBasic\chromedriver.exe`
|
|
||||||
|
|
||||||
# Settings File
|
# Settings File
|
||||||
The Uploader reads & saves its settings to a `settings.ini` file, All customization, including custom profile URLs are stored here.
|
The Uploader reads & saves its settings to a `settings.ini` file, All customization, including custom profile URLs are stored here.
|
||||||
@@ -71,6 +80,15 @@ You can select a different file in the main window if the auto selection does no
|
|||||||
`*.jpg` or `*.png` file which will be the thumbnail for your video/podcast<br>
|
`*.jpg` or `*.png` file which will be the thumbnail for your video/podcast<br>
|
||||||
|
|
||||||
|
|
||||||
|
# LBRY Desktop Application `daemon_settings.yml`
|
||||||
|
Due to the LBRY Video Platform being discontinued, the default daemon_settings that come with the LBRY Desktop application might no longer work for you due to the servers being offline.
|
||||||
|
To fix this, add the Odysee server to the top of the list of `lbryum_servers` in the following file: `C:\Users\YOURUSERNAMEHERE\AppData\Local\lbry\lbrynet\daemon_settings.yml` [Source](https://www.reddit.com/r/lbry/comments/11zwtmj/is_lbry_down/)
|
||||||
|
```
|
||||||
|
lbryum_servers:
|
||||||
|
- a-hub1.odysee.com:50001
|
||||||
|
- spv11.lbry.com:50001
|
||||||
|
- spv19.lbry.com:50001
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
# Uncaught Errors
|
# Uncaught Errors
|
||||||
@@ -83,7 +101,13 @@ I have done my best to catch any possible errors that might pop up and write fun
|
|||||||
2. `git clone` the project and then either run the `Compile Uploader to EXE.ahk` autohotkey script to automatically compile, or start up the AHK compiler that comes installed with Autohotkey and select the `Freedomain Video Uploader.ahk` and `\Assets\FreedomainVideo.ico` icon.
|
2. `git clone` the project and then either run the `Compile Uploader to EXE.ahk` autohotkey script to automatically compile, or start up the AHK compiler that comes installed with Autohotkey and select the `Freedomain Video Uploader.ahk` and `\Assets\FreedomainVideo.ico` icon.
|
||||||
|
|
||||||
|
|
||||||
# Extra Tools
|
# Helper Tools
|
||||||
## LBRY-Process-Killer
|
The following tools will be automatically downloaded from Gitea as needed in order to do the following actions.
|
||||||
|
|
||||||
Autohotkey script that continuously reads the lbrynet.log for when your videos are fully uploaded/seeded to lbry and then kills the LBRY process.
|
## LBRY-Process-Killer
|
||||||
|
Program that continuously reads the lbrynet.log for when your videos are fully uploaded/seeded to lbry and then kills the LBRY process. This can be be disabled using the `Kill LBRY after Uploading` checkbox on the main screen
|
||||||
|
|
||||||
|
## Post Scheduler
|
||||||
|
Program that continually checks the `Scheduled Posts` folder and automatically starts the Uploader with the specific video/post at the specified scheduled time.
|
||||||
|
|
||||||
|
##
|
||||||
@@ -1,3 +1,3 @@
|
|||||||
[Video-Uploader]
|
[Video-Uploader]
|
||||||
Version=3.34
|
Version=3.53
|
||||||
Name=Freedomain Video Uploader
|
Name=Freedomain Video Uploader
|
||||||
|
|||||||
Reference in New Issue
Block a user