Compare commits
34 Commits
3a09929e6e
...
3.32
| Author | SHA1 | Date | |
|---|---|---|---|
| 7acefafdc7 | |||
| 2cd1b0de84 | |||
| d01ce11347 | |||
| d546628d8a | |||
| 4940d18946 | |||
| 679e698435 | |||
| 646d5994df | |||
| 15e5328d1e | |||
| ad232d4d44 | |||
| 0f679a0792 | |||
|
b0290eef6e
|
|||
| 678ba3d495 | |||
| 1d926a91a7 | |||
| 9ec17b0ead | |||
| 03c75ab073 | |||
| a1dc003cdc | |||
| 1aba6a650a | |||
| adeb7a9df1 | |||
| aa1110a780 | |||
|
4b39f927d3
|
|||
|
3a0b6921f6
|
|||
| 08eff7166a | |||
| 8c34e1de09 | |||
|
54b8670438
|
|||
|
|
8d650d3856 | ||
|
|
c8a5e6a286 | ||
|
|
4a6d719a3e | ||
|
|
9f11fd5f00 | ||
| ea91ebb237 | |||
| edb3ad07c8 | |||
| 263fb222e9 | |||
| 45b27311d4 | |||
| 5052713c55 | |||
| 180f89909e |
5
.gitignore
vendored
5
.gitignore
vendored
@@ -2,6 +2,10 @@ Settings.ini
|
||||
VideoLinks.ini
|
||||
body.txt
|
||||
**/ErrorLogging
|
||||
**/chrome-win64
|
||||
**/Downloads
|
||||
**/Chromedriver-Mover.exe
|
||||
**/ChromedriverMover.ini
|
||||
**/Test Videos
|
||||
**/Backups
|
||||
**/Debug
|
||||
@@ -14,3 +18,4 @@ Compile Scripts to EXE.ahk
|
||||
Freedomain Video Uploader.exe
|
||||
Lib/LBRY Process Killer.exe
|
||||
Lib/chrome-win64
|
||||
Lib/Version.ini
|
||||
2
.gitmodules
vendored
2
.gitmodules
vendored
@@ -1,3 +1,3 @@
|
||||
[submodule "Lib/Freedomain-Posters-Shared-Functions"]
|
||||
path = Lib/Freedomain-Posters-Shared-Functions
|
||||
url = https://git.freedomainplaylists.com/yuriy/Freedomain-Posters-Shared-Functions.git
|
||||
url = https://freedomain.dev/yuriy/posters-shared-functions.git
|
||||
|
||||
@@ -35,6 +35,16 @@ ScriptToCompile = SocialMediaPoster
|
||||
AHKFilepath = %A_ScriptDir%\Freedomain Video Uploader.ahk
|
||||
Exefilepath = %A_ScriptDir%\Freedomain Video Uploader.exe
|
||||
icopath = %A_ScriptDir%\Assets\FreedomainVideo.ico
|
||||
VersionIniFP = %A_ScriptDir%\Version.ini
|
||||
|
||||
|
||||
|
||||
; 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)
|
||||
; Msgbox % "VersionNumber: " VersionNumber
|
||||
IniWrite, %VersionNumber%, %VersionIniFP%,Video-Uploader, Version
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -6,13 +6,20 @@ SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
|
||||
CoordMode, ToolTip, Screen
|
||||
CoordMode, Mouse, Screen
|
||||
FileEncoding, UTF-8-RAW ; Needed for special symbols that are used in video descritions
|
||||
|
||||
; Only Set tool tray icon if this is the source .ahk script.
|
||||
; The .exe has the icon compiled into it
|
||||
if(InStr(A_ScriptFullPath, ".ahk")){
|
||||
try Menu, Tray, Icon, %A_ScriptDir%\Assets\FreedomainVideo.ico
|
||||
}
|
||||
|
||||
; Parameter passed in to script
|
||||
; ------------------------------------------------
|
||||
PassedParameter = %1%
|
||||
|
||||
; Add menus to the toolbar icon
|
||||
|
||||
; Customize the Toolbar Icon Menu
|
||||
; ------------------------------------------------
|
||||
Menu, tray, NoStandard
|
||||
|
||||
Menu, Tray, Add, Exit, KillScript
|
||||
@@ -23,21 +30,12 @@ Menu, Tray, Add, Open New Project, ReloadScript
|
||||
Menu, Tray, Add, Restart with Last Project, RetryUpload
|
||||
Menu, Tray, Default, Restart with Last Project
|
||||
|
||||
|
||||
global ScriptName
|
||||
global ScriptVersion
|
||||
global FullScriptName
|
||||
|
||||
|
||||
|
||||
ScriptName = Freedomain Video Uploader
|
||||
ScriptVersion = 3.21
|
||||
FullScriptName := ScriptName . " - " . ScriptVersion
|
||||
|
||||
|
||||
; Track how long sections of code take to run
|
||||
UStartTime := A_TickCount ; start time
|
||||
|
||||
; Included Files - These have to be included at the top for the Global variables to get registered early?
|
||||
; Included FIles and Libraries
|
||||
; ------------------------------------------------
|
||||
; These have to be included at the top for the Global variables to get registered early
|
||||
#Include %A_ScriptDir%\Lib\Freedomain-Posters-Shared-Functions\General-Functions.ahk
|
||||
#Include %A_ScriptDir%\Lib\Freedomain-Posters-Shared-Functions\Selenium-Functions.ahk
|
||||
#Include %A_ScriptDir%\Lib\Freedomain-Posters-Shared-Functions\Chrome-Functions.ahk
|
||||
@@ -47,29 +45,14 @@ UStartTime := A_TickCount ; start time
|
||||
#Include %A_ScriptDir%\Lib\Freedomain-Posters-Shared-Functions\RunCMD.ahk
|
||||
#include %A_ScriptDir%\Lib\Freedomain-Posters-Shared-Functions\StdOutToVar.ahk
|
||||
#include %A_ScriptDir%\Lib\Freedomain-Posters-Shared-Functions\Zip.ahk
|
||||
#include %A_ScriptDir%\Lib\Freedomain-Posters-Shared-Functions\URLDownloadToVar.ahk
|
||||
|
||||
|
||||
;---ToDo---
|
||||
;------------------------------------------------
|
||||
; @todo: Update Locals Share link grabbing
|
||||
; @todo: fix uploader saying there's been failures b/c there was no lbry audio upload
|
||||
; @todo: finish telegram multi-message split functionality.
|
||||
; @todo: add different icon when update is available
|
||||
; @todo: fix telegram post getting cut off if too long instead of splitting into 2
|
||||
; @todo: let user make last minute changes to text before submitting to telegram and discord
|
||||
; @todo: replace all .Attribute("innerText") with js
|
||||
; @todo: Fix locals not grabbing url if a post is pinned
|
||||
; @todo: Add an input box for sources in the new frontend
|
||||
; @todo: Add login check for each website and ability to auto login
|
||||
; @todo: ; add to statistics in statusbar - length of philosophy uploaded... total hours uploaded?
|
||||
; @todo: Bitchute has a 5k char limit for description as well. split description to remove reocurring bits and Add freedomainpodcasts.com/podcast/# link if still not big enough
|
||||
; @todo: Split long discord/telegram messages into multiple messages
|
||||
; @todo: Redo Discord posting with "PostErrors" function from social media poster
|
||||
; @todo: Save updates made to GUi text to .ini file on changes
|
||||
; @todo: add a SaveDriverURL() next to each RETURN in the code so reusable tabs can be grouped together
|
||||
|
||||
;---Global Variables---
|
||||
;------------------------------------------------
|
||||
global ScriptNameav
|
||||
global ScriptVersion
|
||||
global FullScriptName
|
||||
global LBRYResolveAPICommand
|
||||
global LBRYPermanentURL
|
||||
global VideoTitle
|
||||
@@ -109,7 +92,7 @@ Number_of_loops_to_Check_Upload_status = 720
|
||||
|
||||
; number of seconds to wait between loops when checking video upload status
|
||||
global Time_Between_Loops_Upload_Status
|
||||
Time_Between_Loops_Upload_Status = 5000
|
||||
Time_Between_Loops_Upload_Status = 15000 ;
|
||||
|
||||
; loop Index number to check if video is stuck uploading
|
||||
global Array_Index_Num_of_Upload_StatusChecks
|
||||
@@ -126,21 +109,25 @@ FileCreateDir, %ErrorLoggingFolder%
|
||||
global SettingsIniFilepath
|
||||
SettingsIniFilepath := A_ScriptDir . "\Settings.ini"
|
||||
|
||||
global ChangelogIniFilepath
|
||||
ChangelogIniFilepath := A_ScriptDir . "\Lib\FreedomScriptsChangelogINI"
|
||||
|
||||
global ScriptSettingsSection
|
||||
ScriptSettingsSection := "VideoUploader"
|
||||
|
||||
|
||||
FileInstall, Version.ini, %A_ScriptDir%\Lib\Version.ini, 1
|
||||
IniRead, ScriptVersion, %A_ScriptDir%\Lib\Version.ini,Video-Uploader, Version, 0.0
|
||||
IniRead, ScriptName, %A_ScriptDir%\Lib\Version.ini,Video-Uploader, Name, "Video Uploader"
|
||||
|
||||
FullScriptName := ScriptName . " - " . ScriptVersion
|
||||
|
||||
|
||||
;---Script Settings---
|
||||
;------------------------------------------------
|
||||
; Checkbox Settings
|
||||
IniRead, ShowTooltipProgress, %SettingsIniFilepath%, General, ShowTooltipProgress, 1
|
||||
(ShowTooltipProgress)?(ShowTooltipProgressCheckStatus := 1) : (ShowTooltipProgressCheckStatus := 0)
|
||||
|
||||
IniRead, XPosition, %SettingsIniFilepath%, General, XPosition
|
||||
IniRead, YPosition, %SettingsIniFilepath%, General, YPosition
|
||||
IniRead, XPosition, %SettingsIniFilepath%, General, XPosition, 0
|
||||
IniRead, YPosition, %SettingsIniFilepath%, General, YPosition, 0
|
||||
|
||||
IniRead, RootDirToStartIn, %SettingsIniFilepath%, General, RootDirToStartIn
|
||||
IniRead, LogErrorsToMsgbox, %SettingsIniFilepath%, General, LogErrorsToMsgbox, %A_Space%
|
||||
@@ -189,11 +176,7 @@ if(DiscordErrorLoggingWebhookBotURL = ""){
|
||||
;---Auto Updater Settings---
|
||||
;------------------------------------------------
|
||||
global GitReleasesAPIURL
|
||||
GitReleasesAPIURL = https://git.freedomainplaylists.com/api/v1/repos/yuriy/Freedomain-Video-Uploader/releases
|
||||
|
||||
global GitReleasesLBRYKillerAPIURL
|
||||
GitReleasesLBRYKillerAPIURL = https://git.freedomainplaylists.com/api/v1/repos/yuriy/LBRY-Process-Killer/releases
|
||||
|
||||
GitReleasesAPIURL = https://freedomain.dev/api/v1/repos/yuriy/Freedomain-Video-Uploader/releases
|
||||
|
||||
|
||||
;---LBRY Settings---
|
||||
@@ -300,6 +283,11 @@ Loop, files, %VideoFolderDir%\*.*, F ; loop through the files in the director
|
||||
VideoFilepath := A_LoopFileFullPath
|
||||
SplitPath, A_LoopFileFullPath,,,, VideoFileNameNoExt
|
||||
FileGetSize, VideoFileSizeInMB, %A_LoopFileFullPath%, M
|
||||
|
||||
VideoInfoObj := Filexpro(VideoFilepath,
|
||||
, "System.Video.TotalBitrate" )
|
||||
VideoTotalBitrate := VideoInfoObj["System.Video.TotalBitrate"]
|
||||
|
||||
}
|
||||
|
||||
if(FileExt = "png" OR FileExt = "jpg"){
|
||||
@@ -313,7 +301,7 @@ if(VideoDescription = ""){
|
||||
}
|
||||
|
||||
; Loop through the folder again to find the correct .WAV audio file as Stef has multiple in there and we need the .mp4 file to be found first so we know what to look for file name wise.
|
||||
Loop, files, %VideoFolderDir%\*.WAV, F ; loop through the files in the directory
|
||||
Loop, files, %VideoFolderDir%\*.flac, F ; loop through the files in the directory
|
||||
{ ; D = Directories, F = Files, R = Recursive
|
||||
SplitPath, A_LoopFileFullPath, FileNameWExt, FileDir, FileExt, FileNameNoExt
|
||||
|
||||
@@ -322,7 +310,21 @@ Loop, files, %VideoFolderDir%\*.WAV, F ; loop through the files in the direct
|
||||
}
|
||||
}
|
||||
|
||||
; if no FLAC file, then loop through folder and select WAV file instead
|
||||
if(WavAudioFilepath = ""){
|
||||
; Loop through the folder again to find the correct .WAV audio file as Stef has multiple in there and we need the .mp4 file to be found first so we know what to look for file name wise.
|
||||
Loop, files, %VideoFolderDir%\*.WAV, F ; loop through the files in the directory
|
||||
{ ; D = Directories, F = Files, R = Recursive
|
||||
SplitPath, A_LoopFileFullPath, FileNameWExt, FileDir, FileExt, FileNameNoExt
|
||||
|
||||
if(FileNameNoExt = VideoFileNameNoExt){
|
||||
WavAudioFilepath := A_LoopFileFullPath
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
; Find the .mp3 podcast file
|
||||
Loop, files, %VideoFolderDir%\*.mp3, F ; loop through the files in the directory
|
||||
{ ; D = Directories, F = Files, R = Recursive
|
||||
SplitPath, A_LoopFileFullPath, FileNameWExt, FileDir, FileExt, FileNameNoExt
|
||||
@@ -332,9 +334,11 @@ Loop, files, %VideoFolderDir%\*.mp3, F ; loop through the files in the direct
|
||||
}
|
||||
}
|
||||
|
||||
;---Read Info From Previous Run (If Any)---
|
||||
;------------------------------------------------
|
||||
; @todo: Figure out a way to do this with an array
|
||||
|
||||
|
||||
|
||||
;---Read Info From Previous Run And Set Upload Options---
|
||||
;--------------------------------------------------------
|
||||
VideoLinksIniFile = %VideoFolderDir%\VideoLinks.ini
|
||||
|
||||
if(FileExist(VideoLinksIniFile)){
|
||||
@@ -371,6 +375,10 @@ if(FileExist(VideoLinksIniFile)){
|
||||
|
||||
; MISC
|
||||
IniRead, ErrorLoggingFilePath, %VideoLinksIniFile%, Misc, ErrorLoggingFilePath, %A_Space%
|
||||
IniRead, TempVideoThumbFilepath, %VideoLinksIniFile%, Misc, VideoThumbFilepath, %A_Space%
|
||||
if(TempVideoThumbFilepath){ ; if Video Thumbnail was saved in last run, overwrite variable path that was grabbed in the file loop above
|
||||
VideoThumbFilepath := TempVideoThumbFilepath
|
||||
}
|
||||
|
||||
if(VideoFileSizeInMB < 50){
|
||||
IniRead, Telegram, %VideoLinksIniFile%, Misc, Telegram, %A_Space%
|
||||
@@ -422,12 +430,15 @@ if(VideoFileSizeInMB > 6144){
|
||||
FacebookCheckStatus := 0
|
||||
TelegramCheckStatus := 0
|
||||
|
||||
;---/Read Info From Previous Run And Set Upload Options---
|
||||
;--------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
;---Testing Mode Overrides---
|
||||
;------------------------------------------------
|
||||
IniRead, TestingMode, %SettingsIniFilepath%, General, TestingMode, 0
|
||||
if(TestingMode){ ; save currently seelcted sites to ini file for next test
|
||||
if(TestingMode OR DevMode){ ; save currently seelcted sites to ini file for next test
|
||||
; IniRead, Streamanity, %SettingsIniFilepath%, Testing, Streamanity, %A_Space%
|
||||
; (Streamanity)?(StreamanityCheckStatus := 1) : (StreamanityCheckStatus := 0)
|
||||
IniRead, BitChute, %SettingsIniFilepath%, Testing, BitChute, %A_Space%
|
||||
@@ -470,320 +481,9 @@ if(PassedParameter = "ShowResults"){
|
||||
}
|
||||
|
||||
|
||||
;---GUI Variables---
|
||||
; Main GUI Window
|
||||
; ------------------------------------------------
|
||||
GuiHeight = 800
|
||||
GuiWidth = 1366
|
||||
GuiFontSize = 10
|
||||
|
||||
ButtonHeights := 30
|
||||
|
||||
MarginSpace := 10
|
||||
MarginSpaceDoubled := MarginSpace * 2
|
||||
MarginSpaceTripled := MarginSpace * 3
|
||||
|
||||
EditBoxWidths := (GuiWidth / 100) * 60
|
||||
EditBoxHalfWidths := (EditBoxWidths / 2) - (MarginSpace / 2)
|
||||
OdyseeURLSlugEditWidth := (EditBoxHalfWidths / 4) * 3
|
||||
|
||||
PodcastNumberTextXPos := EditBoxHalfWidths + OdyseeURLSlugEditWidth + (MarginSpace * 3)
|
||||
PodcastNumberEditWidth := (EditBoxHalfWidths / 4) - MarginSpace
|
||||
|
||||
EditBoxOneFourthWidth := (EditBoxWidths / 4 )
|
||||
EditBoxThreeFourthsWidth := (EditBoxWidths / 4 ) * 3
|
||||
|
||||
|
||||
ColumnOneHalfWidthXPos := EditBoxHalfWidths + MarginSpaceDoubled
|
||||
|
||||
EditBoxThirdsWidths := (EditBoxWidths / 3) - (MarginSpace / 2)
|
||||
OdyseeURLSlugXPos := EditBoxHalfWidths + (MarginSpace * 2)
|
||||
|
||||
EditBoxFourthWidths := (EditBoxWidths / 4) - (MarginSpace - 2)
|
||||
VideoTagsTextXPos := EditBoxHalfWidths + (MarginSpace * 2)
|
||||
|
||||
; EditBoxHalfWidthsWithMargin := (EditBoxWidths / 2)
|
||||
DescriptionCharCountXPos := EditBoxWidths - 40
|
||||
|
||||
PageTwoXStartPos := EditBoxWidths + 50
|
||||
|
||||
CopyButtonWidths := 150
|
||||
ResultEditBoxXPos := CopyButtonWidths + MarginSpace + 5
|
||||
ResultEditBoxWidths := EditBoxWidths - CopyButtonWidths
|
||||
|
||||
ResultEditBoxHalfWidths := (ResultEditBoxWidths / 2) - (MarginSpace /2)
|
||||
ResultLBRYURLEditBoxWidthPieces := (ResultEditBoxWidths / 4)
|
||||
ResultLBRYURLEditBoxWidths := ResultLBRYURLEditBoxWidthPieces * 3
|
||||
|
||||
ResultEditBoxThirdsWidths := (ResultEditBoxWidths / 3) - (MarginSpace /3)
|
||||
|
||||
|
||||
ResultLBRYThumbEditBoxWidth := ResultLBRYURLEditBoxWidthPieces - 5
|
||||
|
||||
ErrorLogEditBoxXPos := ResultEditBoxWidths + CopyButtonWidths + 30
|
||||
ErrorLogEditBoxHeight := GuiHeight - (MarginSpace * 20) - (ButtonHeights * 2)
|
||||
ErrorLogEditBoxWidth := GuiWidth - ErrorLogEditBoxXPos - (MarginSpace * 12)
|
||||
|
||||
|
||||
ButtonWidths := 150
|
||||
ButtonXPos := GuiWidth - ButtonWidths - 15
|
||||
|
||||
SubmitButtonYLocation := GuiHeight - 50
|
||||
SubmitButtonXLocation := GuiWidth - 90
|
||||
CancelButtonXLocation := GuiWidth - 180
|
||||
|
||||
EditBoxHeight := 25
|
||||
ThumbnailPreviewWidth := 300
|
||||
PageTwoGroupBoxWidth := ThumbnailPreviewWidth + 20
|
||||
|
||||
; Size of Description Edit Box and the location of the checkboxes underneath them
|
||||
VideoDescriptionEditBoxHeight = 100
|
||||
CheckboxesStartYPos := 630
|
||||
|
||||
FilePathEditBoxWidths := EditBoxWidths - MarginSpace - 70
|
||||
SelectFileButtonWidths := 30
|
||||
|
||||
ButtonStartYPos := CheckboxesStartYPos + 10
|
||||
MarginSquared := MarginSpace * 2
|
||||
|
||||
if(DevMode){
|
||||
MainButtonHeight := 30
|
||||
SecondaryButtonHeights := 30
|
||||
|
||||
}
|
||||
else, {
|
||||
MainButtonHeight := 30
|
||||
SecondaryButtonHeights := 35
|
||||
}
|
||||
|
||||
|
||||
; -------------------------------GUI-------------------------------
|
||||
|
||||
Gui, Font, s%GuiFontSize%
|
||||
Gui, Margin, %MarginSpace%, %MarginSpace%
|
||||
|
||||
; Video Title
|
||||
Gui, Font, Bold
|
||||
Gui, Add, Text,, Show Title
|
||||
Gui, Add, Text, x%ColumnOneHalfWidthXPos% yp+0,Odysee URL Slug
|
||||
Gui, Add, Text, x%PodcastNumberTextXPos% yp+0,Podcast #
|
||||
|
||||
|
||||
Gui, Font, Normal
|
||||
Gui, Add, Edit, y+5 x%MarginSpace% 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+%Marginspace% w%PodcastNumberEditWidth% h%EditBoxHeight% gUpdateVars vPodcastNumber, %PodcastNumber%
|
||||
|
||||
; LBRY URL
|
||||
Gui, Font, Bold
|
||||
Gui, Add, Text, x%Marginspace%,Video Tags
|
||||
Gui, Add, Text,x%ColumnOneHalfWidthXPos% yp+0,Podcast Tags
|
||||
|
||||
Gui, Font, Normal
|
||||
Gui, Add, Edit, x%Marginspace% Y+5 w%EditBoxHalfWidths% h%EditBoxHeight% gUpdateVars vVideoTags, %VideoTags%
|
||||
Gui, Add, Edit, yp+0 x+%Marginspace% w%EditBoxHalfWidths% h%EditBoxHeight% gUpdateVars vPodcastTags, %PodcastTags%
|
||||
|
||||
|
||||
; Video Description
|
||||
Gui, Font, Bold
|
||||
|
||||
if(NoOriginalVideoDescription)
|
||||
Gui, Add, Text,cRed y+%Marginspace% x%Marginspace%,Video Description
|
||||
else,
|
||||
Gui, Add, Text,y+%Marginspace% x%Marginspace%,Video Description:
|
||||
|
||||
|
||||
if(TestingMode)
|
||||
Gui, Add, Text,cRed yp+0 xp+150 ,TESTING MODE
|
||||
|
||||
if(DevMode)
|
||||
Gui, Add, Text,cRed yp+0 xp+150 ,DEV MODE
|
||||
|
||||
Gui, Font, Normal
|
||||
Gui, Add, Edit,x%Marginspace% y+2 w%EditBoxWidths% h%VideoDescriptionEditBoxHeight% vVideoDescription gSubmitDescription,%VideoDescription%
|
||||
gui, font, s8
|
||||
Gui, font, Bold
|
||||
if(DescriptionCharCount > 3000){
|
||||
Gui, Add, Edit,cRed w50 h20 x%DescriptionCharCountXPos% y+1 vDescriptionCharCount, %DescriptionCharCount%
|
||||
}
|
||||
else,
|
||||
Gui, Add, Edit, w50 h20 x%DescriptionCharCountXPos% y+1 vDescriptionCharCount, %DescriptionCharCount%
|
||||
Gui, Font, Normal
|
||||
Gui, Add,Text, yp+3 xp-310, (Platform Char. Limits: DM+Bitchute = 3K, Odysee,Brighteon = 5K)
|
||||
Gui, Font, s%GuiFontSize%
|
||||
Gui, font, Bold
|
||||
Gui, Add, GroupBox,r8.5 x%MarginSpace% yp+10 w%EditBoxWidths% Center, Filepaths
|
||||
|
||||
; Video Filepath
|
||||
Gui, Font, Bold
|
||||
Gui, Add, Text,xp+5 yp+15,Video Filepath
|
||||
Gui, Font, Normal
|
||||
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
|
||||
|
||||
; Video Thumbnail Filepath
|
||||
Gui, Font, Bold
|
||||
if(NoOriginalVideoThumbFilepath)
|
||||
Gui, Add, Text, x%MarginSquared% CRed y+15,Video Thumbnail Filepath
|
||||
else,
|
||||
Gui, Add, Text,y+15 x%MarginSquared% ,Video Thumbnail Filepath
|
||||
Gui, Font, Normal
|
||||
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
|
||||
; WAV Audio File Filepath
|
||||
Gui, Font, Bold
|
||||
if(WavAudioFilepath = "")
|
||||
Gui, Add, Text,cRed x%MarginSquared% y+15,WAV Filepath
|
||||
else,
|
||||
Gui, Add, Text,x%MarginSquared% y+15,WAV Filepath
|
||||
Gui, Font, Normal
|
||||
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, Font, Bold
|
||||
if(MP3AudioFilepath = "")
|
||||
Gui, Add, Text,cRed x%MarginSquared% y+15,Podcast MP3 Filepath
|
||||
else,
|
||||
Gui, Add, Text,x%MarginSquared% y+15,Podcast MP3 Filepath
|
||||
Gui, Font, Normal
|
||||
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
|
||||
|
||||
|
||||
; Submit Button
|
||||
Gui, Font, s%GuiFontSize%
|
||||
gui, Font, Bold
|
||||
|
||||
; if(DevMode)
|
||||
; Gui, Add, Button, x%MarginSpace% w%EditBoxHalfWidths% y+25 h%MainButtonHeight% gCancelPost hwndIcon, Close
|
||||
; else,
|
||||
|
||||
|
||||
; Script Update Button
|
||||
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, Font, s20
|
||||
; Gui, Font, Bold
|
||||
Gui, Add, Button, x+%MarginSpace% w%EditBoxHalfWidths% h%SecondaryButtonHeights% gStartScript, UPLOAD
|
||||
|
||||
|
||||
Gui, Font, s%GuiFontSize%
|
||||
|
||||
; Chrome Update Button
|
||||
if(ChromeUpdateAvailable){
|
||||
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){
|
||||
Gui, Add, Button, x%MarginSpace% w%EditBoxFourthWidths% h30 y+5 h%SecondaryButtonHeights% gOpenErrorLog, Open ErrorLog
|
||||
Gui, Add, Button, x+%MarginSpace% w%EditBoxFourthWidths% h30 h%SecondaryButtonHeights% gClearVideoLinks, Clear VideoLinks
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
; -------------------------------Page 2 Side of Main GUI Window-------------------------------
|
||||
LineSplitXPosition := PageTwoXStartPos - ( MarginSpace * 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/
|
||||
; Thumbnail Preview
|
||||
Gui, Font, Normal
|
||||
gui, Font, s4
|
||||
; Miscellaneous Settings
|
||||
DevModToggleButton := PageTwoXStartPos + 160
|
||||
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+5 y5 w50 h10 gOpenGiteaPage, Gitea
|
||||
|
||||
Gui, Font, s%GuiFontSize%
|
||||
Gui, Font, Bold
|
||||
|
||||
; Settings Section
|
||||
Gui, Add, GroupBox,r5 y+0 x%PageTwoXStartPos% w%PageTwoGroupBoxWidth%,Settings
|
||||
Gui, Add, Checkbox, xp+10 yp+20 vAutoUpdateCheck gUpdateVars Checked%AutoUpdateCheckCheckStatus%, Auto Update Check
|
||||
Gui, Add, Checkbox, vShowTooltipProgress Checked%ShowTooltipProgressCheckStatus% gUpdateVars,Show Tooltip Progress
|
||||
Gui, Add, Checkbox, vKillLBRYAfterUpload Checked%KillLBRYAfterUploadCheckStatus%, Kill LBRY After Uploading
|
||||
Gui, Add, Checkbox, vAutoLogin gUpdateVars Checked%AutoLoginCheckStatus%, Try to Login Automatically
|
||||
Gui, Add, Checkbox, vPingOnCompletion gUpdateVars Checked%PingOnCompletionCheckStatus%, Discord Ping Upon Completion
|
||||
|
||||
|
||||
GroupBoxCheckboxPos := PageTwoXStartPos + MarginSpace
|
||||
|
||||
; -------------------------------PLATFORMS-------------------------------
|
||||
Gui, Add, GroupBox,r6 y+%MarginSpaceTripled% x%PageTwoXStartPos% w%PageTwoGroupBoxWidth%, Platforms
|
||||
|
||||
; Msgbox % "LocalsURL: " LocalsURL
|
||||
; if(VideoFileSizeInMB < 1792)
|
||||
; Gui, Add, Checkbox, x+%MarginSpaceDoubled% vFacebook Checked%FacebookCheckStatus%, Facebook
|
||||
|
||||
Gui, Add, Checkbox, xp+10 yp+25 vBitChute Checked%BitChuteCheckStatus%, BitChute
|
||||
|
||||
if(LocalsURL = "LocalsUploadStartedNeedToGrabURL"){
|
||||
Gui, Add, Checkbox, x+%MarginSpaceTripled% yp+0 vLocalsGrabURL Checked%LocalsCheckStatus%, Locals (Grab URL)
|
||||
}
|
||||
else, {
|
||||
Gui, Add, Checkbox, x+%MarginSpaceTripled% yp+0 vLocals Checked%LocalsCheckStatus%, Locals
|
||||
}
|
||||
|
||||
if(VideoFileSizeInMB < 50)
|
||||
Gui, Add, Checkbox, vTelegram x+%MarginSpaceDoubled% Checked%TelegramCheckStatus%, Telegram
|
||||
|
||||
|
||||
Gui, Add, Checkbox, x%GroupBoxCheckboxPos% y+%MarginSpace% vOdyseeVideo Checked%OdyseeVideoCheckStatus%, Odysee Video
|
||||
; Gui, Add, Checkbox, x+%MarginSpace% vOdyseeVideoThumb Checked%OdyseeVideoThumbCheckStatus%,Thumbnail
|
||||
Gui, Add, Checkbox, x%GroupBoxCheckboxPos% y+%MarginSpace% vOdyseeAudio Checked%OdyseeAudioCheckStatus%, Odysee Audio
|
||||
; Gui, Add, Checkbox, x+%MarginSpace% vOdyseeAudioThumb Checked%OdyseeAudioThumbCheckStatus%, Thumbnail
|
||||
|
||||
Gui, Add, Checkbox, x%GroupBoxCheckboxPos% y+%MarginSpace% vRumble Checked%RumbleCheckStatus%, Rumble
|
||||
|
||||
Gui, Add, Checkbox, vBrighteon y+%MarginSpace% Checked%BrighteonCheckStatus%, Brighteon
|
||||
Gui, Add, Checkbox, vDailyMotion y+%MarginSpace% Checked%DailyMotionCheckStatus%, DailyMotion
|
||||
; Gui, Add, Checkbox, vStreamanity Checked%StreamanityCheckStatus%, Streamanity
|
||||
|
||||
; Gui, Font, s12
|
||||
gui, Font, Bold
|
||||
Gui, Add, GroupBox, r6.5 y+%MarginSpaceTripled% vImageThumbnail x%PageTwoXStartPos% w%PageTwoGroupBoxWidth%,Thumbnail
|
||||
gui, Font, Normal
|
||||
Gui, Add, Picture, xp+10 yp+20 w%ThumbnailPreviewWidth% h-1, %VideoThumbFilepath%
|
||||
|
||||
|
||||
gui, Font, Normal
|
||||
gui, font, s7
|
||||
Gui, Add, StatusBar,Center, Total Videos Uploaded: %TotalVideosUploaded% | Total Clicks Saved: %MouseClicksSaved%
|
||||
|
||||
|
||||
; Show GUI to the user
|
||||
Gui, +Resize +MaximizeBox
|
||||
|
||||
if(XPosition and YPosition)
|
||||
Gui, Show, x%XPosition% y%YPosition%, %FullScriptName% - Upload Settings - %BodyTextFilePath%
|
||||
else,
|
||||
Gui, Show,, %FullScriptName% - Upload Settings - %BodyTextFilePath%
|
||||
|
||||
ControlFocus, Edit4, %FullScriptName%
|
||||
ToolTip
|
||||
#include %A_scriptDir%\Modules\GUI-Main-Window.ahk
|
||||
|
||||
|
||||
; Write current project to ini file for easy reloading
|
||||
@@ -794,14 +494,9 @@ URunTime1 := round(((A_TickCount - UStartTime) / 1000), 2)
|
||||
|
||||
;---Check for Updates---
|
||||
;------------------------------------------------
|
||||
; msgbox, checking for updates
|
||||
if(AutoUpdateCheck AND !UpdateAvailable){
|
||||
Message = Checking for Updates
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||
; DevModeMsgBox("checking for updates")
|
||||
; msgbox, checkin for update
|
||||
; DevModeMsgBox(GitReleasesAPIURL)
|
||||
; UpdateAvailable :=
|
||||
|
||||
if(CheckForUpdates(GitReleasesAPIURL))
|
||||
GuiControl,,UpdateAvailable, Uploader Update Available!
|
||||
@@ -813,7 +508,6 @@ if(AutoUpdateCheck AND !UpdateAvailable){
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
; calculate run time and convert to seconds
|
||||
URunTime2 := round(((A_TickCount - UStartTime) / 1000), 2)
|
||||
|
||||
@@ -879,7 +573,7 @@ Return
|
||||
|
||||
|
||||
OpenGiteaPage:
|
||||
run, https://git.freedomainplaylists.com/yuriy/Freedomain-Video-Uploader
|
||||
run, https://freedomain.dev/yuriy/video-uploader
|
||||
Return
|
||||
|
||||
|
||||
@@ -911,7 +605,6 @@ SelectVideoThumbFilepath:
|
||||
FileSelectFile, VideoThumbFilepath,, %FileDir%, Select Thumbnail File
|
||||
|
||||
if(!InStr(VideoThumbFilepath, FileDir)){
|
||||
; ToolTip, Thumbnail Copied to Project Folder, 850, 0
|
||||
TimedToolTip("Thumbnail Copied to Project Folder",,,1000)
|
||||
SplitPath, VideoThumbFilepath, OutFileName, OutDir, OutExtension, OutNameNoExt, OutDrive
|
||||
FileCopy, %VideoThumbFilepath%, %FileDir%\*,1
|
||||
@@ -933,6 +626,7 @@ Return
|
||||
|
||||
UpdateChrome:
|
||||
|
||||
|
||||
if(CheckForChromeUpdates = "")
|
||||
Status := CheckForChromeUpdates(ChromeFilepath)
|
||||
|
||||
@@ -949,37 +643,14 @@ if(!status){
|
||||
}
|
||||
|
||||
|
||||
DownloadLatestChromium()
|
||||
Status := DownloadLatestChromium()
|
||||
if(Status)
|
||||
GuiControl,,ChromeUpdateAvailable, Chrome Up-to-Dat
|
||||
|
||||
|
||||
Return
|
||||
|
||||
; now defunt, safe to remove
|
||||
CreateDescriptionForVideosPosting:
|
||||
; msgbox, here
|
||||
Gui, VideoDescriptionTrimmer:New,
|
||||
Gui, Font, s%GuiFontSize%
|
||||
Gui, Add, Text,, Discord and Telegram have a maximum API post length of 2000 Characters `nwhich the curent description exceeds.`nPlease Trim down the description and then click submit.
|
||||
Gui, Font, s%GuiFontSize%
|
||||
Gui, Add, Edit, w800 h500 gUpdateVars vVideoDescriptionForVideosChannel, %VideoDescription%
|
||||
Gui, Add, Button, gSubmitDescriptionForVideosChannel, Submit
|
||||
gui, Show,w820, Video Description Trimmer
|
||||
; msgbox
|
||||
Return
|
||||
|
||||
|
||||
SubmitDescriptionForVideosChannel:
|
||||
Gui, Submit
|
||||
; msgbox, submitted
|
||||
if(CurrentSocialMediaPosting = "Discord")
|
||||
Goto, SubmitDescriptionForDiscordVideosChannel
|
||||
if(CurrentSocialMediaPosting = "Telegram")
|
||||
Goto, SubmitDescriptionForTelegramVideosChannel
|
||||
|
||||
if(CurrentSocialMediaPosting = "Telegram Video")
|
||||
goto, SubmitDescriptionForTelegramVideoUpload
|
||||
|
||||
Return
|
||||
/*
|
||||
*/
|
||||
|
||||
|
||||
|
||||
@@ -1087,6 +758,7 @@ DownloadLatestChromium()
|
||||
IniWrite, %LBRYURLSlug%, %VideoLinksIniFile%, Misc, LBRYUrlSlug
|
||||
IniWrite, %VideoThumbFilepath%, %VideoLinksIniFile%, Misc, VideoThumbFilepath
|
||||
IniWrite, %PodcastNumber%, %VideoLinksIniFile%, Misc, PodcastNumber
|
||||
IniWrite, %VideoThumbFilepath%, %VideoLinksIniFile%, Misc, VideoThumbFilepath
|
||||
|
||||
|
||||
|
||||
@@ -1126,45 +798,66 @@ DownloadLatestChromium()
|
||||
Message := "TotalVideosUploaded: " TotalVideosUploaded
|
||||
SaveOrPostProgress(Message:=Message,PostType:=",ErrorLoggingTextFile")
|
||||
|
||||
; Convert Video Description into javascript text format for sending to selenium
|
||||
JSVideoDescription := FormatTextToJSText(VideoDescription)
|
||||
; Convert Video Title and Description into javascript formatting for sending to pages through js instead of plain selenium
|
||||
JSVideoTitle := FormatTextToJSText(VideoTitle)
|
||||
JSVideoDescription := FormatTextToJSText(VideoDescription)
|
||||
|
||||
; -------------------------------/Log Info To Text-------------------------------
|
||||
|
||||
|
||||
|
||||
; Cleanup Tag Formatting
|
||||
; ------------------------------------------------
|
||||
; @todo: note: it would be better to replace accented chars w/ their pure latin equivalents but that seems a bit
|
||||
; beyond the scope of this change. here's a link talking about how to do that tho
|
||||
; https://www.autohotkey.com/boards/viewtopic.php?t=61626
|
||||
|
||||
; Create an array out of the keywords to be used in different places
|
||||
VideoTags := StrReplace(VideoTags, ", ",",")
|
||||
VideoTags := StrReplace(VideoTags, " ,",",")
|
||||
VideoTags := StrReplace(VideoTags, " ",",")
|
||||
ArrayOfVideoTags := []
|
||||
ArrayOfPodcastTags := []
|
||||
|
||||
KeywordsArray := StrSplit(VideoTags,",")
|
||||
; VIDEO Tags
|
||||
For index, val in StrSplit(VideoTags, ",") {
|
||||
; for each element in the split videotags array, trim leading & trailing spaces
|
||||
val := Trim(val)
|
||||
|
||||
; and remove any chars that are not a letter, number, or space (i = case-insensitive)
|
||||
val := RegexReplace(val, "i)[^a-z0-9 ]", "")
|
||||
ArrayOfVideoTags.InsertAt(index, val)
|
||||
}
|
||||
|
||||
; PODCAST Tags
|
||||
For index, val in StrSplit(PodcastTags, ",") {
|
||||
; for each element in the split videotags array, trim leading & trailing spaces
|
||||
val := Trim(val)
|
||||
|
||||
; and remove any chars that are not a letter, number, or space (i = case-insensitive)
|
||||
val := RegexReplace(val, "i)[^a-z0-9 ]", "")
|
||||
ArrayOfPodcastTags.InsertAt(index, val)
|
||||
}
|
||||
|
||||
|
||||
; Call each sub one by one, if errors occur then an upload will be stopped and the next upload will then proceed
|
||||
; update VideoTags with sanitized keywords list
|
||||
VideoTags := Join(",", ArrayOfVideoTags*)
|
||||
|
||||
/*
|
||||
; update PodcastTags with sanitized keywords list
|
||||
PodcastTags := Join(",", ArrayOfPodcastTags*)
|
||||
|
||||
if(Facebook)
|
||||
gosub, FacebookUpload
|
||||
; // Cleanup Tag Formatting
|
||||
; ------------------------------------------------
|
||||
|
||||
*/
|
||||
/*
|
||||
*/
|
||||
|
||||
if(Telegram)
|
||||
gosub, TelegramVideoUpload
|
||||
|
||||
; Upload to Sites
|
||||
; ------------------------------------------------
|
||||
; Call each submodule one by one
|
||||
; if errors occur then an upload for that site will be stopped and the next upload will then proceed
|
||||
|
||||
if(Locals)
|
||||
gosub, LocalsUpload
|
||||
|
||||
|
||||
if(BitChute)
|
||||
Gosub, BitChuteUpload
|
||||
|
||||
|
||||
if(OdyseeVideo){
|
||||
LBRYUploadType := "Video"
|
||||
Gosub, LBRYVideoUpload
|
||||
@@ -1178,16 +871,13 @@ if(OdyseeAudio){
|
||||
if(Rumble)
|
||||
Gosub, RumbleUpload
|
||||
|
||||
|
||||
if(Brighteon)
|
||||
Gosub, BrighteonUpload
|
||||
|
||||
|
||||
if(DailyMotion)
|
||||
Gosub, DailyMotionUpload
|
||||
|
||||
|
||||
|
||||
; grab the LBRY Video/Audio URLs
|
||||
if(OdyseeVideo){
|
||||
LBRYUploadType := "Video"
|
||||
@@ -1198,9 +888,13 @@ if(OdyseeAudio){
|
||||
Gosub, LBRYGetURL
|
||||
}
|
||||
|
||||
if(LocalsGrabURL OR LocalsURL = "LocalsUploadStartedNeedToGrabURL"){
|
||||
if(LocalsGrabURL){
|
||||
Gosub, LocalsGrabURL
|
||||
}
|
||||
; // Upload to Sites
|
||||
; ------------------------------------------------
|
||||
|
||||
|
||||
|
||||
|
||||
if(URLOfLastErrorPage != ""){
|
||||
@@ -1227,6 +921,9 @@ Message = %Message%
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||
|
||||
|
||||
|
||||
; Read Info for Results Window GUI
|
||||
; ------------------------------------------------
|
||||
DisplayResults:
|
||||
Tooltip ; Remove all tooltips
|
||||
|
||||
@@ -1271,95 +968,9 @@ if(PodcastNumber = "") {
|
||||
}
|
||||
|
||||
|
||||
Gui, Font, s%GuiFontSize%
|
||||
Gui, Font, Bold
|
||||
; Gui, Add, Text,x10 y+10, Podcast #:
|
||||
Gui, Add, Button, x10 y+%Marginspace% h%ButtonHeights% w%CopyButtonWidths% gCopyPodcastNumber, Podcast #
|
||||
Gui, Font, Normal
|
||||
Gui, Add, Edit, x+5 yp+0 h%ButtonHeights% w%ResultEditBoxWidths% gUpdateVars vPodcastNumber, %PodcastNumber%
|
||||
|
||||
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, Send Errorlog Through Telegram
|
||||
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
|
||||
|
||||
Gui, Show,,%FullScriptName% - Upload Results
|
||||
; Show Results GUI Window
|
||||
; ------------------------------------------------
|
||||
#include %A_scriptDir%\Modules\GUI-Results-Window.ahk
|
||||
|
||||
SaveCurrentChromeVersionToIniFile()
|
||||
|
||||
@@ -1401,10 +1012,13 @@ if(SocialMediaPosterFilepath = "" or !FileExist(SocialMediaPosterFilepath)){
|
||||
Return
|
||||
|
||||
/*
|
||||
Sublime Indent Reset
|
||||
*/
|
||||
|
||||
; -------------------------------CopyThis-------------------------------
|
||||
|
||||
; Copy Info from GUI to Clipboard
|
||||
; ------------------------------------------------
|
||||
; @todo: this can be converted into 1 gosub, with if/else statements based on the button clicked
|
||||
|
||||
CopyPodcastNumber:
|
||||
Clipboard := PodcastNumber
|
||||
SaveOrPostProgress(Message:=PodcastNumber "`nCopied to Clipboard",PostType:="Tooltip,ErrorLoggingTextFile")
|
||||
@@ -1537,39 +1151,7 @@ ExitApp
|
||||
|
||||
|
||||
SendErrorLoggingThroughTelegram:
|
||||
Message = Uploading Errorlog to FDRBotTesting Telegram Server.
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||
|
||||
|
||||
; Credentials to FDRBotTesting Channel
|
||||
IniRead, TelegramErrorLogBotToken, %SettingsIniFilepath%, General, TelegramErrorLogBotToken, %A_Space%
|
||||
IniRead, TelegramErrorLogBotChatID, %SettingsIniFilepath%, General, TelegramErrorLogBotChatID, %A_Space%
|
||||
|
||||
|
||||
if(TelegramErrorLogBotToken = "" or TelegramErrorLogBotChatID = ""){
|
||||
Message = TelegramErrorLogBotToken and/or TelegramErrorLogBotChatID are blank. Please add them to Settings.ini under: `n`n[General]`nTelegramErrorLogBotToken=`nTelegramErrorLogBotChatID=
|
||||
}
|
||||
|
||||
|
||||
Status := SendTelegramFile(TelegramErrorLogBotToken, TelegramErrorLogBotChatID, ErrorLoggingFilePath, caption := "" )
|
||||
if(InStr(Status, "error_code")){
|
||||
Message = Telegram Post Failed due to an API Issue. Error was saved to ErrorLogging file. Please send it manually.
|
||||
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 = ErrorLog was successfully uploaded to the FDRBotTesting Telegram Server.`nThank You!
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||
|
||||
sleep, 5000
|
||||
ToolTip
|
||||
|
||||
msgbox, I don't do nothin atm
|
||||
Return
|
||||
|
||||
|
||||
@@ -1577,63 +1159,42 @@ Return
|
||||
;------------------------------------------------
|
||||
#Include %A_ScriptDir%\Modules\Post-To-Telegram.ahk
|
||||
|
||||
|
||||
; Post-Video-To-Telegram
|
||||
;------------------------------------------------
|
||||
#Include %A_ScriptDir%\Modules\Post-Video-To-Telegram.ahk
|
||||
|
||||
|
||||
; Post-To-Discord
|
||||
;------------------------------------------------
|
||||
#Include %A_ScriptDir%\Modules\Post-To-Discord.ahk
|
||||
|
||||
|
||||
; BitChute
|
||||
;------------------------------------------------
|
||||
#Include %A_ScriptDir%\Modules\Bitchute-Upload.ahk
|
||||
|
||||
|
||||
; Brighteon
|
||||
;------------------------------------------------
|
||||
#Include %A_ScriptDir%\Modules\Brighteon-Upload.ahk
|
||||
|
||||
|
||||
; DailyMotion
|
||||
;------------------------------------------------
|
||||
#Include %A_ScriptDir%\Modules\DailyMotion-Upload.ahk
|
||||
|
||||
|
||||
; LBRY
|
||||
;------------------------------------------------
|
||||
#Include %A_ScriptDir%\Modules\LBRY-Upload.ahk
|
||||
|
||||
|
||||
; Rumble
|
||||
;------------------------------------------------
|
||||
#Include %A_ScriptDir%\Modules\Rumble-Upload.ahk
|
||||
|
||||
|
||||
; Locals
|
||||
;------------------------------------------------
|
||||
#Include %A_ScriptDir%\Modules\Locals-Upload.ahk
|
||||
|
||||
|
||||
; Podcast
|
||||
;------------------------------------------------
|
||||
#Include %A_ScriptDir%\Modules\Podcast-Upload.ahk
|
||||
|
||||
|
||||
; Miscellaneous-Functions
|
||||
;------------------------------------------------
|
||||
#Include %A_ScriptDir%\Modules\Miscellaneous-Functions.ahk
|
||||
|
||||
|
||||
|
||||
OnMsgBoxConfirmChromiumOverwrite() {
|
||||
DetectHiddenWindows, On
|
||||
Process, Exist
|
||||
If (WinExist("ahk_class #32770 ahk_pid " . ErrorLevel)) {
|
||||
ControlSetText Button1, Cancel
|
||||
ControlSetText Button2, Yes
|
||||
}
|
||||
}
|
||||
|
||||
Submodule Lib/Freedomain-Posters-Shared-Functions updated: 1962743565...e32fe026e9
@@ -16,6 +16,8 @@ SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,Disc
|
||||
try TabUrl := driver.url
|
||||
if(InStr(TabUrl, "/accounts/login/")){
|
||||
if(AutoLogin){
|
||||
|
||||
|
||||
Xpath = (//button[normalize-space()='Submit'])[1]
|
||||
Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000)
|
||||
if(Status){
|
||||
@@ -124,15 +126,17 @@ SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,Disc
|
||||
|
||||
; Convert tags into #hasthtags
|
||||
Loop, 3 {
|
||||
Value := KeywordsArray[A_Index]
|
||||
Value := StrReplace(Value, " ", "") ; Remove spaces if hashtag has two words
|
||||
; HashTag := "#" . Value
|
||||
BitchuteHashtags .= Value . " "
|
||||
BitchuteTags .= VideoTagsArray[A_Index] . " "
|
||||
}
|
||||
|
||||
; input hashtags
|
||||
; input Search Terms (Tags)
|
||||
Xpath = //input[@placeholder='Search Terms']
|
||||
Status := Selenium_LoopToSendValueToXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000,StringTextContent:=BitchuteHashtags)
|
||||
Status := Selenium_LoopToSendValueToXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000,StringTextContent:=BitchuteTags)
|
||||
if(Status){
|
||||
Message = Failed to input search terms (tags)
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||
}
|
||||
|
||||
|
||||
; Upload Thumbnail
|
||||
Message = Attaching Thumbnail
|
||||
|
||||
@@ -177,9 +177,6 @@ Loop, 10 {
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||
; SaveOrPostProgress(Message:=Message,PostType:="DiscordErrorLogging")
|
||||
|
||||
; SaveOrPostProgress(Message:="Inputting Video Description",PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar")
|
||||
; TooltipThis("Inputting Description)
|
||||
|
||||
Xpath = //div[@class='e-content e-lib e-keyboard']
|
||||
Status := Selenium_LoopToSendValueToXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000,StringTextContent:=VideoDescription)
|
||||
if(Status){
|
||||
@@ -188,19 +185,6 @@ Loop, 10 {
|
||||
; Return
|
||||
}
|
||||
|
||||
; DevModeMsgBox("pause")
|
||||
|
||||
; driver.FindElementByXPath(Xpath).SendKeys(VideoDescription)
|
||||
|
||||
; js = document.getElementById('description').value = "%JSBrighteonVideoDescription%";
|
||||
; try driver.executeScript(js)
|
||||
|
||||
|
||||
; sleep, 1000
|
||||
; TooltipThis("checking description input")
|
||||
; try driver.findElementsByID("description").item[1].SendKeys(driver.Keys.ENTER)
|
||||
; sleep, 1000
|
||||
|
||||
sleep, 5000
|
||||
|
||||
|
||||
@@ -218,11 +202,9 @@ Loop, 10 {
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||
Break
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
; Thumbnail
|
||||
if(VideoThumbFilepath != "") {
|
||||
TooltipThis("Uploading Thumbnail")
|
||||
@@ -235,11 +217,21 @@ if(VideoThumbFilepath != "") {
|
||||
}
|
||||
|
||||
|
||||
; DevModeMsgBox(VideoTags)
|
||||
; Brighteon has a max of 25 for tags.
|
||||
if(VideoTagsArray.Length() > 25){
|
||||
Loop % 24 {
|
||||
BrighteonKeywords := VideoTagsArray[A_Index]
|
||||
}
|
||||
}
|
||||
else,
|
||||
BrighteonKeywords := VideoTags
|
||||
|
||||
|
||||
|
||||
TooltipThis("Inputting Keywords")
|
||||
Loop, 5 {
|
||||
XPath = //input[@id='keywords']
|
||||
try driver.FindElementByXPath(Xpath).SendKeys(VideoTags) ;Sends Variable to an Xpath Item
|
||||
try driver.FindElementByXPath(Xpath).SendKeys(BrighteonKeywords) ;Sends Variable to an Xpath Item
|
||||
catch e {
|
||||
Message = Error (E#2312)`nVideo Uploaded but Unable to Input Video Tags
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||
@@ -261,7 +253,6 @@ Loop, 5 {
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||
break
|
||||
}
|
||||
; Msgbox % "status: " status
|
||||
|
||||
|
||||
}
|
||||
@@ -370,7 +361,6 @@ Loop % VideoTitleArray.Length(){
|
||||
if(StrLen(VideoTitleLongWord) > 4)
|
||||
Break
|
||||
|
||||
; MsgBox % VideoTitleArray[A_Index]
|
||||
}
|
||||
|
||||
|
||||
@@ -392,23 +382,6 @@ Loop, 4 {
|
||||
jsCheck = return document.getElementsByClassName('col')[%ElementIndexNumber%].textContent;
|
||||
try InnerText := driver.executeScript(jsCheck)
|
||||
|
||||
; Message = Loop Number: %ElementIndexNumber% element's Text Content: %innerText%`nBrighteonURL: %BrighteonURL%
|
||||
; SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||
|
||||
; Message = InnerText: %InnerText%
|
||||
; SaveOrPostProgress(Message:=Message,PostType:=",ErrorLoggingTextFile")
|
||||
; DevModeMsgBox(InnerText)
|
||||
|
||||
; Message = BrighteonURL: %BrighteonURL%
|
||||
; SaveOrPostProgress(Message:=Message,PostType:=",ErrorLoggingTextFile")
|
||||
|
||||
|
||||
|
||||
; Msgbox % "VideoTitleLongWord: " VideoTitleLongWord "`nInnerText: " InnerText
|
||||
; clipboard := Message
|
||||
; msgbox % Message
|
||||
; Msgbox % "InnerText: " InnerText . "`n" . "BrighteonURL: " . BrighteonURL
|
||||
|
||||
if(InStr(InnerText, VideoTitleLongWord)){
|
||||
Message = Title Keyword was found on %A_index% loop, within element: %innerText%`nTrying to pull out BrighteonURL from element's outerHTML
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||
@@ -432,10 +405,6 @@ Loop, 4 {
|
||||
}
|
||||
|
||||
|
||||
|
||||
; Convert dashboard URL to Public URL
|
||||
; BrighteonURL := StrReplace(BrighteonURL, "dashboard/videos/", "")
|
||||
|
||||
if(BrighteonURL = ""){
|
||||
Message = Upload Completed Successfully but failed to grab Share URL. Please Copy and Paste it in.
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||
|
||||
@@ -36,12 +36,12 @@ if(LoggedOutStatus){
|
||||
try driver.FindElementByXPath(Xpath).click()
|
||||
|
||||
Xpath = //input[@placeholder='Enter password']
|
||||
driver.FindElementByXPath(Xpath).click()
|
||||
try driver.FindElementByXPath(Xpath).click()
|
||||
|
||||
js = document.querySelector("button[type='submit']").click();
|
||||
driver.executeScript(js)
|
||||
try driver.executeScript(js)
|
||||
|
||||
driver.executeScript("return document.readyState").equals("complete") ; wait until page loads completely before proceeding
|
||||
try driver.executeScript("return document.readyState").equals("complete") ; wait until page loads completely before proceeding
|
||||
sleep, 1000
|
||||
|
||||
; Do a double check to make sure that login worked
|
||||
@@ -243,13 +243,22 @@ Message = Inputting Tags
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||
|
||||
; Append comma to end of tags
|
||||
; DailyMotion page automtically splits the tags into their little boxes when they're seperated by commas
|
||||
DailyMotionVideoTags := VideoTags . ","
|
||||
; DailyMotion page automtically splits the tags into individual tags when they're seperated by commas
|
||||
|
||||
; Iterate from one end of the array to another:
|
||||
Loop % VideoTagsArray.Length(){
|
||||
; ArrayItem := ARRAY[A_Index]
|
||||
; MsgBox %
|
||||
DailyMotionVideoTags .= VideoTagsArray[A_Index] . ","
|
||||
}
|
||||
|
||||
|
||||
; DailyMotionVideoTags := VideoTags . ","
|
||||
|
||||
Message = Video Tags: %DailyMotionVideoTags%
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||
|
||||
Xpath = //div[@class='ant-select-selection-search']//input[@role='combobox']
|
||||
Xpath = (//input[@id='tags'])[1]
|
||||
Status := Selenium_LoopToSendValueToXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000,StringTextContent:=DailyMotionVideoTags)
|
||||
|
||||
; double check the input
|
||||
@@ -259,14 +268,12 @@ Message = Tags that got input: %inputTags% (Will be doubled b/c of js)
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||
|
||||
|
||||
; msgbox
|
||||
Message = Clicking Next Button to Move on to next input screen
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||
|
||||
Xpath = //button[@type='button']//span[contains(text(),'Next')]
|
||||
Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000)
|
||||
|
||||
; msgbox, click work?
|
||||
|
||||
Message = Selecting "Not For Kids" checkbox
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||
@@ -284,50 +291,24 @@ catch e {
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
; Disable monitization for video
|
||||
SaveOrPostProgress(Message:="Unchecking monetizaton checkbox",PostType:="Tooltip,ErrorLoggingTextFile")
|
||||
Xpath = //button[normalize-space()='Advanced'] ; advanced tab button
|
||||
Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=5,SleepLength:=1000)
|
||||
if(Status = "Failed"){
|
||||
Message = Unable to Navigate to Advanced Settings Page to turn off monetization
|
||||
; Disable Monetization Checkbox
|
||||
Message = Disabling Monetization Checkbox
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||
|
||||
Xpath = //*[@id="advertising_instream_blocked"]
|
||||
Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000)
|
||||
if(Status){
|
||||
Message = Failed to click on Monetization slider with xpath, trying with full xpath
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||
|
||||
Xpath = /html/body/div/div[2]/div/div[3]/div/div/div[2]/div[2]/div/div/div/div[4]/div/button
|
||||
Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000)
|
||||
if(Status){
|
||||
Message = Failed to click on Monetization slider with full xpath, sleeping for 5 seconds so user can manually uncheck it.
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||
}
|
||||
|
||||
|
||||
*/
|
||||
; SaveOrPostProgress(Message:="Unchecking monetizaton checkbox",PostType:="Tooltip,ErrorLoggingTextFile")
|
||||
|
||||
; switch over to advanced tab
|
||||
; js = document.getElementsByName('advanced')[0].click();
|
||||
; try driver.executeScript(js)
|
||||
/*
|
||||
|
||||
sleep, 1000
|
||||
Loop, 5 { ; Loop to uncheck the "monetization button"
|
||||
|
||||
if(A_index = 5){
|
||||
Message = Failed to uncheck "monetization enabled" checkbox
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||
}
|
||||
|
||||
Xpath = //input[@name='advertising_instream_blocked'] ; monetization checkbox
|
||||
try Status := driver.FindElementByXPath(Xpath).isSelected()
|
||||
|
||||
if(Status = 0) ; -1 is checked, 0 is unchecked
|
||||
Break
|
||||
|
||||
; Click to uncheck the "allow monetization" checkbox
|
||||
Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000)
|
||||
}
|
||||
|
||||
*/
|
||||
/*
|
||||
; Switch back to Basic tab
|
||||
js = document.getElementsByName('basic')[0].click();
|
||||
try driver.executeScript(js)
|
||||
|
||||
*/
|
||||
|
||||
Message = Clicking Next Button to Move on to third video settings screen
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||
@@ -336,7 +317,6 @@ Xpath = //button[@type='button']//span[contains(text(),'Next')]
|
||||
Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000)
|
||||
|
||||
|
||||
|
||||
Message = Clicking Save Button to Finalize Upload
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||
|
||||
|
||||
337
Modules/GUI-Main-Window.ahk
Normal file
337
Modules/GUI-Main-Window.ahk
Normal file
@@ -0,0 +1,337 @@
|
||||
;---GUI Variables---
|
||||
;------------------------------------------------
|
||||
GuiHeight = 800
|
||||
GuiWidth = 1366
|
||||
GuiFontSize = 10
|
||||
|
||||
ButtonHeights := 30
|
||||
|
||||
MarginSpace := 10
|
||||
MarginSpaceDoubled := MarginSpace * 2
|
||||
MarginSpaceTripled := MarginSpace * 3
|
||||
|
||||
EditBoxWidths := (GuiWidth / 100) * 60
|
||||
EditBoxHalfWidths := (EditBoxWidths / 2) - (MarginSpace / 2)
|
||||
OdyseeURLSlugEditWidth := (EditBoxHalfWidths / 4) * 3
|
||||
|
||||
PodcastNumberTextXPos := EditBoxHalfWidths + OdyseeURLSlugEditWidth + (MarginSpace * 3)
|
||||
PodcastNumberEditWidth := (EditBoxHalfWidths / 4) - MarginSpace
|
||||
|
||||
EditBoxOneFourthWidth := (EditBoxWidths / 4 )
|
||||
EditBoxThreeFourthsWidth := (EditBoxWidths / 4 ) * 3
|
||||
|
||||
|
||||
ColumnOneHalfWidthXPos := EditBoxHalfWidths + MarginSpaceDoubled
|
||||
|
||||
EditBoxThirdsWidths := (EditBoxWidths / 3) - (MarginSpace / 2)
|
||||
OdyseeURLSlugXPos := EditBoxHalfWidths + (MarginSpace * 2)
|
||||
|
||||
EditBoxFourthWidths := (EditBoxWidths / 4) - (MarginSpace - 2)
|
||||
VideoTagsTextXPos := EditBoxHalfWidths + (MarginSpace * 2)
|
||||
|
||||
; EditBoxHalfWidthsWithMargin := (EditBoxWidths / 2)
|
||||
DescriptionCharCountXPos := EditBoxWidths - 40
|
||||
|
||||
PageTwoXStartPos := EditBoxWidths + 50
|
||||
|
||||
CopyButtonWidths := 150
|
||||
ResultEditBoxXPos := CopyButtonWidths + MarginSpace + 5
|
||||
ResultEditBoxWidths := EditBoxWidths - CopyButtonWidths
|
||||
|
||||
ResultEditBoxHalfWidths := (ResultEditBoxWidths / 2) - (MarginSpace /2)
|
||||
ResultLBRYURLEditBoxWidthPieces := (ResultEditBoxWidths / 4)
|
||||
ResultLBRYURLEditBoxWidths := ResultLBRYURLEditBoxWidthPieces * 3
|
||||
|
||||
ResultEditBoxThirdsWidths := (ResultEditBoxWidths / 3) - (MarginSpace /3)
|
||||
|
||||
|
||||
ResultLBRYThumbEditBoxWidth := ResultLBRYURLEditBoxWidthPieces - 5
|
||||
|
||||
ErrorLogEditBoxXPos := ResultEditBoxWidths + CopyButtonWidths + 30
|
||||
ErrorLogEditBoxHeight := GuiHeight - (MarginSpace * 20) - (ButtonHeights * 2)
|
||||
ErrorLogEditBoxWidth := GuiWidth - ErrorLogEditBoxXPos - (MarginSpace * 12)
|
||||
|
||||
|
||||
ButtonWidths := 150
|
||||
ButtonXPos := GuiWidth - ButtonWidths - 15
|
||||
|
||||
SubmitButtonYLocation := GuiHeight - 50
|
||||
SubmitButtonXLocation := GuiWidth - 90
|
||||
CancelButtonXLocation := GuiWidth - 180
|
||||
|
||||
EditBoxHeight := 25
|
||||
ThumbnailPreviewWidth := 300
|
||||
PageTwoGroupBoxWidth := ThumbnailPreviewWidth + 20
|
||||
|
||||
; Size of Description Edit Box and the location of the checkboxes underneath them
|
||||
VideoDescriptionEditBoxHeight = 100
|
||||
CheckboxesStartYPos := 630
|
||||
|
||||
FilePathEditBoxWidths := EditBoxWidths - MarginSpace - 70
|
||||
SelectFileButtonWidths := 30
|
||||
|
||||
ButtonStartYPos := CheckboxesStartYPos + 10
|
||||
MarginSquared := MarginSpace * 2
|
||||
|
||||
if(DevMode){
|
||||
MainButtonHeight := 30
|
||||
SecondaryButtonHeights := 30
|
||||
|
||||
}
|
||||
else, {
|
||||
MainButtonHeight := 30
|
||||
SecondaryButtonHeights := 35
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
; -------------------------------GUI-------------------------------
|
||||
|
||||
Gui, Font, s%GuiFontSize%
|
||||
Gui, Margin, %MarginSpace%, %MarginSpace%
|
||||
|
||||
; Video Title
|
||||
Gui, Font, Bold
|
||||
Gui, Add, Text,, Show Title
|
||||
Gui, Add, Text, x%ColumnOneHalfWidthXPos% yp+0,Odysee URL Slug
|
||||
Gui, Add, Text, x%PodcastNumberTextXPos% yp+0,Podcast #
|
||||
|
||||
|
||||
Gui, Font, Normal
|
||||
Gui, Add, Edit, y+5 x%MarginSpace% 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+%Marginspace% w%PodcastNumberEditWidth% h%EditBoxHeight% gUpdateVars vPodcastNumber, %PodcastNumber%
|
||||
|
||||
; LBRY URL
|
||||
Gui, Font, Bold
|
||||
Gui, Add, Text, x%Marginspace%,Video Tags (Comma Seperated)
|
||||
Gui, Add, Text,x%ColumnOneHalfWidthXPos% yp+0,Podcast Tags (Comma Seperated)
|
||||
|
||||
Gui, Font, Normal
|
||||
Gui, Add, Edit, x%Marginspace% Y+5 w%EditBoxHalfWidths% h%EditBoxHeight% gUpdateVars vVideoTags, %VideoTags%
|
||||
Gui, Add, Edit, yp+0 x+%Marginspace% w%EditBoxHalfWidths% h%EditBoxHeight% gUpdateVars vPodcastTags, %PodcastTags%
|
||||
|
||||
|
||||
; Video Description
|
||||
Gui, Font, Bold
|
||||
|
||||
if(NoOriginalVideoDescription)
|
||||
Gui, Add, Text,cRed y+%Marginspace% x%Marginspace%,Video Description
|
||||
else,
|
||||
Gui, Add, Text,y+%Marginspace% x%Marginspace%,Video Description:
|
||||
|
||||
|
||||
if(TestingMode)
|
||||
Gui, Add, Text,cRed yp+0 xp+150 ,TESTING MODE
|
||||
|
||||
if(DevMode)
|
||||
Gui, Add, Text,cRed yp+0 xp+150 ,DEV MODE
|
||||
|
||||
Gui, Font, Normal
|
||||
Gui, Add, Edit,x%Marginspace% y+2 w%EditBoxWidths% h%VideoDescriptionEditBoxHeight% vVideoDescription gSubmitDescription,%VideoDescription%
|
||||
gui, font, s8
|
||||
Gui, font, Bold
|
||||
if(DescriptionCharCount > 3000){
|
||||
Gui, Add, Edit,cRed w50 h20 x%DescriptionCharCountXPos% y+1 vDescriptionCharCount, %DescriptionCharCount%
|
||||
}
|
||||
else,
|
||||
Gui, Add, Edit, w50 h20 x%DescriptionCharCountXPos% y+1 vDescriptionCharCount, %DescriptionCharCount%
|
||||
Gui, Font, Normal
|
||||
Gui, Add,Text, yp+3 xp-310, (Platform Char. Limits: DM+Bitchute = 3K, Odysee,Brighteon = 5K)
|
||||
Gui, Font, s%GuiFontSize%
|
||||
Gui, font, Bold
|
||||
Gui, Add, GroupBox,r8.5 x%MarginSpace% yp+10 w%EditBoxWidths% Center, Filepaths
|
||||
|
||||
; Video Filepath
|
||||
Gui, Font, Bold
|
||||
Gui, Add, Text,xp+5 yp+15,Video Filepath
|
||||
Gui, Font, Normal
|
||||
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
|
||||
|
||||
; Video Thumbnail Filepath
|
||||
Gui, Font, Bold
|
||||
if(NoOriginalVideoThumbFilepath)
|
||||
Gui, Add, Text, x%MarginSquared% CRed y+15,Video Thumbnail Filepath
|
||||
else,
|
||||
Gui, Add, Text,y+15 x%MarginSquared% ,Video Thumbnail Filepath
|
||||
Gui, Font, Normal
|
||||
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
|
||||
; WAV Audio File Filepath
|
||||
Gui, Font, Bold
|
||||
if(WavAudioFilepath = "")
|
||||
Gui, Add, Text,cRed x%MarginSquared% y+15,WAV Filepath
|
||||
else, { ; change text depending on if WAV or FLAC file
|
||||
if(InStr(WavFilepath, ".flac"))
|
||||
Gui, Add, Text,x%MarginSquared% y+15,FLAC Filepath
|
||||
else,
|
||||
Gui, Add, Text,x%MarginSquared% y+15,WAV Filepath
|
||||
}
|
||||
Gui, Font, Normal
|
||||
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, Font, Bold
|
||||
if(MP3AudioFilepath = "")
|
||||
Gui, Add, Text,cRed x%MarginSquared% y+15,Podcast MP3 Filepath
|
||||
else,
|
||||
Gui, Add, Text,x%MarginSquared% y+15,Podcast MP3 Filepath
|
||||
Gui, Font, Normal
|
||||
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
|
||||
|
||||
|
||||
; Submit Button
|
||||
Gui, Font, s%GuiFontSize%
|
||||
gui, Font, Bold
|
||||
|
||||
; if(DevMode)
|
||||
; Gui, Add, Button, x%MarginSpace% w%EditBoxHalfWidths% y+25 h%MainButtonHeight% gCancelPost hwndIcon, Close
|
||||
; else,
|
||||
|
||||
|
||||
; Script Update Button
|
||||
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, Font, s20
|
||||
; Gui, Font, Bold
|
||||
Gui, Add, Button, x+%MarginSpace% w%EditBoxHalfWidths% h%SecondaryButtonHeights% gStartScript, UPLOAD
|
||||
|
||||
|
||||
Gui, Font, s%GuiFontSize%
|
||||
|
||||
; Chrome Update Button
|
||||
if(ChromeUpdateAvailable){
|
||||
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){
|
||||
Gui, Add, Button, x%MarginSpace% w%EditBoxFourthWidths% h30 y+5 h%SecondaryButtonHeights% gOpenErrorLog, Open ErrorLog
|
||||
Gui, Add, Button, x+%MarginSpace% w%EditBoxFourthWidths% h30 h%SecondaryButtonHeights% gClearVideoLinks, Clear VideoLinks
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
; -------------------------------Page 2 Side of Main GUI Window-------------------------------
|
||||
LineSplitXPosition := PageTwoXStartPos - ( MarginSpace * 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/
|
||||
; Thumbnail Preview
|
||||
Gui, Font, Normal
|
||||
gui, Font, s4
|
||||
; Miscellaneous Settings
|
||||
DevModToggleButton := PageTwoXStartPos + 160
|
||||
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+5 y5 w50 h10 gOpenGiteaPage, Gitea
|
||||
|
||||
Gui, Font, s%GuiFontSize%
|
||||
Gui, Font, Bold
|
||||
|
||||
; Settings Section
|
||||
Gui, Add, GroupBox,r5 y+0 x%PageTwoXStartPos% w%PageTwoGroupBoxWidth%,Settings
|
||||
Gui, Add, Checkbox, xp+10 yp+20 vAutoUpdateCheck gUpdateVars Checked%AutoUpdateCheckCheckStatus%, Auto Update Check
|
||||
Gui, Add, Checkbox, vShowTooltipProgress Checked%ShowTooltipProgressCheckStatus% gUpdateVars,Show Tooltip Progress
|
||||
Gui, Add, Checkbox, vKillLBRYAfterUpload Checked%KillLBRYAfterUploadCheckStatus%, Kill LBRY After Uploading
|
||||
Gui, Add, Checkbox, vAutoLogin gUpdateVars Checked%AutoLoginCheckStatus%, Try to Login Automatically
|
||||
Gui, Add, Checkbox, vPingOnCompletion gUpdateVars Checked%PingOnCompletionCheckStatus%, Discord Ping Upon Completion
|
||||
|
||||
|
||||
GroupBoxCheckboxPos := PageTwoXStartPos + MarginSpace
|
||||
|
||||
; -------------------------------PLATFORMS-------------------------------
|
||||
Gui, Add, GroupBox,r6 y+%MarginSpaceTripled% x%PageTwoXStartPos% w%PageTwoGroupBoxWidth%, Platforms
|
||||
|
||||
; Msgbox % "LocalsURL: " LocalsURL
|
||||
; if(VideoFileSizeInMB < 1792)
|
||||
; Gui, Add, Checkbox, x+%MarginSpaceDoubled% vFacebook Checked%FacebookCheckStatus%, Facebook
|
||||
|
||||
Gui, Add, Checkbox, xp+10 yp+25 vBitChute Checked%BitChuteCheckStatus% gUpdateVars, BitChute
|
||||
|
||||
|
||||
if(LocalsURL = "LocalsUploadStartedNeedToGrabURL"){
|
||||
; msgbox, checking grab url
|
||||
Gui, Add, Checkbox, x+%MarginSpaceTripled% yp+0 vLocalsGrabURL Checked%LocalsCheckStatus% gUpdateVars, Locals (Grab URL)
|
||||
LocalsGrabURL := 1
|
||||
Locals := 0
|
||||
}
|
||||
else, {
|
||||
; msgbox, checking locals
|
||||
Gui, Add, Checkbox, x+%MarginSpaceTripled% yp+0 vLocals Checked%LocalsCheckStatus% gUpdateVars, Locals
|
||||
LocalsGrabURL := 0
|
||||
Locals := 1
|
||||
}
|
||||
|
||||
Gui, Add, Checkbox, x%GroupBoxCheckboxPos% y+%MarginSpace% vOdyseeVideo Checked%OdyseeVideoCheckStatus% gUpdateVars, Odysee Video
|
||||
|
||||
if(VideoFileSizeInMB < 50)
|
||||
Gui, Add, Checkbox, vTelegram x+%MarginSpaceTripled% yp+0 Checked%TelegramCheckStatus% gUpdateVars, Telegram (>50 MB)
|
||||
|
||||
|
||||
; Gui, Add, Checkbox, x+%MarginSpace% vOdyseeVideoThumb Checked%OdyseeVideoThumbCheckStatus%,Thumbnail
|
||||
Gui, Add, Checkbox, x%GroupBoxCheckboxPos% y+%MarginSpace% vOdyseeAudio Checked%OdyseeAudioCheckStatus% gUpdateVars, Odysee Audio
|
||||
; Gui, Add, Checkbox, x+%MarginSpace% vOdyseeAudioThumb Checked%OdyseeAudioThumbCheckStatus%, Thumbnail
|
||||
|
||||
Gui, Add, Checkbox, x%GroupBoxCheckboxPos% y+%MarginSpace% vRumble Checked%RumbleCheckStatus% gUpdateVars, Rumble
|
||||
|
||||
if(VideoTotalBitrate > 300000)
|
||||
Gui, Add, Checkbox, vBrighteon y+%MarginSpace% Checked%BrighteonCheckStatus% gUpdateVars, Brighteon
|
||||
else,{
|
||||
Gui, Add, Checkbox, cRed vBrighteon y+%MarginSpace% Checked0 gUpdateVars, Brighteon (Bitrate Below 300kbps)
|
||||
}
|
||||
|
||||
Gui, Add, Checkbox, vDailyMotion y+%MarginSpace% Checked%DailyMotionCheckStatus% gUpdateVars, DailyMotion
|
||||
; Gui, Add, Checkbox, vStreamanity Checked%StreamanityCheckStatus%, Streamanity
|
||||
|
||||
; Gui, Font, s12
|
||||
gui, Font, Bold
|
||||
Gui, Add, GroupBox, r6.5 y+%MarginSpaceTripled% vImageThumbnail x%PageTwoXStartPos% w%PageTwoGroupBoxWidth%,Thumbnail
|
||||
gui, Font, Normal
|
||||
Gui, Add, Picture, xp+10 yp+20 w%ThumbnailPreviewWidth% h-1, %VideoThumbFilepath%
|
||||
|
||||
|
||||
gui, Font, Normal
|
||||
gui, font, s7
|
||||
Gui, Add, StatusBar,Center, Total Videos Uploaded: %TotalVideosUploaded% | Total Clicks Saved: %MouseClicksSaved%
|
||||
|
||||
|
||||
; Show GUI to the user
|
||||
Gui, +Resize +MaximizeBox
|
||||
|
||||
if(XPosition and YPosition)
|
||||
Gui, Show, x%XPosition% y%YPosition%, %FullScriptName% - Upload Settings - %BodyTextFilePath%
|
||||
else,
|
||||
Gui, Show,, %FullScriptName% - Upload Settings - %BodyTextFilePath%
|
||||
|
||||
ControlFocus, Edit4, %FullScriptName%
|
||||
ToolTip
|
||||
|
||||
Return
|
||||
94
Modules/GUI-Results-Window.ahk
Normal file
94
Modules/GUI-Results-Window.ahk
Normal file
@@ -0,0 +1,94 @@
|
||||
|
||||
Gui, Font, s%GuiFontSize%
|
||||
Gui, Font, Bold
|
||||
; Gui, Add, Text,x10 y+10, Podcast #:
|
||||
Gui, Add, Button, x10 y+%Marginspace% h%ButtonHeights% w%CopyButtonWidths% gCopyPodcastNumber, Podcast #
|
||||
Gui, Font, Normal
|
||||
Gui, Add, Edit, x+5 yp+0 h%ButtonHeights% w%ResultEditBoxWidths% gUpdateVars vPodcastNumber, %PodcastNumber%
|
||||
|
||||
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
|
||||
340
Modules/GUI-Windows.ahk
Normal file
340
Modules/GUI-Windows.ahk
Normal file
@@ -0,0 +1,340 @@
|
||||
|
||||
DisplayMainGUI:
|
||||
|
||||
;---GUI Variables---
|
||||
;------------------------------------------------
|
||||
GuiHeight = 800
|
||||
GuiWidth = 1366
|
||||
GuiFontSize = 10
|
||||
|
||||
ButtonHeights := 30
|
||||
|
||||
MarginSpace := 10
|
||||
MarginSpaceDoubled := MarginSpace * 2
|
||||
MarginSpaceTripled := MarginSpace * 3
|
||||
|
||||
EditBoxWidths := (GuiWidth / 100) * 60
|
||||
EditBoxHalfWidths := (EditBoxWidths / 2) - (MarginSpace / 2)
|
||||
OdyseeURLSlugEditWidth := (EditBoxHalfWidths / 4) * 3
|
||||
|
||||
PodcastNumberTextXPos := EditBoxHalfWidths + OdyseeURLSlugEditWidth + (MarginSpace * 3)
|
||||
PodcastNumberEditWidth := (EditBoxHalfWidths / 4) - MarginSpace
|
||||
|
||||
EditBoxOneFourthWidth := (EditBoxWidths / 4 )
|
||||
EditBoxThreeFourthsWidth := (EditBoxWidths / 4 ) * 3
|
||||
|
||||
|
||||
ColumnOneHalfWidthXPos := EditBoxHalfWidths + MarginSpaceDoubled
|
||||
|
||||
EditBoxThirdsWidths := (EditBoxWidths / 3) - (MarginSpace / 2)
|
||||
OdyseeURLSlugXPos := EditBoxHalfWidths + (MarginSpace * 2)
|
||||
|
||||
EditBoxFourthWidths := (EditBoxWidths / 4) - (MarginSpace - 2)
|
||||
VideoTagsTextXPos := EditBoxHalfWidths + (MarginSpace * 2)
|
||||
|
||||
; EditBoxHalfWidthsWithMargin := (EditBoxWidths / 2)
|
||||
DescriptionCharCountXPos := EditBoxWidths - 40
|
||||
|
||||
PageTwoXStartPos := EditBoxWidths + 50
|
||||
|
||||
CopyButtonWidths := 150
|
||||
ResultEditBoxXPos := CopyButtonWidths + MarginSpace + 5
|
||||
ResultEditBoxWidths := EditBoxWidths - CopyButtonWidths
|
||||
|
||||
ResultEditBoxHalfWidths := (ResultEditBoxWidths / 2) - (MarginSpace /2)
|
||||
ResultLBRYURLEditBoxWidthPieces := (ResultEditBoxWidths / 4)
|
||||
ResultLBRYURLEditBoxWidths := ResultLBRYURLEditBoxWidthPieces * 3
|
||||
|
||||
ResultEditBoxThirdsWidths := (ResultEditBoxWidths / 3) - (MarginSpace /3)
|
||||
|
||||
|
||||
ResultLBRYThumbEditBoxWidth := ResultLBRYURLEditBoxWidthPieces - 5
|
||||
|
||||
ErrorLogEditBoxXPos := ResultEditBoxWidths + CopyButtonWidths + 30
|
||||
ErrorLogEditBoxHeight := GuiHeight - (MarginSpace * 20) - (ButtonHeights * 2)
|
||||
ErrorLogEditBoxWidth := GuiWidth - ErrorLogEditBoxXPos - (MarginSpace * 12)
|
||||
|
||||
|
||||
ButtonWidths := 150
|
||||
ButtonXPos := GuiWidth - ButtonWidths - 15
|
||||
|
||||
SubmitButtonYLocation := GuiHeight - 50
|
||||
SubmitButtonXLocation := GuiWidth - 90
|
||||
CancelButtonXLocation := GuiWidth - 180
|
||||
|
||||
EditBoxHeight := 25
|
||||
ThumbnailPreviewWidth := 300
|
||||
PageTwoGroupBoxWidth := ThumbnailPreviewWidth + 20
|
||||
|
||||
; Size of Description Edit Box and the location of the checkboxes underneath them
|
||||
VideoDescriptionEditBoxHeight = 100
|
||||
CheckboxesStartYPos := 630
|
||||
|
||||
FilePathEditBoxWidths := EditBoxWidths - MarginSpace - 70
|
||||
SelectFileButtonWidths := 30
|
||||
|
||||
ButtonStartYPos := CheckboxesStartYPos + 10
|
||||
MarginSquared := MarginSpace * 2
|
||||
|
||||
if(DevMode){
|
||||
MainButtonHeight := 30
|
||||
SecondaryButtonHeights := 30
|
||||
|
||||
}
|
||||
else, {
|
||||
MainButtonHeight := 30
|
||||
SecondaryButtonHeights := 35
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
; -------------------------------GUI-------------------------------
|
||||
|
||||
Gui, Font, s%GuiFontSize%
|
||||
Gui, Margin, %MarginSpace%, %MarginSpace%
|
||||
|
||||
; Video Title
|
||||
Gui, Font, Bold
|
||||
Gui, Add, Text,, Show Title
|
||||
Gui, Add, Text, x%ColumnOneHalfWidthXPos% yp+0,Odysee URL Slug
|
||||
Gui, Add, Text, x%PodcastNumberTextXPos% yp+0,Podcast #
|
||||
|
||||
|
||||
Gui, Font, Normal
|
||||
Gui, Add, Edit, y+5 x%MarginSpace% 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+%Marginspace% w%PodcastNumberEditWidth% h%EditBoxHeight% gUpdateVars vPodcastNumber, %PodcastNumber%
|
||||
|
||||
; LBRY URL
|
||||
Gui, Font, Bold
|
||||
Gui, Add, Text, x%Marginspace%,Video Tags (Comma Seperated)
|
||||
Gui, Add, Text,x%ColumnOneHalfWidthXPos% yp+0,Podcast Tags (Comma Seperated)
|
||||
|
||||
Gui, Font, Normal
|
||||
Gui, Add, Edit, x%Marginspace% Y+5 w%EditBoxHalfWidths% h%EditBoxHeight% gUpdateVars vVideoTags, %VideoTags%
|
||||
Gui, Add, Edit, yp+0 x+%Marginspace% w%EditBoxHalfWidths% h%EditBoxHeight% gUpdateVars vPodcastTags, %PodcastTags%
|
||||
|
||||
|
||||
; Video Description
|
||||
Gui, Font, Bold
|
||||
|
||||
if(NoOriginalVideoDescription)
|
||||
Gui, Add, Text,cRed y+%Marginspace% x%Marginspace%,Video Description
|
||||
else,
|
||||
Gui, Add, Text,y+%Marginspace% x%Marginspace%,Video Description:
|
||||
|
||||
|
||||
if(TestingMode)
|
||||
Gui, Add, Text,cRed yp+0 xp+150 ,TESTING MODE
|
||||
|
||||
if(DevMode)
|
||||
Gui, Add, Text,cRed yp+0 xp+150 ,DEV MODE
|
||||
|
||||
Gui, Font, Normal
|
||||
Gui, Add, Edit,x%Marginspace% y+2 w%EditBoxWidths% h%VideoDescriptionEditBoxHeight% vVideoDescription gSubmitDescription,%VideoDescription%
|
||||
gui, font, s8
|
||||
Gui, font, Bold
|
||||
if(DescriptionCharCount > 3000){
|
||||
Gui, Add, Edit,cRed w50 h20 x%DescriptionCharCountXPos% y+1 vDescriptionCharCount, %DescriptionCharCount%
|
||||
}
|
||||
else,
|
||||
Gui, Add, Edit, w50 h20 x%DescriptionCharCountXPos% y+1 vDescriptionCharCount, %DescriptionCharCount%
|
||||
Gui, Font, Normal
|
||||
Gui, Add,Text, yp+3 xp-310, (Platform Char. Limits: DM+Bitchute = 3K, Odysee,Brighteon = 5K)
|
||||
Gui, Font, s%GuiFontSize%
|
||||
Gui, font, Bold
|
||||
Gui, Add, GroupBox,r8.5 x%MarginSpace% yp+10 w%EditBoxWidths% Center, Filepaths
|
||||
|
||||
; Video Filepath
|
||||
Gui, Font, Bold
|
||||
Gui, Add, Text,xp+5 yp+15,Video Filepath
|
||||
Gui, Font, Normal
|
||||
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
|
||||
|
||||
; Video Thumbnail Filepath
|
||||
Gui, Font, Bold
|
||||
if(NoOriginalVideoThumbFilepath)
|
||||
Gui, Add, Text, x%MarginSquared% CRed y+15,Video Thumbnail Filepath
|
||||
else,
|
||||
Gui, Add, Text,y+15 x%MarginSquared% ,Video Thumbnail Filepath
|
||||
Gui, Font, Normal
|
||||
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
|
||||
; WAV Audio File Filepath
|
||||
Gui, Font, Bold
|
||||
if(WavAudioFilepath = "")
|
||||
Gui, Add, Text,cRed x%MarginSquared% y+15,WAV Filepath
|
||||
else, { ; change text depending on if WAV or FLAC file
|
||||
if(InStr(WavFilepath, ".flac"))
|
||||
Gui, Add, Text,x%MarginSquared% y+15,FLAC Filepath
|
||||
else,
|
||||
Gui, Add, Text,x%MarginSquared% y+15,WAV Filepath
|
||||
}
|
||||
Gui, Font, Normal
|
||||
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, Font, Bold
|
||||
if(MP3AudioFilepath = "")
|
||||
Gui, Add, Text,cRed x%MarginSquared% y+15,Podcast MP3 Filepath
|
||||
else,
|
||||
Gui, Add, Text,x%MarginSquared% y+15,Podcast MP3 Filepath
|
||||
Gui, Font, Normal
|
||||
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
|
||||
|
||||
|
||||
; Submit Button
|
||||
Gui, Font, s%GuiFontSize%
|
||||
gui, Font, Bold
|
||||
|
||||
; if(DevMode)
|
||||
; Gui, Add, Button, x%MarginSpace% w%EditBoxHalfWidths% y+25 h%MainButtonHeight% gCancelPost hwndIcon, Close
|
||||
; else,
|
||||
|
||||
|
||||
; Script Update Button
|
||||
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, Font, s20
|
||||
; Gui, Font, Bold
|
||||
Gui, Add, Button, x+%MarginSpace% w%EditBoxHalfWidths% h%SecondaryButtonHeights% gStartScript, UPLOAD
|
||||
|
||||
|
||||
Gui, Font, s%GuiFontSize%
|
||||
|
||||
; Chrome Update Button
|
||||
if(ChromeUpdateAvailable){
|
||||
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){
|
||||
Gui, Add, Button, x%MarginSpace% w%EditBoxFourthWidths% h30 y+5 h%SecondaryButtonHeights% gOpenErrorLog, Open ErrorLog
|
||||
Gui, Add, Button, x+%MarginSpace% w%EditBoxFourthWidths% h30 h%SecondaryButtonHeights% gClearVideoLinks, Clear VideoLinks
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
; -------------------------------Page 2 Side of Main GUI Window-------------------------------
|
||||
LineSplitXPosition := PageTwoXStartPos - ( MarginSpace * 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/
|
||||
; Thumbnail Preview
|
||||
Gui, Font, Normal
|
||||
gui, Font, s4
|
||||
; Miscellaneous Settings
|
||||
DevModToggleButton := PageTwoXStartPos + 160
|
||||
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+5 y5 w50 h10 gOpenGiteaPage, Gitea
|
||||
|
||||
Gui, Font, s%GuiFontSize%
|
||||
Gui, Font, Bold
|
||||
|
||||
; Settings Section
|
||||
Gui, Add, GroupBox,r5 y+0 x%PageTwoXStartPos% w%PageTwoGroupBoxWidth%,Settings
|
||||
Gui, Add, Checkbox, xp+10 yp+20 vAutoUpdateCheck gUpdateVars Checked%AutoUpdateCheckCheckStatus%, Auto Update Check
|
||||
Gui, Add, Checkbox, vShowTooltipProgress Checked%ShowTooltipProgressCheckStatus% gUpdateVars,Show Tooltip Progress
|
||||
Gui, Add, Checkbox, vKillLBRYAfterUpload Checked%KillLBRYAfterUploadCheckStatus%, Kill LBRY After Uploading
|
||||
Gui, Add, Checkbox, vAutoLogin gUpdateVars Checked%AutoLoginCheckStatus%, Try to Login Automatically
|
||||
Gui, Add, Checkbox, vPingOnCompletion gUpdateVars Checked%PingOnCompletionCheckStatus%, Discord Ping Upon Completion
|
||||
|
||||
|
||||
GroupBoxCheckboxPos := PageTwoXStartPos + MarginSpace
|
||||
|
||||
; -------------------------------PLATFORMS-------------------------------
|
||||
Gui, Add, GroupBox,r6 y+%MarginSpaceTripled% x%PageTwoXStartPos% w%PageTwoGroupBoxWidth%, Platforms
|
||||
|
||||
; Msgbox % "LocalsURL: " LocalsURL
|
||||
; if(VideoFileSizeInMB < 1792)
|
||||
; Gui, Add, Checkbox, x+%MarginSpaceDoubled% vFacebook Checked%FacebookCheckStatus%, Facebook
|
||||
|
||||
Gui, Add, Checkbox, xp+10 yp+25 vBitChute Checked%BitChuteCheckStatus% gUpdateVars, BitChute
|
||||
|
||||
|
||||
if(LocalsURL = "LocalsUploadStartedNeedToGrabURL"){
|
||||
; msgbox, checking grab url
|
||||
Gui, Add, Checkbox, x+%MarginSpaceTripled% yp+0 vLocalsGrabURL Checked%LocalsCheckStatus% gUpdateVars, Locals (Grab URL)
|
||||
LocalsGrabURL := 1
|
||||
Locals := 0
|
||||
}
|
||||
else, {
|
||||
; msgbox, checking locals
|
||||
Gui, Add, Checkbox, x+%MarginSpaceTripled% yp+0 vLocals Checked%LocalsCheckStatus% gUpdateVars, Locals
|
||||
LocalsGrabURL := 0
|
||||
Locals := 1
|
||||
}
|
||||
|
||||
Gui, Add, Checkbox, x%GroupBoxCheckboxPos% y+%MarginSpace% vOdyseeVideo Checked%OdyseeVideoCheckStatus% gUpdateVars, Odysee Video
|
||||
|
||||
if(VideoFileSizeInMB < 50)
|
||||
Gui, Add, Checkbox, vTelegram x+%MarginSpaceTripled% yp+0 Checked%TelegramCheckStatus% gUpdateVars, Telegram (>50 MB)
|
||||
|
||||
|
||||
; Gui, Add, Checkbox, x+%MarginSpace% vOdyseeVideoThumb Checked%OdyseeVideoThumbCheckStatus%,Thumbnail
|
||||
Gui, Add, Checkbox, x%GroupBoxCheckboxPos% y+%MarginSpace% vOdyseeAudio Checked%OdyseeAudioCheckStatus% gUpdateVars, Odysee Audio
|
||||
; Gui, Add, Checkbox, x+%MarginSpace% vOdyseeAudioThumb Checked%OdyseeAudioThumbCheckStatus%, Thumbnail
|
||||
|
||||
Gui, Add, Checkbox, x%GroupBoxCheckboxPos% y+%MarginSpace% vRumble Checked%RumbleCheckStatus% gUpdateVars, Rumble
|
||||
|
||||
if(VideoTotalBitrate > 300000)
|
||||
Gui, Add, Checkbox, vBrighteon y+%MarginSpace% Checked%BrighteonCheckStatus% gUpdateVars, Brighteon
|
||||
else,{
|
||||
Gui, Add, Checkbox, cRed vBrighteon y+%MarginSpace% Checked0 gUpdateVars, Brighteon (Bitrate Below 300kbps)
|
||||
}
|
||||
|
||||
Gui, Add, Checkbox, vDailyMotion y+%MarginSpace% Checked%DailyMotionCheckStatus% gUpdateVars, DailyMotion
|
||||
; Gui, Add, Checkbox, vStreamanity Checked%StreamanityCheckStatus%, Streamanity
|
||||
|
||||
; Gui, Font, s12
|
||||
gui, Font, Bold
|
||||
Gui, Add, GroupBox, r6.5 y+%MarginSpaceTripled% vImageThumbnail x%PageTwoXStartPos% w%PageTwoGroupBoxWidth%,Thumbnail
|
||||
gui, Font, Normal
|
||||
Gui, Add, Picture, xp+10 yp+20 w%ThumbnailPreviewWidth% h-1, %VideoThumbFilepath%
|
||||
|
||||
|
||||
gui, Font, Normal
|
||||
gui, font, s7
|
||||
Gui, Add, StatusBar,Center, Total Videos Uploaded: %TotalVideosUploaded% | Total Clicks Saved: %MouseClicksSaved%
|
||||
|
||||
|
||||
; Show GUI to the user
|
||||
Gui, +Resize +MaximizeBox
|
||||
|
||||
if(XPosition and YPosition)
|
||||
Gui, Show, x%XPosition% y%YPosition%, %FullScriptName% - Upload Settings - %BodyTextFilePath%
|
||||
else,
|
||||
Gui, Show,, %FullScriptName% - Upload Settings - %BodyTextFilePath%
|
||||
|
||||
ControlFocus, Edit4, %FullScriptName%
|
||||
ToolTip
|
||||
|
||||
Return
|
||||
135
Modules/LBRY-Process-Killer.ahk
Normal file
135
Modules/LBRY-Process-Killer.ahk
Normal file
@@ -0,0 +1,135 @@
|
||||
;---ENVIRONMENT---------------------------------------------------------------------
|
||||
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
|
||||
;#Warn ; Enable warnings to assist with detecting common errors.
|
||||
;DetectHiddenWindows, On
|
||||
#SingleInstance, Force
|
||||
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, %A_scriptDir%\Assets\LBRY-Process-Killer.ico
|
||||
|
||||
;---Notes/Extra Info/#Includes------------------------------------------------------
|
||||
|
||||
|
||||
;---VARIABLES-----------------------------------------------------------------------
|
||||
global DiscordWebhookBotURL
|
||||
|
||||
PassedParameter = %1%
|
||||
if(PassedParameter = "Kill")
|
||||
ExitApp
|
||||
|
||||
IniRead, DiscordWebhookBotURL, %A_scriptDir%\..\Settings.ini, General, DiscordWebhookBotURL, %A_Space%
|
||||
if(DiscordWebhookBotURL = ""){
|
||||
; msgbox, Unable to Read Settings.ini for DiscordWebhookBotURL.`nProgram will not be able to post seed status to Discord
|
||||
; ExitApp
|
||||
}
|
||||
|
||||
|
||||
;---MAIN SCRIPT---------------------------------------------------------------------
|
||||
lbrynetlog_FP = C:\Users\%A_Username%\AppData\Local\lbry\lbrynet\lbrynet.log
|
||||
if(!FileExist(lbrynetlog_FP)){
|
||||
Message = lbrynet.log not found in the usual location. `nPlease submit issue on gitea to add functionality for custom locations.`nClick OK to open gitea page.
|
||||
msgbox % Message
|
||||
run, https://git.zinchuk.xyz/yuriy/LBRY-Process-Killer
|
||||
ExitApp
|
||||
}
|
||||
|
||||
|
||||
FileRead, lbrynetlogContents, C:\Users\%A_Username%\AppData\Local\lbry\lbrynet\lbrynet.log
|
||||
if(lbrynetlogContents = ""){
|
||||
Message = LBRYNet.log exists at normal location, but is currently empty. `nPlease submit issue on gitea about this error message `nClick OK to open gitea page and exit.
|
||||
msgbox % Message
|
||||
run, https://git.zinchuk.xyz/yuriy/LBRY-Process-Killer
|
||||
ExitApp
|
||||
}
|
||||
|
||||
; Msgbox % "lbrynetlogContents: " lbrynetlogContents
|
||||
|
||||
LogContentsArray := StrSplit(lbrynetlogContents, "`n")
|
||||
OriginalArrayLenght := LogContentsArray.Length() ; Save total number of items in the array
|
||||
|
||||
Loop, 45 { ; 3.75 hours, if not complete by this time then exit
|
||||
sleep, 300000 ; 5 minutes
|
||||
; sleep, 60000
|
||||
if(A_index = 6 OR A_index = 12 OR A_index = 24 OR A_index = 36 OR A_index = 48){ ; 30, 60, 120 minutes
|
||||
Message = LBRY: Still waiting for Video to finish Uploading to Reflectors
|
||||
PostProgressToDiscord(Message)
|
||||
}
|
||||
|
||||
FileRead, lbrynetlogContents, C:\Users\%A_username%\AppData\Local\lbry\lbrynet\lbrynet.log
|
||||
UpdatedLogContentsArray := StrSplit(lbrynetlogContents, "`n")
|
||||
ArrayLenght := UpdatedLogContentsArray.Length() ; Count number of individual rows
|
||||
|
||||
Loop, %ArrayLenght% {
|
||||
if(A_index < %OriginalArrayLenght%)
|
||||
Continue ; Skip all lines that that were present in the original .log
|
||||
|
||||
CurrentLineContents := UpdatedLogContentsArray[A_index]
|
||||
|
||||
if(InStr(CurrentLineContents, "Finished sending reflector")){ ; Upload Complete Text on lbrylog
|
||||
SeedingComplete := 1 ; mark seeding as complete and go to next loop
|
||||
OriginalArrayLenght := A_index ; set variable to equal this loop number. So all lines up to this one get skipped next loop round
|
||||
Continue
|
||||
}
|
||||
|
||||
if(InStr(CurrentLineContents, "Sent reflector blob")){ ; Means "Still Uploading" in LBRY API
|
||||
SeedingComplete := 0 ; mark seeding as incomplete as there is still an upload in progress
|
||||
Continue
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
if(SeedingComplete){
|
||||
Process, Close, LBRY.exe ; terminate LBRY if it's running
|
||||
|
||||
if(DiscordWebhookBotURL){
|
||||
Message = LBRY: Video Finished Seeding to Reflectors. LBRY Process Killed.
|
||||
PostProgressToDiscord(Message)
|
||||
}
|
||||
|
||||
ExitApp
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
;---FUNCTIONS-----------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
PostProgressToDiscord(Message){
|
||||
; Need to transform the message into a json string:
|
||||
FormatTime, CurrentTime, YYYYMMDDHH24MISS, hh:mm
|
||||
; Message := "-----------" . CurrentTime . "-----------" . "`n" . Message ; add a ------- to the top of the message to help split them up visually on discord
|
||||
|
||||
; Escape Backslashes
|
||||
Message := StrReplace(Message, "", "\/")
|
||||
|
||||
; Escape quotation marks
|
||||
SingleQuotationmark = "
|
||||
ReplacedQuote = \"
|
||||
Message := StrReplace(Message, SingleQuotationmark, ReplacedQuote)
|
||||
|
||||
; Escape New Character
|
||||
Message := StrReplace(Message, "`n", "\n")
|
||||
|
||||
; Convert into json string
|
||||
JsonString=
|
||||
(
|
||||
{
|
||||
"content": "%Message%"
|
||||
}
|
||||
)
|
||||
try WebRequest := ComObjCreate("WinHttp.WinHttpRequest.5.1")
|
||||
try WebRequest.Open("POST", DiscordWebhookBotURL, false)
|
||||
try WebRequest.SetRequestHeader("Content-Type", "application/json")
|
||||
try WebRequest.Send(JsonString)
|
||||
}
|
||||
BIN
Modules/LBRY-Process-Killer.exe
Normal file
BIN
Modules/LBRY-Process-Killer.exe
Normal file
Binary file not shown.
BIN
Modules/LBRY-Process-Killer.ico
Normal file
BIN
Modules/LBRY-Process-Killer.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 319 KiB |
@@ -31,15 +31,19 @@ if(!FileExist(LBRYKillerPath)){
|
||||
; Msgbox % "LBRYKillerPath: " LBRYKillerPath
|
||||
; Msgbox % "LBRYProcessKillerURL: " LBRYProcessKillerURL
|
||||
LBRYKillerPath = %A_ScriptDir%\Lib\LBRY Process Killer.exe
|
||||
LBRYKillerUpdateURL = https://git.freedomainplaylists.com/attachments/7865dc8d-5aad-4f9f-8a30-94bab0192b1d
|
||||
LBRYKillerUpdateURL = https://freedomain.dev/yuriy/video-uploader/raw/branch/main/Modules/LBRY-Process-Killer.exe
|
||||
|
||||
UrlDownloadToFile, %LBRYKillerUpdateURL%, %LBRYKillerPath%
|
||||
; msgbox, work?
|
||||
; UrlDownloadToFile, URL, Filename
|
||||
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")
|
||||
@@ -87,7 +91,7 @@ if(LBRYURLSlug = "" OR LBRYURLSlug = "_Audio"){
|
||||
|
||||
; loops through array and creates a string of: --tags="tag1" --tags="tag2" --tags="tag3" so that it can be passed to lbrynet
|
||||
Loop % KeywordsArray.Length(){
|
||||
LBRYTags .= "--tags=" . SingleQuotationmark KeywordsArray[A_Index] . SingleQuotationmark . " "
|
||||
LBRYTags .= "--tags=" . SingleQuotationmark ArrayOfVideoTags[A_Index] . SingleQuotationmark . " "
|
||||
}
|
||||
|
||||
; Msgbox % "FilePathForLBRYAPI: " FilePathForLBRYAPI
|
||||
|
||||
@@ -13,31 +13,14 @@ if(LocalsPostPageURL = ""){
|
||||
Return
|
||||
}
|
||||
|
||||
if(!InStr(LocalsPostPageURL, "/share/post")){
|
||||
LocalsPostPageURL .= "/share/post"
|
||||
if(InStr(LocalsPostPageURL, "/share/post")){
|
||||
LocalsPostPageURL := StrReplace(LocalsPostPageURL, "/share/post", "")
|
||||
}
|
||||
|
||||
; replace any double slashes that migth have come from the combining
|
||||
; LocalsPostPageURL := StrReplace(LocalsPostPageURL, "//", "/")
|
||||
|
||||
|
||||
Status := NavigateFromBaseURLTo(LocalsPostPageURL)
|
||||
if(Status)
|
||||
Return
|
||||
|
||||
/*
|
||||
if(DevMode){
|
||||
MsgBox 0x4, DevMode Skip, Skip uploading section and skip straight to grab URL?
|
||||
|
||||
IfMsgBox Yes, {
|
||||
goto, Devmodeskip
|
||||
} Else IfMsgBox No, {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
|
||||
Message = Waiting for Page to fully load
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile")
|
||||
@@ -58,31 +41,43 @@ if(DevMode){
|
||||
}
|
||||
}
|
||||
|
||||
Message = Inputting Title
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile")
|
||||
|
||||
Xpath = //input[@id='title']
|
||||
Status := Selenium_LoopToSendValueToXpath(Xpath:=Xpath,NumOfLoops:=5,SleepLength:=1000,StringTextContent:=VideoTitle)
|
||||
if(Status){
|
||||
Message = Failed to input Title
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||
}
|
||||
|
||||
sleep, 1000
|
||||
|
||||
/*Xpath = //textarea[@id='body']
|
||||
Status := Selenium_LoopToSendValueToXpath(Xpath:=Xpath,NumOfLoops:=5,SleepLength:=1000,StringTextContent:=VideoDescription)
|
||||
if(Status){
|
||||
Message = Failed to input Body
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||
}
|
||||
*/
|
||||
|
||||
; Input Description
|
||||
TooltipThis("Inputting Description")
|
||||
TooltipThis("Inputting Title")
|
||||
Loop, 5 { ; Attempt to input video description a couple of times
|
||||
|
||||
|
||||
if(A_index = 5){
|
||||
; Clipboard := VideoDescription
|
||||
Message = Failed to input Video Title
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||
Return
|
||||
}
|
||||
|
||||
js = document.querySelector("#title").value = "%JSVideoTitle%"; ; Send content through javascript (Great for getting around emoji chrome limitaitons)
|
||||
try driver.executeScript(js) ;Executes a Javascript on the webpage, mostly used for buttons.
|
||||
|
||||
; msgbox
|
||||
; try driver.findElementsByName("body").item[1].SendKeys(driver.Keys.SPACE)
|
||||
; driver.findElementsByID("ELEMENTID").item[1].SendKeys(driver.Keys.ENTER)
|
||||
; msgbox
|
||||
|
||||
jsCheck = return document.querySelector("#title").value; ; Send content through javascript (Great for getting around emoji chrome limitaitons)
|
||||
try VideoTitle := driver.executeScript(jsCheck) ;Executes a Javascript on the webpage, mostly used for buttons.
|
||||
|
||||
|
||||
; try Description := driver.findElementsByName("body").item[1].Attribute("value") ;XPath: ID=site-title & span tag
|
||||
if(VideoTitle != "")
|
||||
Break
|
||||
sleep, 2000
|
||||
}
|
||||
|
||||
|
||||
|
||||
; Input Video Description
|
||||
; ------------------------------------------------
|
||||
TooltipThis("Inputting Description")
|
||||
Loop, 5 {
|
||||
|
||||
|
||||
if(A_index = 5){
|
||||
Clipboard := VideoDescription
|
||||
Message = Unable to Input Video Description`nDescription copied to clipboard, please paste it in at your earliest convenience.
|
||||
@@ -93,10 +88,7 @@ Loop, 5 { ; Attempt to input video description a couple of times
|
||||
js = document.getElementsByName('body')[0].value = "%JSVideoDescription%"; ; Send content through javascript (Great for getting around emoji chrome limitaitons)
|
||||
try driver.executeScript(js) ;Executes a Javascript on the webpage, mostly used for buttons.
|
||||
|
||||
; msgbox
|
||||
try driver.findElementsByName("body").item[1].SendKeys(driver.Keys.SPACE)
|
||||
; driver.findElementsByID("ELEMENTID").item[1].SendKeys(driver.Keys.ENTER)
|
||||
; msgbox
|
||||
|
||||
jsCheck = return document.getElementsByName('body')[0].value; ; Send content through javascript (Great for getting around emoji chrome limitaitons)
|
||||
try Description := driver.executeScript(jsCheck) ;Executes a Javascript on the webpage, mostly used for buttons.
|
||||
@@ -108,7 +100,7 @@ Loop, 5 { ; Attempt to input video description a couple of times
|
||||
sleep, 2000
|
||||
}
|
||||
|
||||
SaveOrPostProgress(Message:="Waiting Video to finish uploading",PostType:="Tooltip,ErrorLoggingTextFile")
|
||||
; SaveOrPostProgress(Message:="Waiting Video to finish uploading",PostType:="Tooltip,ErrorLoggingTextFile")
|
||||
Message = Uploading Video File
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile")
|
||||
Xpath = //div[@class='uploadvideo-wrapper']//input[@name='Filedata']
|
||||
@@ -123,9 +115,6 @@ if(Status){
|
||||
; check if the "Auto Submit Post" checkbox is checked, and if not check it
|
||||
js = return document.querySelector("#autosubmit_enabled").checked;
|
||||
try AutoSubmitstatus := driver.executeScript(js)
|
||||
; DevModeMsgBox(status)
|
||||
; message = AutoSubmitstatus: %AutoSubmitstatus%
|
||||
; DevModeMsgBox(message)
|
||||
|
||||
if(AutoSubmitstatus = "0"){
|
||||
js = document.querySelector("li[id='autosubmit_container'] small").click() ; ; CHECK YES
|
||||
@@ -148,8 +137,6 @@ if(AutoSubmitstatus = "0"){
|
||||
}
|
||||
|
||||
|
||||
DevModeMsgBox("autosubmit status -1 string here")
|
||||
; msgbox % AutoSubmitstatus = "-1"
|
||||
if(AutoSubmitstatus = "-1"){ ; if checked YES
|
||||
|
||||
; check that there are no error messages
|
||||
@@ -189,15 +176,8 @@ if(AutoSubmitstatus = "-1"){ ; if checked YES
|
||||
IniWrite, %LocalsURL%, %VideoLinksIniFile%, URLs, LocalsURL
|
||||
AddToTotalVideosUploadedCount()
|
||||
|
||||
; Msgbox % "LocalsURL: " LocalsURL
|
||||
; Msgbox % "VideoLinksIniFile: " VideoLinksIniFile
|
||||
;
|
||||
; FileRead, inicontents, %VideoLinksIniFile% ; , Filename
|
||||
; Msgbox % "inicontents: " inicontents
|
||||
|
||||
; IniWrite, Value, Filename, Section, Key
|
||||
|
||||
; LocalsTabURL := SaveDriverURL()
|
||||
; Set variable so that URL gets grabbed later in the upload
|
||||
LocalsGrabURL := 1
|
||||
|
||||
Return
|
||||
}
|
||||
@@ -211,11 +191,16 @@ Return
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
;--------------LocalsGrabURL----------------------------------
|
||||
LocalsGrabURL:
|
||||
|
||||
CurrentSite := Locals
|
||||
|
||||
CurrentSite := "Locals"
|
||||
; msgbox, pause
|
||||
SaveOrPostProgress(Message:="Navigating to Locals Feed to grab URL",PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||
; SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile")
|
||||
|
||||
@@ -237,7 +222,6 @@ if(Status = "Failed"){
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||
Return
|
||||
}
|
||||
; Msgbox % "Status: " Status
|
||||
|
||||
|
||||
try currentpageURL := driver.url
|
||||
@@ -254,51 +238,97 @@ Return
|
||||
js = return document.querySelector("a[class='btn']").innerText;
|
||||
try, status := driver.executeScript(js)
|
||||
if(status){
|
||||
Message = Video was uploaded but Locals saved it as a draft instead of instantly publishing it. Please go to the Locals Page and Retrieve Draft and manually Publish it.
|
||||
Message = Video is in Draft Mode. Publishing.
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,DiscordErrorLogging")
|
||||
|
||||
; video is in draft mode, we need to confirm the title and then publish it.
|
||||
|
||||
; click Retrieve draft button
|
||||
js = document.querySelector("a[class='btn']").click()
|
||||
try, driver.executeScript(js)
|
||||
|
||||
js = return document.querySelector("#title").value
|
||||
try LocalsDraftTitle := driver.executeScript(JS)
|
||||
|
||||
if(LocalsDraftTitle != VideoTitle){
|
||||
Message = Failed to Grab URL. Locals Draft Title does not Match video Title:`nVideo Title: %VideoTitle%`nLocals Draft Title: %LocalsDraftTitle%
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||
SaveDriverURLOFErrorPage()
|
||||
Return
|
||||
}
|
||||
|
||||
; otherwise we are good to publish video
|
||||
Xpath = (//button[@name='submitPost'])[1]
|
||||
Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000)
|
||||
if(Status){
|
||||
Message = Failed to click Publish button on saved Draft
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||
SaveDriverURLOFErrorPage()
|
||||
Return
|
||||
}
|
||||
|
||||
sleep, 2000
|
||||
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
; Get word that's longer than 4 characters in video title
|
||||
VideoTitleArray := StrSplit(VideoTitle, " ")
|
||||
; Iterate from 1 to the end of the array:
|
||||
Loop % VideoTitleArray.Length(){
|
||||
VideoTitleFirstWord := VideoTitleArray[A_Index]
|
||||
VideoTitleFirstWord := StrReplace(VideoTitleFirstWord, "_","-")
|
||||
if(StrLen(VideoTitleFirstWord) > 4)
|
||||
LongestWordInVideoTitle := VideoTitleArray[A_Index]
|
||||
LongestWordInVideoTitle := StrReplace(LongestWordInVideoTitle, "_","-")
|
||||
if(StrLen(LongestWordInVideoTitle) > 4)
|
||||
Break
|
||||
|
||||
; MsgBox % VideoTitleArray[A_Index]
|
||||
|
||||
}
|
||||
|
||||
|
||||
*/
|
||||
|
||||
|
||||
; 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)
|
||||
LongestWordInVideoTitle := longestWord
|
||||
Msgbox % "LongestWordInVideoTitle: " LongestWordInVideoTitle
|
||||
|
||||
; MsgBox, Longest word: %longestWord%`, #%wordLength%
|
||||
|
||||
|
||||
|
||||
|
||||
; Grab Video Share Link From Page Source
|
||||
; ------------------------------------------------
|
||||
; 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
|
||||
|
||||
Message = Looking for - %LongestWordInVideoTitle% - within first 7 posts in order to grab share URL
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||
|
||||
loop, 7 {
|
||||
ElementIndexNum := A_index - 1
|
||||
Message = ElementIndexNum: %ElementIndexNum%
|
||||
DevModeMsgBox(Message)
|
||||
; Msgbox % "ElementIndexNum: " ElementIndexNum
|
||||
|
||||
|
||||
jscheck = return document.getElementsByClassName('post-bottom')[%ElementIndexNum%].outerHTML;
|
||||
try outerHTML := driver.executeScript(jsCheck)
|
||||
|
||||
; clipboard := outerHTML
|
||||
; Msgbox % "outerHTML: " outerHTML
|
||||
|
||||
if(DevMode){
|
||||
Message = Looking for VideoTitleFirstWord: %VideoTitleFirstWord% `nwithin outerHTML
|
||||
Message = Looking for LongestWordInVideoTitle: %LongestWordInVideoTitle% `nwithin outerHTML: %outerHTML%
|
||||
DevModeMsgBox(message)
|
||||
Clipboard := outerHTML
|
||||
DevModeMsgBox(outerHTML)
|
||||
Clipboard := message
|
||||
; DevModeMsgBox(outerHTML)
|
||||
}
|
||||
|
||||
|
||||
; msgbox % "outerHTML: " . outerHTML
|
||||
|
||||
if(InStr(OuterHTML,VideoTitleFirstWord)){
|
||||
if(InStr(OuterHTML,LongestWordInVideoTitle)){
|
||||
|
||||
; @todo replace with regex
|
||||
Message = %VideoTitleFirstWord% is in`n`n %OuterHTML%
|
||||
Message = %LongestWordInVideoTitle% is in`n`n %OuterHTML%
|
||||
DevModeMsgBox(Message)
|
||||
|
||||
Message = Found at at index: %A_index%
|
||||
@@ -328,14 +358,18 @@ loop, 7 {
|
||||
ShareLink :=
|
||||
}
|
||||
|
||||
DevModeMsgBox(ShareLink)
|
||||
if(ShareLink = ""){
|
||||
Message = Video was published succsessfully, but failed to grab Share Link.
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||
SaveDriverURLOFErrorPage()
|
||||
Return
|
||||
}
|
||||
|
||||
; ShareLink := "Successful"
|
||||
|
||||
Message = Upload Complete: %ShareLink%
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||
|
||||
|
||||
DevModeMsgBox(ShareLink)
|
||||
IniWrite, %ShareLink%, %VideoLinksIniFile%, URLs, LocalsURL
|
||||
AddToTotalVideosUploadedCount()
|
||||
|
||||
@@ -343,253 +377,9 @@ SaveDriverURL()
|
||||
|
||||
|
||||
Return
|
||||
|
||||
|
||||
|
||||
;--------------/LocalsGrabURL----------------------------------
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
; GetLocals
|
||||
; Xpath = //div[@class='uppy-StatusBar-statusPrimary']
|
||||
|
||||
; sleep, 30000 ; wait 30 seconds
|
||||
; sleep, 2000
|
||||
|
||||
/*; Attach Custom Thumbnail
|
||||
if(VideoThumbFilepath != ""){
|
||||
Message = Attaching Custom Thumbnail
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile")
|
||||
|
||||
Xpath = //div[@class='custom-thumb-uploader']//input[@name='Filedata']
|
||||
Status := Selenium_LoopToSendValueToXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000,StringTextContent:=VideoThumbFilepath)
|
||||
|
||||
if(Status){
|
||||
Message = Failed to Attach Custom Thumbnail
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
|
||||
sleep, 10000
|
||||
Loop, %Number_of_loops_to_Check_Upload_status% {
|
||||
sleep, %Time_Between_Loops_Upload_Status%
|
||||
|
||||
jscheck = return document.getElementsByClassName('uppy-StatusBar-statusPrimary')[0].textContent;
|
||||
try UploadStatus := driver.executeScript(jsCheck)
|
||||
|
||||
; UploadStatus := StrSplit(UploadStatus, ": ")
|
||||
; UploadStatus := UploadStatus[2]
|
||||
|
||||
|
||||
; message = Waiting for Video To Finish Uploading. `nCurrent Status: %UploadStatus%
|
||||
; SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile")
|
||||
|
||||
|
||||
; Clipboard := jsCheck
|
||||
; msgbox % "textContent: " . textContent
|
||||
|
||||
|
||||
/* try UploadStatus := driver.findelementbyxpath(Xpath).Attribute("innerText") ; Grabb innertext
|
||||
catch e {
|
||||
if(A_index = 1){
|
||||
Message = Unable to find Progress Upload Percentage. Upload Most Likely Failed.
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||
}
|
||||
else,
|
||||
Break
|
||||
}
|
||||
*/
|
||||
|
||||
if(InStr(UploadStatus, "100%")){
|
||||
Message = Video Upload Complete. Waiting 20 seconds for Video to finalize before submitting.
|
||||
sleep, 20000
|
||||
break
|
||||
}
|
||||
|
||||
; if(UploadStatus != ""){
|
||||
; Message =
|
||||
; sleep, 30000 ; 30 seconds
|
||||
; Continue
|
||||
|
||||
; }
|
||||
|
||||
if(UploadStatus = "" and A_index = 1){
|
||||
Message = Upload Failed. Unable to Grab Upload Status
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||
SaveDriverURLOFErrorPage()
|
||||
Return
|
||||
}
|
||||
|
||||
; if(UploadStatus = ""){
|
||||
; Break
|
||||
; }
|
||||
|
||||
|
||||
Status := Check_For_Stuck_Video_Upload(A_index, UploadStatus)
|
||||
if(Status = "Failed")
|
||||
Return
|
||||
}
|
||||
|
||||
/*; attach custom thumbnail
|
||||
xpath = //label[normalize-space()='Upload Custom Video Thumbnail']
|
||||
Status := Selenium_LoopToSendValueToXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000,StringTextContent:=VideoThumbFilepath)
|
||||
if(Status){
|
||||
Message = Failed to Attach Thumbnail
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||
; SaveDriverURLOFErrorPage()
|
||||
; Return
|
||||
}
|
||||
Status := InputFilePathIntoOpenWindow(VideoThumbFilepath)
|
||||
|
||||
*/
|
||||
|
||||
; DevModeMsgBox("pause")
|
||||
|
||||
; Click the publish button
|
||||
js = document.getElementsByName('submitPost')[0].click();
|
||||
try driver.executeScript(js)
|
||||
|
||||
|
||||
Message = Waiting 5 seconds for Video to Get Processed
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile")
|
||||
sleep, 5000
|
||||
|
||||
|
||||
try currentpage := driver.url
|
||||
if(CUrrentpage = LocalsPostPageURL){
|
||||
Message = Final page is same as post page. Please double check if post was published successfully.
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||
Return
|
||||
}
|
||||
; sleep, 500
|
||||
; ToolTip
|
||||
; AddToTotalPostsPostedCount()
|
||||
|
||||
|
||||
Devmodeskip:
|
||||
|
||||
Message = Trying to Grab Share Link
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||
|
||||
|
||||
; refresh page
|
||||
try driver.executeScript("history.go(0)")
|
||||
try driver.executeScript("return document.readyState").equals("complete") ; wait until page loads completely before proceeding
|
||||
|
||||
; check for "Retrieve Draft button"
|
||||
js = return document.querySelector("a[class='btn']").innerText;
|
||||
try, status := driver.executeScript(js)
|
||||
if(status = "Retrieve Draft"){
|
||||
Message = Video was uploaded but Locals saved it as a draft instead of instantly publishing it. Please go to the Locals Page and Retrieve Draft and manually Publish it.
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||
SaveDriverURLOFErrorPage()
|
||||
Return
|
||||
}
|
||||
|
||||
|
||||
|
||||
; Get word that's longer than 4 characters in video title
|
||||
VideoTitleArray := StrSplit(VideoTitle, " ")
|
||||
; Iterate from 1 to the end of the array:
|
||||
Loop % VideoTitleArray.Length(){
|
||||
VideoTitleFirstWord := VideoTitleArray[A_Index]
|
||||
VideoTitleFirstWord := StrReplace(VideoTitleFirstWord, "_","-")
|
||||
if(StrLen(VideoTitleFirstWord) > 4)
|
||||
Break
|
||||
|
||||
; MsgBox % VideoTitleArray[A_Index]
|
||||
|
||||
}
|
||||
|
||||
; DevModeMsgBox(VideoTitleFirstWord)
|
||||
|
||||
; Message = VideoTitleFirstWord: %VideoTitleFirstWord%
|
||||
; SaveOrPostProgress(Message:=Message,PostType:=",ErrorLoggingTextFile")
|
||||
|
||||
; VideoTitleFirstWord := VideoTitleFirstWord[1]
|
||||
; Msgbox % "VideoTitleFirstWord: " VideoTitleFirstWord
|
||||
|
||||
/* ; Format the post title to remove all spaces and special characters to match with Locals Post
|
||||
ShareLinkFormatted := StrReplace(VideoTitle, " ", "-")
|
||||
ShareLinkFormatted := StrReplace(ShareLinkFormatted, "?", "")
|
||||
ShareLinkFormatted := StrReplace(ShareLinkFormatted, "!", "")
|
||||
ShareLinkFormatted := StrReplace(ShareLinkFormatted, ".", "")
|
||||
ShareLinkFormatted := StrReplace(ShareLinkFormatted, "", "")
|
||||
ShareLinkFormattedFirst5Chars := SubStr(ShareLinkFormatted, 1, 5)
|
||||
|
||||
*/
|
||||
|
||||
|
||||
|
||||
LocalsBaseURL := StrReplace(LocalsURL, "/share/post", "")
|
||||
; Msgbox % "LocalsPostPageURL: " LocalsPostPageURL
|
||||
; Msgbox % "LocalsURL: " LocalsURL
|
||||
; Msgbox % "LocalsBaseURL: " LocalsBaseURL
|
||||
loop, 5 {
|
||||
ElementIndexNum := A_index - 1
|
||||
DevModeMsgBox(ElementIndexNum)
|
||||
; Msgbox % "ElementIndexNum: " ElementIndexNum
|
||||
|
||||
|
||||
jscheck = return document.getElementsByClassName('post-bottom')[%ElementIndexNum%].outerHTML;
|
||||
try outerHTML := driver.executeScript(jsCheck)
|
||||
|
||||
; Clipboard := outerHTML
|
||||
; DevModeMsgBox(outerHTML)
|
||||
|
||||
; msgbox % "outerHTML: " . outerHTML
|
||||
|
||||
if(InStr(OuterHTML,VideoTitleFirstWord)){
|
||||
|
||||
Message = %VideoTitleFirstWord% is in %OuterHTML%
|
||||
; DevModeMsgBox(Message)
|
||||
|
||||
; MsgBox, found match at %A_index%
|
||||
|
||||
|
||||
|
||||
|
||||
ShareLink := StrSplit(OuterHTML, "data-url=")
|
||||
ShareLink := ShareLink[2]
|
||||
; DevModeMsgBox(ShareLink)
|
||||
; Msgbox % "ShareLink: " ShareLink
|
||||
|
||||
URLEndString = ">
|
||||
ShareLink := StrSplit(ShareLink, URLEndString)
|
||||
; ShareLink := ShareLink[1]
|
||||
|
||||
QuotationMark = "
|
||||
ShareLink := StrReplace(ShareLink,QuotationMark, "")
|
||||
|
||||
Break
|
||||
}
|
||||
|
||||
ShareLink :=
|
||||
}
|
||||
|
||||
DevModeMsgBox(ShareLink)
|
||||
|
||||
; ShareLink := "Successful"
|
||||
|
||||
Message = Upload Complete: %ShareLink%
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||
|
||||
|
||||
IniWrite, %ShareLink%, %VideoLinksIniFile%, URLs, LocalsURL
|
||||
AddToTotalVideosUploadedCount()
|
||||
|
||||
SaveDriverURL()
|
||||
|
||||
|
||||
Return
|
||||
|
||||
;
|
||||
;------------------/Locals------------------------------
|
||||
@@ -1,5 +1,23 @@
|
||||
|
||||
; -------------------------------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
|
||||
@@ -31,7 +49,7 @@ CheckLBRYProcess(){
|
||||
; Msgbox % "daemon_settingsText: " daemon_settingsText
|
||||
FileMove, %LBRYDaemonSettingsFP%, %LBRYDaemonSettingsBackupFP%, 1 ; Dest [, Flag (1 = overwrite)]
|
||||
|
||||
UrlDownloadToFile, https://git.freedomainplaylists.com/yuriy/Freedomain-Video-Uploader/raw/branch/main/Assets/daemon_settings.yml , %LBRYDaemonSettingsFP%
|
||||
UrlDownloadToFile, https://freedomain.dev/yuriy/video-uploader/raw/branch/main/Assets/daemon_settings.yml , %LBRYDaemonSettingsFP%
|
||||
|
||||
sleep, 1000
|
||||
|
||||
@@ -235,3 +253,19 @@ Check_For_Stuck_Video_Upload(Index_Number, Upload_Status){
|
||||
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%
|
||||
}
|
||||
}
|
||||
@@ -266,7 +266,7 @@ try pagehtml := driver.pagesource
|
||||
Loop, %LengthOfArrayOfPodcastTags% {
|
||||
Tag := ArrayOfPodcastTags[A_Index] ; find value from position in array
|
||||
|
||||
SpanID = title">%Tag%</span></div></li><li><div id="_easyui_tree_
|
||||
SpanID = title">%Tag%</span></div></li><li><div id="tagIDs_easyui_tree_
|
||||
|
||||
if(InStr(pagehtml, SpanID)){ ; if tag found in page, do this
|
||||
number := StrSplit(pagehtml, SpanID)
|
||||
@@ -289,7 +289,7 @@ Loop, %LengthOfArrayOfPodcastTags% {
|
||||
Continue
|
||||
}
|
||||
|
||||
Xpath = //div[@id='_easyui_tree_%number%']//span[@class='tree-checkbox tree-checkbox0']
|
||||
Xpath = //div[@id='tagIDs_easyui_tree_%number%']//span[@class='tree-checkbox tree-checkbox0']
|
||||
Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000)
|
||||
|
||||
}
|
||||
|
||||
31
README.md
31
README.md
@@ -22,9 +22,9 @@ Automated posting to the following media platform using either the Platform's AP
|
||||
- Open Chrome and type in `about::version` into the URL bar. The very first line will tell you what Chrome version you have
|
||||
- After downloading, extract “chromedriver_win32.zip” and move the extracted chromedriver.exe to: `C:\Program Files\SeleniumBasic\chromedriver.exe`
|
||||
- NOTE: The chromedriver will need to be re-downloaded whenever Chrome updates to keep up with API changes
|
||||
4. Install the [LBRY Desktop Application Manually](https://lbry.com/ or through chocolatey `choco install -y lbry`)
|
||||
4. Install the [LBRY Desktop Application Manually](https://lbry.com/) or through chocolatey `choco install -y lbry`
|
||||
- Once installed log into your account, and also add your LBRY Channel ID to the settings.ini file
|
||||
5. [Download the latest .exe of the Uploader](https://git.freedomainplaylists.com/yuriy/Freedomain-Video-Uploader/releases)
|
||||
5. [Download the latest .exe of the Uploader](https://freedomain.dev/yuriy/video-uploader/releases)
|
||||
- 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
|
||||
@@ -37,11 +37,13 @@ The Uploader will check for a portable version of Chrome first, before defaultin
|
||||
|
||||
2. Download the `win64` chromedriver for the same version and move it to `C:\Program Files\SeleniumBasic\chromedriver.exe`
|
||||
|
||||
# Settings
|
||||
The Video Uploader reads & saves its settings to a `settings.ini` file located in the same directory as itself. All customization, including custom profile URLs for websites are stored here. The required fields are:
|
||||
# Settings File
|
||||
The Uploader reads & saves its settings to a `settings.ini` file, All customization, including custom profile URLs are stored here.
|
||||
On first run, if this file does not exist it will be automatically downloaded from the git repo.
|
||||
Before running for the first time you should set the following settings in the file:
|
||||
````
|
||||
[General]
|
||||
RootDirToStartIn=ParentFolderForAllYourVideoProjects
|
||||
RootDirToStartIn= Parent Folder with your Video Projects
|
||||
ShowTooltipProgress=1
|
||||
DiscordWebhookBotURL=
|
||||
DiscordVideosWebhookURL=
|
||||
@@ -57,6 +59,19 @@ LocalsPostPageURL=
|
||||
- [How to get Telegram bot token + chat-id](https://tutorial.cytron.io/2021/09/01/how-to-create-a-telegram-bot-get-the-api-key-and-chat-id/)
|
||||
- All other settings will automatically get written to the `settings.ini` file as you check/uncheck the setting boxes while running the Poster.
|
||||
|
||||
# Project Files
|
||||
When you start the Uploader, it will ask you to select a project folder that contains the files that will be used for the upload. <br>
|
||||
The program will then loop through that project folder and look for the following files and automatically select them.<br>
|
||||
You can select a different file in the main window if the auto selection does not select the correct file.<br>
|
||||
`title.txt` which should contain the Title of your video/podcast<br>
|
||||
`body.txt` which should contain the body text of your video/podcast<br>
|
||||
`keywords.txt` which contains the tags/keywords that will be used in the video uploads<br>
|
||||
`keywords_podcast.txt` (Optional) which contains the tags/keywords that will be used in the podcast upload. `keywords.txt` will be used for podcast tags if this does not exist.<br>
|
||||
`*.mp4` an mp4 file which is the video file that you are going to upload<br>
|
||||
`*.jpg` or `*.png` file which will be the thumbnail for your video/podcast<br>
|
||||
|
||||
|
||||
|
||||
|
||||
# Uncaught Errors
|
||||
I have done my best to catch any possible errors that might pop up and write functionality to handle them. But If an error happens that i haven't written resolves for, it will pop up a message box that looks like this. Please send me a screenshot so I can write a patch for the bug.
|
||||
@@ -66,3 +81,9 @@ I have done my best to catch any possible errors that might pop up and write fun
|
||||
# Compiling to .exe from Source
|
||||
1. [Install Autohotkey v1](https://www.autohotkey.com/download/)
|
||||
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
|
||||
## LBRY-Process-Killer
|
||||
|
||||
Autohotkey script that continuously reads the lbrynet.log for when your videos are fully uploaded/seeded to lbry and then kills the LBRY process.
|
||||
3
Version.ini
Normal file
3
Version.ini
Normal file
@@ -0,0 +1,3 @@
|
||||
[Video-Uploader]
|
||||
Version=3.31
|
||||
Name=Freedomain Video Uploader
|
||||
Reference in New Issue
Block a user