Compare commits
29 Commits
3a09929e6e
...
3.30
| Author | SHA1 | Date | |
|---|---|---|---|
| 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
|
VideoLinks.ini
|
||||||
body.txt
|
body.txt
|
||||||
**/ErrorLogging
|
**/ErrorLogging
|
||||||
|
**/chrome-win64
|
||||||
|
**/Downloads
|
||||||
|
**/Chromedriver-Mover.exe
|
||||||
|
**/ChromedriverMover.ini
|
||||||
**/Test Videos
|
**/Test Videos
|
||||||
**/Backups
|
**/Backups
|
||||||
**/Debug
|
**/Debug
|
||||||
@@ -14,3 +18,4 @@ Compile Scripts to EXE.ahk
|
|||||||
Freedomain Video Uploader.exe
|
Freedomain Video Uploader.exe
|
||||||
Lib/LBRY Process Killer.exe
|
Lib/LBRY Process Killer.exe
|
||||||
Lib/chrome-win64
|
Lib/chrome-win64
|
||||||
|
Lib/Version.ini
|
||||||
2
.gitmodules
vendored
2
.gitmodules
vendored
@@ -1,3 +1,3 @@
|
|||||||
[submodule "Lib/Freedomain-Posters-Shared-Functions"]
|
[submodule "Lib/Freedomain-Posters-Shared-Functions"]
|
||||||
path = 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
|
AHKFilepath = %A_ScriptDir%\Freedomain Video Uploader.ahk
|
||||||
Exefilepath = %A_ScriptDir%\Freedomain Video Uploader.exe
|
Exefilepath = %A_ScriptDir%\Freedomain Video Uploader.exe
|
||||||
icopath = %A_ScriptDir%\Assets\FreedomainVideo.ico
|
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
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -24,15 +24,14 @@ Menu, Tray, Add, Restart with Last Project, RetryUpload
|
|||||||
Menu, Tray, Default, Restart with Last Project
|
Menu, Tray, Default, Restart with Last Project
|
||||||
|
|
||||||
|
|
||||||
global ScriptName
|
|
||||||
|
global ScriptNameav
|
||||||
global ScriptVersion
|
global ScriptVersion
|
||||||
global FullScriptName
|
global FullScriptName
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ScriptName = Freedomain Video Uploader
|
|
||||||
ScriptVersion = 3.21
|
|
||||||
FullScriptName := ScriptName . " - " . ScriptVersion
|
|
||||||
|
|
||||||
|
|
||||||
UStartTime := A_TickCount ; start time
|
UStartTime := A_TickCount ; start time
|
||||||
@@ -47,27 +46,9 @@ UStartTime := A_TickCount ; start time
|
|||||||
#Include %A_ScriptDir%\Lib\Freedomain-Posters-Shared-Functions\RunCMD.ahk
|
#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\StdOutToVar.ahk
|
||||||
#include %A_ScriptDir%\Lib\Freedomain-Posters-Shared-Functions\Zip.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 Variables---
|
||||||
;------------------------------------------------
|
;------------------------------------------------
|
||||||
global LBRYResolveAPICommand
|
global LBRYResolveAPICommand
|
||||||
@@ -109,7 +90,7 @@ Number_of_loops_to_Check_Upload_status = 720
|
|||||||
|
|
||||||
; number of seconds to wait between loops when checking video upload status
|
; number of seconds to wait between loops when checking video upload status
|
||||||
global Time_Between_Loops_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
|
; loop Index number to check if video is stuck uploading
|
||||||
global Array_Index_Num_of_Upload_StatusChecks
|
global Array_Index_Num_of_Upload_StatusChecks
|
||||||
@@ -133,14 +114,21 @@ global ScriptSettingsSection
|
|||||||
ScriptSettingsSection := "VideoUploader"
|
ScriptSettingsSection := "VideoUploader"
|
||||||
|
|
||||||
|
|
||||||
|
FileInstall, Version.ini, %A_ScriptDir%\Lib\Version.ini, 1
|
||||||
|
IniRead, ScriptVersion, %A_ScriptDir%\Lib\Version.ini,Video-Uploader, Version, 0.0
|
||||||
|
|
||||||
|
ScriptName = Freedomain Video Uploader
|
||||||
|
FullScriptName := ScriptName . " - " . ScriptVersion
|
||||||
|
|
||||||
|
|
||||||
;---Script Settings---
|
;---Script Settings---
|
||||||
;------------------------------------------------
|
;------------------------------------------------
|
||||||
; Checkbox Settings
|
; Checkbox Settings
|
||||||
IniRead, ShowTooltipProgress, %SettingsIniFilepath%, General, ShowTooltipProgress, 1
|
IniRead, ShowTooltipProgress, %SettingsIniFilepath%, General, ShowTooltipProgress, 1
|
||||||
(ShowTooltipProgress)?(ShowTooltipProgressCheckStatus := 1) : (ShowTooltipProgressCheckStatus := 0)
|
(ShowTooltipProgress)?(ShowTooltipProgressCheckStatus := 1) : (ShowTooltipProgressCheckStatus := 0)
|
||||||
|
|
||||||
IniRead, XPosition, %SettingsIniFilepath%, General, XPosition
|
IniRead, XPosition, %SettingsIniFilepath%, General, XPosition, 0
|
||||||
IniRead, YPosition, %SettingsIniFilepath%, General, YPosition
|
IniRead, YPosition, %SettingsIniFilepath%, General, YPosition, 0
|
||||||
|
|
||||||
IniRead, RootDirToStartIn, %SettingsIniFilepath%, General, RootDirToStartIn
|
IniRead, RootDirToStartIn, %SettingsIniFilepath%, General, RootDirToStartIn
|
||||||
IniRead, LogErrorsToMsgbox, %SettingsIniFilepath%, General, LogErrorsToMsgbox, %A_Space%
|
IniRead, LogErrorsToMsgbox, %SettingsIniFilepath%, General, LogErrorsToMsgbox, %A_Space%
|
||||||
@@ -189,11 +177,7 @@ if(DiscordErrorLoggingWebhookBotURL = ""){
|
|||||||
;---Auto Updater Settings---
|
;---Auto Updater Settings---
|
||||||
;------------------------------------------------
|
;------------------------------------------------
|
||||||
global GitReleasesAPIURL
|
global GitReleasesAPIURL
|
||||||
GitReleasesAPIURL = https://git.freedomainplaylists.com/api/v1/repos/yuriy/Freedomain-Video-Uploader/releases
|
GitReleasesAPIURL = https://freedomain.dev/api/v1/repos/yuriy/Freedomain-Video-Uploader/releases
|
||||||
|
|
||||||
global GitReleasesLBRYKillerAPIURL
|
|
||||||
GitReleasesLBRYKillerAPIURL = https://git.freedomainplaylists.com/api/v1/repos/yuriy/LBRY-Process-Killer/releases
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;---LBRY Settings---
|
;---LBRY Settings---
|
||||||
@@ -300,6 +284,11 @@ Loop, files, %VideoFolderDir%\*.*, F ; loop through the files in the director
|
|||||||
VideoFilepath := A_LoopFileFullPath
|
VideoFilepath := A_LoopFileFullPath
|
||||||
SplitPath, A_LoopFileFullPath,,,, VideoFileNameNoExt
|
SplitPath, A_LoopFileFullPath,,,, VideoFileNameNoExt
|
||||||
FileGetSize, VideoFileSizeInMB, %A_LoopFileFullPath%, M
|
FileGetSize, VideoFileSizeInMB, %A_LoopFileFullPath%, M
|
||||||
|
|
||||||
|
VideoInfoObj := Filexpro(VideoFilepath,
|
||||||
|
, "System.Video.TotalBitrate" )
|
||||||
|
VideoTotalBitrate := VideoInfoObj["System.Video.TotalBitrate"]
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(FileExt = "png" OR FileExt = "jpg"){
|
if(FileExt = "png" OR FileExt = "jpg"){
|
||||||
@@ -313,7 +302,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 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
|
{ ; D = Directories, F = Files, R = Recursive
|
||||||
SplitPath, A_LoopFileFullPath, FileNameWExt, FileDir, FileExt, FileNameNoExt
|
SplitPath, A_LoopFileFullPath, FileNameWExt, FileDir, FileExt, FileNameNoExt
|
||||||
|
|
||||||
@@ -322,7 +311,21 @@ Loop, files, %VideoFolderDir%\*.WAV, F ; loop through the files in the direct
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
; 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.
|
; 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
|
Loop, files, %VideoFolderDir%\*.mp3, F ; loop through the files in the directory
|
||||||
{ ; D = Directories, F = Files, R = Recursive
|
{ ; D = Directories, F = Files, R = Recursive
|
||||||
SplitPath, A_LoopFileFullPath, FileNameWExt, FileDir, FileExt, FileNameNoExt
|
SplitPath, A_LoopFileFullPath, FileNameWExt, FileDir, FileExt, FileNameNoExt
|
||||||
@@ -332,9 +335,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
|
VideoLinksIniFile = %VideoFolderDir%\VideoLinks.ini
|
||||||
|
|
||||||
if(FileExist(VideoLinksIniFile)){
|
if(FileExist(VideoLinksIniFile)){
|
||||||
@@ -371,6 +376,10 @@ if(FileExist(VideoLinksIniFile)){
|
|||||||
|
|
||||||
; MISC
|
; MISC
|
||||||
IniRead, ErrorLoggingFilePath, %VideoLinksIniFile%, Misc, ErrorLoggingFilePath, %A_Space%
|
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){
|
if(VideoFileSizeInMB < 50){
|
||||||
IniRead, Telegram, %VideoLinksIniFile%, Misc, Telegram, %A_Space%
|
IniRead, Telegram, %VideoLinksIniFile%, Misc, Telegram, %A_Space%
|
||||||
@@ -422,6 +431,9 @@ if(VideoFileSizeInMB > 6144){
|
|||||||
FacebookCheckStatus := 0
|
FacebookCheckStatus := 0
|
||||||
TelegramCheckStatus := 0
|
TelegramCheckStatus := 0
|
||||||
|
|
||||||
|
;---/Read Info From Previous Run And Set Upload Options---
|
||||||
|
;--------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;---Testing Mode Overrides---
|
;---Testing Mode Overrides---
|
||||||
@@ -556,6 +568,10 @@ else, {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
; -------------------------------GUI-------------------------------
|
; -------------------------------GUI-------------------------------
|
||||||
|
|
||||||
Gui, Font, s%GuiFontSize%
|
Gui, Font, s%GuiFontSize%
|
||||||
@@ -575,8 +591,8 @@ Gui, Add, Edit, yp+0 x+%Marginspace% w%PodcastNumberEditWidth% h%EditBoxHeight%
|
|||||||
|
|
||||||
; LBRY URL
|
; LBRY URL
|
||||||
Gui, Font, Bold
|
Gui, Font, Bold
|
||||||
Gui, Add, Text, x%Marginspace%,Video Tags
|
Gui, Add, Text, x%Marginspace%,Video Tags (Comma Seperated)
|
||||||
Gui, Add, Text,x%ColumnOneHalfWidthXPos% yp+0,Podcast Tags
|
Gui, Add, Text,x%ColumnOneHalfWidthXPos% yp+0,Podcast Tags (Comma Seperated)
|
||||||
|
|
||||||
Gui, Font, Normal
|
Gui, Font, Normal
|
||||||
Gui, Add, Edit, x%Marginspace% Y+5 w%EditBoxHalfWidths% h%EditBoxHeight% gUpdateVars vVideoTags, %VideoTags%
|
Gui, Add, Edit, x%Marginspace% Y+5 w%EditBoxHalfWidths% h%EditBoxHeight% gUpdateVars vVideoTags, %VideoTags%
|
||||||
@@ -633,8 +649,12 @@ Gui, Add, Button, x+5 yp+0 h%EditBoxHeight% gSelectVideoThumbFilepath, Select
|
|||||||
Gui, Font, Bold
|
Gui, Font, Bold
|
||||||
if(WavAudioFilepath = "")
|
if(WavAudioFilepath = "")
|
||||||
Gui, Add, Text,cRed x%MarginSquared% y+15,WAV Filepath
|
Gui, Add, Text,cRed x%MarginSquared% y+15,WAV Filepath
|
||||||
else,
|
else, { ; change text depending on if WAV or FLAC file
|
||||||
Gui, Add, Text,x%MarginSquared% y+15,WAV Filepath
|
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, Font, Normal
|
||||||
Gui, Add, Edit, x%MarginSquared% y+2 w%FilePathEditBoxWidths% h%EditBoxHeight% gUpdateVars vWavAudioFilepath,%WavAudioFilepath%
|
Gui, Add, Edit, x%MarginSquared% y+2 w%FilePathEditBoxWidths% h%EditBoxHeight% gUpdateVars vWavAudioFilepath,%WavAudioFilepath%
|
||||||
Gui, Add, Button, x+5 yp+0 h%EditBoxHeight% gSelectWAVFilepath, Select
|
Gui, Add, Button, x+5 yp+0 h%EditBoxHeight% gSelectWAVFilepath, Select
|
||||||
@@ -738,28 +758,41 @@ Gui, Add, GroupBox,r6 y+%MarginSpaceTripled% x%PageTwoXStartPos% w%PageTwoGroupB
|
|||||||
; if(VideoFileSizeInMB < 1792)
|
; if(VideoFileSizeInMB < 1792)
|
||||||
; Gui, Add, Checkbox, x+%MarginSpaceDoubled% vFacebook Checked%FacebookCheckStatus%, Facebook
|
; Gui, Add, Checkbox, x+%MarginSpaceDoubled% vFacebook Checked%FacebookCheckStatus%, Facebook
|
||||||
|
|
||||||
Gui, Add, Checkbox, xp+10 yp+25 vBitChute Checked%BitChuteCheckStatus%, BitChute
|
Gui, Add, Checkbox, xp+10 yp+25 vBitChute Checked%BitChuteCheckStatus% gUpdateVars, BitChute
|
||||||
|
|
||||||
|
|
||||||
if(LocalsURL = "LocalsUploadStartedNeedToGrabURL"){
|
if(LocalsURL = "LocalsUploadStartedNeedToGrabURL"){
|
||||||
Gui, Add, Checkbox, x+%MarginSpaceTripled% yp+0 vLocalsGrabURL Checked%LocalsCheckStatus%, Locals (Grab URL)
|
; msgbox, checking grab url
|
||||||
|
Gui, Add, Checkbox, x+%MarginSpaceTripled% yp+0 vLocalsGrabURL Checked%LocalsCheckStatus% gUpdateVars, Locals (Grab URL)
|
||||||
|
LocalsGrabURL := 1
|
||||||
|
Locals := 0
|
||||||
}
|
}
|
||||||
else, {
|
else, {
|
||||||
Gui, Add, Checkbox, x+%MarginSpaceTripled% yp+0 vLocals Checked%LocalsCheckStatus%, Locals
|
; 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)
|
if(VideoFileSizeInMB < 50)
|
||||||
Gui, Add, Checkbox, vTelegram x+%MarginSpaceDoubled% Checked%TelegramCheckStatus%, Telegram
|
Gui, Add, Checkbox, vTelegram x+%MarginSpaceTripled% yp+0 Checked%TelegramCheckStatus% gUpdateVars, Telegram (>50 MB)
|
||||||
|
|
||||||
|
|
||||||
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+%MarginSpace% vOdyseeVideoThumb Checked%OdyseeVideoThumbCheckStatus%,Thumbnail
|
||||||
Gui, Add, Checkbox, x%GroupBoxCheckboxPos% y+%MarginSpace% vOdyseeAudio Checked%OdyseeAudioCheckStatus%, Odysee Audio
|
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+%MarginSpace% vOdyseeAudioThumb Checked%OdyseeAudioThumbCheckStatus%, Thumbnail
|
||||||
|
|
||||||
Gui, Add, Checkbox, x%GroupBoxCheckboxPos% y+%MarginSpace% vRumble Checked%RumbleCheckStatus%, Rumble
|
Gui, Add, Checkbox, x%GroupBoxCheckboxPos% y+%MarginSpace% vRumble Checked%RumbleCheckStatus% gUpdateVars, Rumble
|
||||||
|
|
||||||
Gui, Add, Checkbox, vBrighteon y+%MarginSpace% Checked%BrighteonCheckStatus%, Brighteon
|
if(VideoTotalBitrate > 300000)
|
||||||
Gui, Add, Checkbox, vDailyMotion y+%MarginSpace% Checked%DailyMotionCheckStatus%, DailyMotion
|
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, Add, Checkbox, vStreamanity Checked%StreamanityCheckStatus%, Streamanity
|
||||||
|
|
||||||
; Gui, Font, s12
|
; Gui, Font, s12
|
||||||
@@ -879,7 +912,7 @@ Return
|
|||||||
|
|
||||||
|
|
||||||
OpenGiteaPage:
|
OpenGiteaPage:
|
||||||
run, https://git.freedomainplaylists.com/yuriy/Freedomain-Video-Uploader
|
run, https://freedomain.dev/yuriy/video-uploader
|
||||||
Return
|
Return
|
||||||
|
|
||||||
|
|
||||||
@@ -911,7 +944,6 @@ SelectVideoThumbFilepath:
|
|||||||
FileSelectFile, VideoThumbFilepath,, %FileDir%, Select Thumbnail File
|
FileSelectFile, VideoThumbFilepath,, %FileDir%, Select Thumbnail File
|
||||||
|
|
||||||
if(!InStr(VideoThumbFilepath, FileDir)){
|
if(!InStr(VideoThumbFilepath, FileDir)){
|
||||||
; ToolTip, Thumbnail Copied to Project Folder, 850, 0
|
|
||||||
TimedToolTip("Thumbnail Copied to Project Folder",,,1000)
|
TimedToolTip("Thumbnail Copied to Project Folder",,,1000)
|
||||||
SplitPath, VideoThumbFilepath, OutFileName, OutDir, OutExtension, OutNameNoExt, OutDrive
|
SplitPath, VideoThumbFilepath, OutFileName, OutDir, OutExtension, OutNameNoExt, OutDrive
|
||||||
FileCopy, %VideoThumbFilepath%, %FileDir%\*,1
|
FileCopy, %VideoThumbFilepath%, %FileDir%\*,1
|
||||||
@@ -933,6 +965,7 @@ Return
|
|||||||
|
|
||||||
UpdateChrome:
|
UpdateChrome:
|
||||||
|
|
||||||
|
|
||||||
if(CheckForChromeUpdates = "")
|
if(CheckForChromeUpdates = "")
|
||||||
Status := CheckForChromeUpdates(ChromeFilepath)
|
Status := CheckForChromeUpdates(ChromeFilepath)
|
||||||
|
|
||||||
@@ -949,214 +982,238 @@ if(!status){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
DownloadLatestChromium()
|
Status := DownloadLatestChromium()
|
||||||
|
if(Status)
|
||||||
|
GuiControl,,ChromeUpdateAvailable, Chrome Up-to-Dat
|
||||||
|
|
||||||
|
|
||||||
Return
|
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
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CreateDescriptionForSocialMedia(){
|
|
||||||
SplitText = Free Documentaries:
|
|
||||||
|
|
||||||
SocialMediaDescription := StrSplit(VideoDescription, SplitText)
|
|
||||||
SocialMediaDescription := SocialMediaDescription[1]
|
|
||||||
|
|
||||||
if(strlen(SocialMediaDescription) > 1400){
|
|
||||||
SocialMediaDescription := SubStr(SocialMediaDescription, 1, 1400)
|
|
||||||
SocialMediaDescription .= "..."
|
|
||||||
}
|
|
||||||
|
|
||||||
Return
|
|
||||||
}
|
|
||||||
; -------------------------------Upload Video Functionality-------------------------------
|
|
||||||
StartScript:
|
|
||||||
WinGetPos, XPosition, YPosition, , , A
|
|
||||||
IniWrite, %XPosition%, %SettingsIniFilepath%, General, XPosition
|
|
||||||
IniWrite, %YPosition%, %SettingsIniFilepath%, General, YPosition
|
|
||||||
|
|
||||||
Gui, Submit
|
|
||||||
Gui, Destroy
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
; Save Testing Mode Info
|
|
||||||
;------------------------------------------------
|
|
||||||
if(TestingMode){ ; save currently seelcted sites to ini file for next test
|
|
||||||
; IniWrite, %Streamanity%, %SettingsIniFilepath%, Testing, Streamanity
|
|
||||||
IniWrite, %BitChute%, %SettingsIniFilepath%, Testing, BitChute
|
|
||||||
IniWrite, %OdyseeVideo%, %SettingsIniFilepath%, Testing, OdyseeVideo
|
|
||||||
IniWrite, %OdyseeVideoThumb%, %SettingsIniFilepath%, Testing, OdyseeVideoThumb
|
|
||||||
IniWrite, %OdyseeAudio%, %SettingsIniFilepath%, Testing, OdyseeAudio
|
|
||||||
IniWrite, %OdyseeAudioThumb%, %SettingsIniFilepath%, Testing, OdyseeAudioThumb
|
|
||||||
IniWrite, %Rumble%, %SettingsIniFilepath%, Testing, Rumble
|
|
||||||
IniWrite, %Brighteon%, %SettingsIniFilepath%, Testing, Brighteon
|
|
||||||
IniWrite, %DailyMotion%, %SettingsIniFilepath%, Testing, DailyMotion
|
|
||||||
IniWrite, %Locals%, %SettingsIniFilepath%, Testing, Locals
|
|
||||||
IniWrite, %Telegram%, %SettingsIniFilepath%, Testing, Telegram
|
|
||||||
IniWrite, %Facebook%, %SettingsIniFilepath%, Testing, Facebook
|
|
||||||
}
|
|
||||||
|
|
||||||
; Save Video Info
|
|
||||||
;------------------------------------------------
|
|
||||||
; if changes made, delete the original file and save the new content to it
|
|
||||||
|
|
||||||
if(VideoTitle != OriginalVideoTitle){
|
|
||||||
VideoTitleFilepath = %VideoFolderDir%\title.txt
|
|
||||||
|
|
||||||
FileDelete, %VideoTitleFilepath%
|
|
||||||
FileAppend, %VideoTitle%, %VideoTitleFilepath%
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if(VideoTags != OriginalVideoTags){
|
|
||||||
VideoTagsFilepath = %VideoFolderDir%\keywords.txt
|
|
||||||
|
|
||||||
FileDelete, %VideoTagsFilepath%
|
|
||||||
FileAppend, %VideoTags%, %VideoTagsFilepath%
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
if(PodcastTags != OriginalPodcastTags){
|
|
||||||
PodcastTagsFilepath = %VideoFolderDir%\keywords_podcast.txt
|
|
||||||
|
|
||||||
FileDelete, %PodcastTagsFilepath%
|
|
||||||
FileAppend, %PodcastTags%, %PodcastTagsFilepath%
|
|
||||||
}
|
|
||||||
|
|
||||||
if(VideoDescription != OriginalVideoDescription){
|
|
||||||
VideoBodyFilepath = %VideoFolderDir%\body.txt
|
|
||||||
|
|
||||||
FileDelete, %VideoBodyFilepath%
|
|
||||||
FileAppend, %VideoDescription%, %VideoBodyFilepath%
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
; -------------------------------/Save Video Info-------------------------------
|
|
||||||
|
|
||||||
; Save settings to config file
|
|
||||||
IniWrite, %ReuseTabs%, %SettingsIniFilepath%, General, ReuseTabs
|
|
||||||
IniWrite, %ShowTooltipProgress%, %SettingsIniFilepath%, General, ShowTooltipProgress
|
|
||||||
IniWrite, %AutoUpdateCheck%, %SettingsIniFilepath%, General, AutoUpdateCheck
|
|
||||||
IniWrite, %AutoLogin%, %SettingsIniFilepath%, General, AutoLogin
|
|
||||||
IniWrite, %PingOnCompletion%, %SettingsIniFilepath%, General, PingOnCompletion
|
|
||||||
IniWrite, %KillLBRYAfterUpload%, %SettingsIniFilepath%, General, KillLBRYAfterUpload
|
|
||||||
|
|
||||||
|
|
||||||
if(VideoFilepath = ""){
|
|
||||||
Msgbox,4096,Error,No Video Filepath Found.`nPlease Input Video Filepath to Upload a Video.
|
|
||||||
run, "%A_ScriptFullPath%" "LastPost"
|
|
||||||
ExitApp
|
|
||||||
}
|
|
||||||
|
|
||||||
; Format the LBRYURLSlug to be API Compatible
|
|
||||||
if(LBRYURLSlug = "") ; if slug spot is blank, then set it to video title
|
|
||||||
LBRYURLSlug := VideoTitle
|
|
||||||
LBRYURLSlug := LBRYCMDTextReplacement(LBRYURLSlug)
|
|
||||||
|
|
||||||
; Save the LBRY URL Slug to .ini file in case it's needed later
|
|
||||||
IniWrite, %LBRYURLSlug%, %VideoLinksIniFile%, Misc, LBRYUrlSlug
|
|
||||||
IniWrite, %VideoThumbFilepath%, %VideoLinksIniFile%, Misc, VideoThumbFilepath
|
|
||||||
IniWrite, %PodcastNumber%, %VideoLinksIniFile%, Misc, PodcastNumber
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
; -------------------------------Log Info To Text-------------------------------
|
|
||||||
|
|
||||||
(Facebook = 1)?(PostedWebsites .= "Facebook|") : ()
|
|
||||||
(Bitchute = 1)?(PostedWebsites .= "Bitchute|") : ()
|
|
||||||
(Locals = 1)?(PostedWebsites .= "Locals|") : ()
|
|
||||||
(Rumble = 1)?(PostedWebsites .= "Rumble|") : ()
|
|
||||||
(Brighteon = 1)?(PostedWebsites .= "Brighteon|") : ()
|
|
||||||
; (Streamanity = 1)?(PostedWebsites .= "Streamanity|") : ()
|
|
||||||
(Telegram = 1)?(PostedWebsites .= "Telegram|") : ()
|
|
||||||
(DailyMotion = 1)?(PostedWebsites .= "DailyMotion|") : ()
|
|
||||||
(OdyseeVideo = 1)?(PostedWebsites .= "OdyseeVideo|") : ()
|
|
||||||
(OdyseeAudio = 1)?(PostedWebsites .= "OdyseeAudio|") : ()
|
|
||||||
|
|
||||||
|
|
||||||
; Log Basic info to the errorlogging file
|
|
||||||
Message = %ScriptName% v%ScriptVersion%: Starting Upload `nFor: **%VideoTitle%**`nTo: %PostedWebsites%
|
|
||||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
|
||||||
|
|
||||||
Message := "VideoTitle: " VideoTitle
|
|
||||||
SaveOrPostProgress(Message:=Message,PostType:=",ErrorLoggingTextFile")
|
|
||||||
|
|
||||||
Message := "VideoDescription: `n" VideoDescription
|
|
||||||
SaveOrPostProgress(Message:=Message,PostType:=",ErrorLoggingTextFile")
|
|
||||||
|
|
||||||
Message := "VideoTags: " VideoTags
|
|
||||||
SaveOrPostProgress(Message:=Message,PostType:=",ErrorLoggingTextFile")
|
|
||||||
|
|
||||||
Message := "VideoFilepath: " VideoFilepath
|
|
||||||
SaveOrPostProgress(Message:=Message,PostType:=",ErrorLoggingTextFile")
|
|
||||||
|
|
||||||
Message := "VideoThumbFilepath: " VideoThumbFilepath
|
|
||||||
SaveOrPostProgress(Message:=Message,PostType:=",ErrorLoggingTextFile")
|
|
||||||
|
|
||||||
Message := "TotalVideosUploaded: " TotalVideosUploaded
|
|
||||||
SaveOrPostProgress(Message:=Message,PostType:=",ErrorLoggingTextFile")
|
|
||||||
|
|
||||||
; Convert Video Description into javascript text format for sending to selenium
|
|
||||||
JSVideoDescription := FormatTextToJSText(VideoDescription)
|
|
||||||
JSVideoTitle := FormatTextToJSText(VideoTitle)
|
|
||||||
|
|
||||||
; -------------------------------/Log Info To Text-------------------------------
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
; Create an array out of the keywords to be used in different places
|
|
||||||
VideoTags := StrReplace(VideoTags, ", ",",")
|
|
||||||
VideoTags := StrReplace(VideoTags, " ,",",")
|
|
||||||
VideoTags := StrReplace(VideoTags, " ",",")
|
|
||||||
|
|
||||||
KeywordsArray := StrSplit(VideoTags,",")
|
|
||||||
|
|
||||||
|
|
||||||
; Call each sub one by one, if errors occur then an upload will be stopped and the next upload will then proceed
|
|
||||||
|
|
||||||
/*
|
|
||||||
|
|
||||||
if(Facebook)
|
|
||||||
gosub, FacebookUpload
|
|
||||||
|
|
||||||
*/
|
|
||||||
/*
|
/*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
; 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
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
CreateDescriptionForSocialMedia(){
|
||||||
|
SplitText = Free Documentaries:
|
||||||
|
|
||||||
|
SocialMediaDescription := StrSplit(VideoDescription, SplitText)
|
||||||
|
SocialMediaDescription := SocialMediaDescription[1]
|
||||||
|
|
||||||
|
if(strlen(SocialMediaDescription) > 1400){
|
||||||
|
SocialMediaDescription := SubStr(SocialMediaDescription, 1, 1400)
|
||||||
|
SocialMediaDescription .= "..."
|
||||||
|
}
|
||||||
|
|
||||||
|
Return
|
||||||
|
}
|
||||||
|
; -------------------------------Upload Video Functionality-------------------------------
|
||||||
|
StartScript:
|
||||||
|
WinGetPos, XPosition, YPosition, , , A
|
||||||
|
IniWrite, %XPosition%, %SettingsIniFilepath%, General, XPosition
|
||||||
|
IniWrite, %YPosition%, %SettingsIniFilepath%, General, YPosition
|
||||||
|
|
||||||
|
Gui, Submit
|
||||||
|
Gui, Destroy
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; Save Testing Mode Info
|
||||||
|
;------------------------------------------------
|
||||||
|
if(TestingMode){ ; save currently seelcted sites to ini file for next test
|
||||||
|
; IniWrite, %Streamanity%, %SettingsIniFilepath%, Testing, Streamanity
|
||||||
|
IniWrite, %BitChute%, %SettingsIniFilepath%, Testing, BitChute
|
||||||
|
IniWrite, %OdyseeVideo%, %SettingsIniFilepath%, Testing, OdyseeVideo
|
||||||
|
IniWrite, %OdyseeVideoThumb%, %SettingsIniFilepath%, Testing, OdyseeVideoThumb
|
||||||
|
IniWrite, %OdyseeAudio%, %SettingsIniFilepath%, Testing, OdyseeAudio
|
||||||
|
IniWrite, %OdyseeAudioThumb%, %SettingsIniFilepath%, Testing, OdyseeAudioThumb
|
||||||
|
IniWrite, %Rumble%, %SettingsIniFilepath%, Testing, Rumble
|
||||||
|
IniWrite, %Brighteon%, %SettingsIniFilepath%, Testing, Brighteon
|
||||||
|
IniWrite, %DailyMotion%, %SettingsIniFilepath%, Testing, DailyMotion
|
||||||
|
IniWrite, %Locals%, %SettingsIniFilepath%, Testing, Locals
|
||||||
|
IniWrite, %Telegram%, %SettingsIniFilepath%, Testing, Telegram
|
||||||
|
IniWrite, %Facebook%, %SettingsIniFilepath%, Testing, Facebook
|
||||||
|
}
|
||||||
|
|
||||||
|
; Save Video Info
|
||||||
|
;------------------------------------------------
|
||||||
|
; if changes made, delete the original file and save the new content to it
|
||||||
|
|
||||||
|
if(VideoTitle != OriginalVideoTitle){
|
||||||
|
VideoTitleFilepath = %VideoFolderDir%\title.txt
|
||||||
|
|
||||||
|
FileDelete, %VideoTitleFilepath%
|
||||||
|
FileAppend, %VideoTitle%, %VideoTitleFilepath%
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if(VideoTags != OriginalVideoTags){
|
||||||
|
VideoTagsFilepath = %VideoFolderDir%\keywords.txt
|
||||||
|
|
||||||
|
FileDelete, %VideoTagsFilepath%
|
||||||
|
FileAppend, %VideoTags%, %VideoTagsFilepath%
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if(PodcastTags != OriginalPodcastTags){
|
||||||
|
PodcastTagsFilepath = %VideoFolderDir%\keywords_podcast.txt
|
||||||
|
|
||||||
|
FileDelete, %PodcastTagsFilepath%
|
||||||
|
FileAppend, %PodcastTags%, %PodcastTagsFilepath%
|
||||||
|
}
|
||||||
|
|
||||||
|
if(VideoDescription != OriginalVideoDescription){
|
||||||
|
VideoBodyFilepath = %VideoFolderDir%\body.txt
|
||||||
|
|
||||||
|
FileDelete, %VideoBodyFilepath%
|
||||||
|
FileAppend, %VideoDescription%, %VideoBodyFilepath%
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; -------------------------------/Save Video Info-------------------------------
|
||||||
|
|
||||||
|
; Save settings to config file
|
||||||
|
IniWrite, %ReuseTabs%, %SettingsIniFilepath%, General, ReuseTabs
|
||||||
|
IniWrite, %ShowTooltipProgress%, %SettingsIniFilepath%, General, ShowTooltipProgress
|
||||||
|
IniWrite, %AutoUpdateCheck%, %SettingsIniFilepath%, General, AutoUpdateCheck
|
||||||
|
IniWrite, %AutoLogin%, %SettingsIniFilepath%, General, AutoLogin
|
||||||
|
IniWrite, %PingOnCompletion%, %SettingsIniFilepath%, General, PingOnCompletion
|
||||||
|
IniWrite, %KillLBRYAfterUpload%, %SettingsIniFilepath%, General, KillLBRYAfterUpload
|
||||||
|
|
||||||
|
|
||||||
|
if(VideoFilepath = ""){
|
||||||
|
Msgbox,4096,Error,No Video Filepath Found.`nPlease Input Video Filepath to Upload a Video.
|
||||||
|
run, "%A_ScriptFullPath%" "LastPost"
|
||||||
|
ExitApp
|
||||||
|
}
|
||||||
|
|
||||||
|
; Format the LBRYURLSlug to be API Compatible
|
||||||
|
if(LBRYURLSlug = "") ; if slug spot is blank, then set it to video title
|
||||||
|
LBRYURLSlug := VideoTitle
|
||||||
|
LBRYURLSlug := LBRYCMDTextReplacement(LBRYURLSlug)
|
||||||
|
|
||||||
|
; Save the LBRY URL Slug to .ini file in case it's needed later
|
||||||
|
IniWrite, %LBRYURLSlug%, %VideoLinksIniFile%, Misc, LBRYUrlSlug
|
||||||
|
IniWrite, %VideoThumbFilepath%, %VideoLinksIniFile%, Misc, VideoThumbFilepath
|
||||||
|
IniWrite, %PodcastNumber%, %VideoLinksIniFile%, Misc, PodcastNumber
|
||||||
|
IniWrite, %VideoThumbFilepath%, %VideoLinksIniFile%, Misc, VideoThumbFilepath
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; -------------------------------Log Info To Text-------------------------------
|
||||||
|
|
||||||
|
(Facebook = 1)?(PostedWebsites .= "Facebook|") : ()
|
||||||
|
(Bitchute = 1)?(PostedWebsites .= "Bitchute|") : ()
|
||||||
|
(Locals = 1)?(PostedWebsites .= "Locals|") : ()
|
||||||
|
(Rumble = 1)?(PostedWebsites .= "Rumble|") : ()
|
||||||
|
(Brighteon = 1)?(PostedWebsites .= "Brighteon|") : ()
|
||||||
|
; (Streamanity = 1)?(PostedWebsites .= "Streamanity|") : ()
|
||||||
|
(Telegram = 1)?(PostedWebsites .= "Telegram|") : ()
|
||||||
|
(DailyMotion = 1)?(PostedWebsites .= "DailyMotion|") : ()
|
||||||
|
(OdyseeVideo = 1)?(PostedWebsites .= "OdyseeVideo|") : ()
|
||||||
|
(OdyseeAudio = 1)?(PostedWebsites .= "OdyseeAudio|") : ()
|
||||||
|
|
||||||
|
|
||||||
|
; Log Basic info to the errorlogging file
|
||||||
|
Message = %ScriptName% v%ScriptVersion%: Starting Upload `nFor: **%VideoTitle%**`nTo: %PostedWebsites%
|
||||||
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||||
|
|
||||||
|
Message := "VideoTitle: " VideoTitle
|
||||||
|
SaveOrPostProgress(Message:=Message,PostType:=",ErrorLoggingTextFile")
|
||||||
|
|
||||||
|
Message := "VideoDescription: `n" VideoDescription
|
||||||
|
SaveOrPostProgress(Message:=Message,PostType:=",ErrorLoggingTextFile")
|
||||||
|
|
||||||
|
Message := "VideoTags: " VideoTags
|
||||||
|
SaveOrPostProgress(Message:=Message,PostType:=",ErrorLoggingTextFile")
|
||||||
|
|
||||||
|
Message := "VideoFilepath: " VideoFilepath
|
||||||
|
SaveOrPostProgress(Message:=Message,PostType:=",ErrorLoggingTextFile")
|
||||||
|
|
||||||
|
Message := "VideoThumbFilepath: " VideoThumbFilepath
|
||||||
|
SaveOrPostProgress(Message:=Message,PostType:=",ErrorLoggingTextFile")
|
||||||
|
|
||||||
|
Message := "TotalVideosUploaded: " TotalVideosUploaded
|
||||||
|
SaveOrPostProgress(Message:=Message,PostType:=",ErrorLoggingTextFile")
|
||||||
|
|
||||||
|
; 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-------------------------------
|
||||||
|
|
||||||
|
; @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
|
||||||
|
VideoTagsArray := []
|
||||||
|
PodcastTagsArray := []
|
||||||
|
|
||||||
|
; 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 ]", "")
|
||||||
|
VideoTagsArray.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 ]", "")
|
||||||
|
PodcastTagsArray.InsertAt(index, val)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
; update VideoTags with sanitized keywords list
|
||||||
|
VideoTags := Join(",", VideoTagsArray*)
|
||||||
|
|
||||||
|
; update PodcastTags with sanitized keywords list
|
||||||
|
PodcastTags := Join(",", PodcastTagsArray*)
|
||||||
|
|
||||||
|
|
||||||
|
; 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(Telegram)
|
if(Telegram)
|
||||||
gosub, TelegramVideoUpload
|
gosub, TelegramVideoUpload
|
||||||
|
|
||||||
|
|
||||||
if(Locals)
|
if(Locals)
|
||||||
gosub, LocalsUpload
|
gosub, LocalsUpload
|
||||||
|
|
||||||
@@ -1198,7 +1255,7 @@ if(OdyseeAudio){
|
|||||||
Gosub, LBRYGetURL
|
Gosub, LBRYGetURL
|
||||||
}
|
}
|
||||||
|
|
||||||
if(LocalsGrabURL OR LocalsURL = "LocalsUploadStartedNeedToGrabURL"){
|
if(LocalsGrabURL){
|
||||||
Gosub, LocalsGrabURL
|
Gosub, LocalsGrabURL
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1228,6 +1285,25 @@ SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,Disc
|
|||||||
|
|
||||||
|
|
||||||
DisplayResults:
|
DisplayResults:
|
||||||
|
|
||||||
|
/*
|
||||||
|
; i forget why i have it get the window position here
|
||||||
|
WinGetPos, XPosition, YPosition, , , A
|
||||||
|
Msgbox % "XPosition: " XPosition "`n" "YPosition: " YPosition
|
||||||
|
|
||||||
|
if(XPosition > 0 and YPosition > 0){ ; if gui doesn't exist, both are set to -8
|
||||||
|
; Msgbox % "XPosition: " XPosition
|
||||||
|
; Msgbox % "YPosition: " YPosition
|
||||||
|
IniWrite, %XPosition%, %SettingsIniFilepath%, General, XPosition
|
||||||
|
IniWrite, %YPosition%, %SettingsIniFilepath%, General, YPosition
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Tooltip ; Remove all tooltips
|
Tooltip ; Remove all tooltips
|
||||||
|
|
||||||
Gui, Destroy ; destroy GUI in case we're going from the main screen to results without uploading.
|
Gui, Destroy ; destroy GUI in case we're going from the main screen to results without uploading.
|
||||||
@@ -1359,6 +1435,10 @@ Gui, +Resize +MaximizeBox
|
|||||||
OriginalVideoDescription := VideoDescription
|
OriginalVideoDescription := VideoDescription
|
||||||
OriginalPodcastTags := PodcastTags
|
OriginalPodcastTags := PodcastTags
|
||||||
|
|
||||||
|
|
||||||
|
if(XPosition and YPosition)
|
||||||
|
Gui, Show,x%XPosition% y%YPosition%,%FullScriptName% - Upload Results
|
||||||
|
else,
|
||||||
Gui, Show,,%FullScriptName% - Upload Results
|
Gui, Show,,%FullScriptName% - Upload Results
|
||||||
|
|
||||||
SaveCurrentChromeVersionToIniFile()
|
SaveCurrentChromeVersionToIniFile()
|
||||||
@@ -1629,11 +1709,11 @@ Return
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
OnMsgBoxConfirmChromiumOverwrite() {
|
OnMsgBoxConfirmChromiumOverwrite() {
|
||||||
DetectHiddenWindows, On
|
DetectHiddenWindows, On
|
||||||
Process, Exist
|
Process, Exist
|
||||||
If (WinExist("ahk_class #32770 ahk_pid " . ErrorLevel)) {
|
If (WinExist("ahk_class #32770 ahk_pid " . ErrorLevel)) {
|
||||||
ControlSetText Button1, Cancel
|
ControlSetText Button1, Cancel
|
||||||
ControlSetText Button2, Yes
|
ControlSetText Button2, Yes
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|||||||
Submodule Lib/Freedomain-Posters-Shared-Functions updated: 1962743565...e32fe026e9
@@ -235,11 +235,19 @@ 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")
|
TooltipThis("Inputting Keywords")
|
||||||
Loop, 5 {
|
Loop, 5 {
|
||||||
XPath = //input[@id='keywords']
|
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 {
|
catch e {
|
||||||
Message = Error (E#2312)`nVideo Uploaded but Unable to Input Video Tags
|
Message = Error (E#2312)`nVideo Uploaded but Unable to Input Video Tags
|
||||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||||
|
|||||||
@@ -36,12 +36,12 @@ if(LoggedOutStatus){
|
|||||||
try driver.FindElementByXPath(Xpath).click()
|
try driver.FindElementByXPath(Xpath).click()
|
||||||
|
|
||||||
Xpath = //input[@placeholder='Enter password']
|
Xpath = //input[@placeholder='Enter password']
|
||||||
driver.FindElementByXPath(Xpath).click()
|
try driver.FindElementByXPath(Xpath).click()
|
||||||
|
|
||||||
js = document.querySelector("button[type='submit']").click();
|
js = document.querySelector("button[type='submit']").click();
|
||||||
driver.executeScript(js)
|
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
|
sleep, 1000
|
||||||
|
|
||||||
; Do a double check to make sure that login worked
|
; Do a double check to make sure that login worked
|
||||||
@@ -284,6 +284,25 @@ catch e {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
; 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")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
; Disable monitization for video
|
; Disable monitization for video
|
||||||
SaveOrPostProgress(Message:="Unchecking monetizaton checkbox",PostType:="Tooltip,ErrorLoggingTextFile")
|
SaveOrPostProgress(Message:="Unchecking monetizaton checkbox",PostType:="Tooltip,ErrorLoggingTextFile")
|
||||||
|
|||||||
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 % "LBRYKillerPath: " LBRYKillerPath
|
||||||
; Msgbox % "LBRYProcessKillerURL: " LBRYProcessKillerURL
|
; Msgbox % "LBRYProcessKillerURL: " LBRYProcessKillerURL
|
||||||
LBRYKillerPath = %A_ScriptDir%\Lib\LBRY Process Killer.exe
|
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.
|
Message = LBRY Process Killer Not Found. Automatically Downloading.
|
||||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||||
}
|
|
||||||
|
|
||||||
|
UrlDownloadToFile, %LBRYKillerUpdateURL%, %LBRYKillerPath%
|
||||||
|
if(ErrorLevel){
|
||||||
|
Message = Failed to download the the LBRY-Killer.exe from %LBRYKillerUpdateURL%
|
||||||
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||||
|
Return
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
TooltipThis("Uploading Video through API")
|
TooltipThis("Uploading Video through API")
|
||||||
|
|||||||
@@ -25,39 +25,26 @@ Status := NavigateFromBaseURLTo(LocalsPostPageURL)
|
|||||||
if(Status)
|
if(Status)
|
||||||
Return
|
Return
|
||||||
|
|
||||||
/*
|
|
||||||
if(DevMode){
|
|
||||||
MsgBox 0x4, DevMode Skip, Skip uploading section and skip straight to grab URL?
|
|
||||||
|
|
||||||
IfMsgBox Yes, {
|
Message = Waiting for Page to fully load
|
||||||
goto, Devmodeskip
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile")
|
||||||
} Else IfMsgBox No, {
|
Xpath = //textarea[@id='body']
|
||||||
|
Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=10,SleepLength:=1000)
|
||||||
|
if(Status){
|
||||||
|
Message = Page did not load after 10 seconds. Force stopping refresh and trying to continue
|
||||||
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||||
|
|
||||||
}
|
send, {Escape} ; Temporary workaround, as Page seems to endlessly load for Stef
|
||||||
}
|
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
Message = Waiting for Page to fully load
|
|
||||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile")
|
|
||||||
Xpath = //textarea[@id='body']
|
Xpath = //textarea[@id='body']
|
||||||
Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=10,SleepLength:=1000)
|
Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000)
|
||||||
if(Status){
|
if(Status){
|
||||||
Message = Page did not load after 10 seconds. Force stopping refresh and trying to continue
|
SaveOrPostProgress(Message:="Post Failed: Check Login Status, or Website is Down",PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
|
||||||
|
|
||||||
send, {Escape} ; Temporary workaround, as Page seems to endlessly load for Stef
|
Return
|
||||||
|
|
||||||
Xpath = //textarea[@id='body']
|
|
||||||
Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000)
|
|
||||||
if(Status){
|
|
||||||
SaveOrPostProgress(Message:="Post Failed: Check Login Status, or Website is Down",PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
|
||||||
|
|
||||||
Return
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
/*
|
||||||
Message = Inputting Title
|
Message = Inputting Title
|
||||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile")
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile")
|
||||||
|
|
||||||
@@ -69,6 +56,45 @@ if(DevMode){
|
|||||||
}
|
}
|
||||||
|
|
||||||
sleep, 1000
|
sleep, 1000
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
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
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*Xpath = //textarea[@id='body']
|
/*Xpath = //textarea[@id='body']
|
||||||
Status := Selenium_LoopToSendValueToXpath(Xpath:=Xpath,NumOfLoops:=5,SleepLength:=1000,StringTextContent:=VideoDescription)
|
Status := Selenium_LoopToSendValueToXpath(Xpath:=Xpath,NumOfLoops:=5,SleepLength:=1000,StringTextContent:=VideoDescription)
|
||||||
@@ -108,7 +134,7 @@ Loop, 5 { ; Attempt to input video description a couple of times
|
|||||||
sleep, 2000
|
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
|
Message = Uploading Video File
|
||||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile")
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile")
|
||||||
Xpath = //div[@class='uploadvideo-wrapper']//input[@name='Filedata']
|
Xpath = //div[@class='uploadvideo-wrapper']//input[@name='Filedata']
|
||||||
@@ -148,7 +174,7 @@ if(AutoSubmitstatus = "0"){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
DevModeMsgBox("autosubmit status -1 string here")
|
; DevModeMsgBox("autosubmit status -1 string here")
|
||||||
; msgbox % AutoSubmitstatus = "-1"
|
; msgbox % AutoSubmitstatus = "-1"
|
||||||
if(AutoSubmitstatus = "-1"){ ; if checked YES
|
if(AutoSubmitstatus = "-1"){ ; if checked YES
|
||||||
|
|
||||||
@@ -199,6 +225,9 @@ if(AutoSubmitstatus = "-1"){ ; if checked YES
|
|||||||
|
|
||||||
; LocalsTabURL := SaveDriverURL()
|
; LocalsTabURL := SaveDriverURL()
|
||||||
|
|
||||||
|
; Set variable so that URL gets grabbed later in the upload
|
||||||
|
LocalsGrabURL := 1
|
||||||
|
|
||||||
Return
|
Return
|
||||||
}
|
}
|
||||||
Return
|
Return
|
||||||
@@ -211,10 +240,15 @@ Return
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;--------------LocalsGrabURL----------------------------------
|
;--------------LocalsGrabURL----------------------------------
|
||||||
LocalsGrabURL:
|
LocalsGrabURL:
|
||||||
|
|
||||||
CurrentSite := Locals
|
CurrentSite := "Locals"
|
||||||
|
|
||||||
SaveOrPostProgress(Message:="Navigating to Locals Feed to grab URL",PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
SaveOrPostProgress(Message:="Navigating to Locals Feed to grab URL",PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||||
; SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile")
|
; SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile")
|
||||||
@@ -254,28 +288,67 @@ Return
|
|||||||
js = return document.querySelector("a[class='btn']").innerText;
|
js = return document.querySelector("a[class='btn']").innerText;
|
||||||
try, status := driver.executeScript(js)
|
try, status := driver.executeScript(js)
|
||||||
if(status){
|
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,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,DiscordErrorLogging")
|
||||||
SaveDriverURLOFErrorPage()
|
|
||||||
Return
|
; 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
|
; Get word that's longer than 4 characters in video title
|
||||||
VideoTitleArray := StrSplit(VideoTitle, " ")
|
VideoTitleArray := StrSplit(VideoTitle, " ")
|
||||||
; Iterate from 1 to the end of the array:
|
; Iterate from 1 to the end of the array:
|
||||||
Loop % VideoTitleArray.Length(){
|
Loop % VideoTitleArray.Length(){
|
||||||
VideoTitleFirstWord := VideoTitleArray[A_Index]
|
LongestWordInVideoTitle := VideoTitleArray[A_Index]
|
||||||
VideoTitleFirstWord := StrReplace(VideoTitleFirstWord, "_","-")
|
LongestWordInVideoTitle := StrReplace(LongestWordInVideoTitle, "_","-")
|
||||||
if(StrLen(VideoTitleFirstWord) > 4)
|
if(StrLen(LongestWordInVideoTitle) > 4)
|
||||||
Break
|
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%
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
loop, 7 {
|
loop, 7 {
|
||||||
ElementIndexNum := A_index - 1
|
ElementIndexNum := A_index - 1
|
||||||
Message = ElementIndexNum: %ElementIndexNum%
|
Message = ElementIndexNum: %ElementIndexNum%
|
||||||
@@ -287,18 +360,16 @@ loop, 7 {
|
|||||||
try outerHTML := driver.executeScript(jsCheck)
|
try outerHTML := driver.executeScript(jsCheck)
|
||||||
|
|
||||||
if(DevMode){
|
if(DevMode){
|
||||||
Message = Looking for VideoTitleFirstWord: %VideoTitleFirstWord% `nwithin outerHTML
|
Message = Looking for LongestWordInVideoTitle: %LongestWordInVideoTitle% `nwithin outerHTML: %outerHTML%
|
||||||
DevModeMsgBox(message)
|
DevModeMsgBox(message)
|
||||||
Clipboard := outerHTML
|
Clipboard := message
|
||||||
DevModeMsgBox(outerHTML)
|
; DevModeMsgBox(outerHTML)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(InStr(OuterHTML,LongestWordInVideoTitle)){
|
||||||
|
|
||||||
; msgbox % "outerHTML: " . outerHTML
|
|
||||||
|
|
||||||
if(InStr(OuterHTML,VideoTitleFirstWord)){
|
|
||||||
; @todo replace with regex
|
; @todo replace with regex
|
||||||
Message = %VideoTitleFirstWord% is in`n`n %OuterHTML%
|
Message = %LongestWordInVideoTitle% is in`n`n %OuterHTML%
|
||||||
DevModeMsgBox(Message)
|
DevModeMsgBox(Message)
|
||||||
|
|
||||||
Message = Found at at index: %A_index%
|
Message = Found at at index: %A_index%
|
||||||
@@ -328,14 +399,21 @@ loop, 7 {
|
|||||||
ShareLink :=
|
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
|
||||||
|
}
|
||||||
|
|
||||||
|
; DevModeMsgBox(ShareLink)
|
||||||
|
|
||||||
; ShareLink := "Successful"
|
; ShareLink := "Successful"
|
||||||
|
|
||||||
Message = Upload Complete: %ShareLink%
|
Message = Upload Complete: %ShareLink%
|
||||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||||
|
|
||||||
|
DevModeMsgBox(ShareLink)
|
||||||
IniWrite, %ShareLink%, %VideoLinksIniFile%, URLs, LocalsURL
|
IniWrite, %ShareLink%, %VideoLinksIniFile%, URLs, LocalsURL
|
||||||
AddToTotalVideosUploadedCount()
|
AddToTotalVideosUploadedCount()
|
||||||
|
|
||||||
@@ -500,22 +578,22 @@ Loop, %Number_of_loops_to_Check_Upload_status% {
|
|||||||
VideoTitleArray := StrSplit(VideoTitle, " ")
|
VideoTitleArray := StrSplit(VideoTitle, " ")
|
||||||
; Iterate from 1 to the end of the array:
|
; Iterate from 1 to the end of the array:
|
||||||
Loop % VideoTitleArray.Length(){
|
Loop % VideoTitleArray.Length(){
|
||||||
VideoTitleFirstWord := VideoTitleArray[A_Index]
|
LongestWordInVideoTitle := VideoTitleArray[A_Index]
|
||||||
VideoTitleFirstWord := StrReplace(VideoTitleFirstWord, "_","-")
|
LongestWordInVideoTitle := StrReplace(LongestWordInVideoTitle, "_","-")
|
||||||
if(StrLen(VideoTitleFirstWord) > 4)
|
if(StrLen(LongestWordInVideoTitle) > 4)
|
||||||
Break
|
Break
|
||||||
|
|
||||||
; MsgBox % VideoTitleArray[A_Index]
|
; MsgBox % VideoTitleArray[A_Index]
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
; DevModeMsgBox(VideoTitleFirstWord)
|
; DevModeMsgBox(LongestWordInVideoTitle)
|
||||||
|
|
||||||
; Message = VideoTitleFirstWord: %VideoTitleFirstWord%
|
; Message = LongestWordInVideoTitle: %LongestWordInVideoTitle%
|
||||||
; SaveOrPostProgress(Message:=Message,PostType:=",ErrorLoggingTextFile")
|
; SaveOrPostProgress(Message:=Message,PostType:=",ErrorLoggingTextFile")
|
||||||
|
|
||||||
; VideoTitleFirstWord := VideoTitleFirstWord[1]
|
; LongestWordInVideoTitle := LongestWordInVideoTitle[1]
|
||||||
; Msgbox % "VideoTitleFirstWord: " VideoTitleFirstWord
|
; Msgbox % "LongestWordInVideoTitle: " LongestWordInVideoTitle
|
||||||
|
|
||||||
/* ; Format the post title to remove all spaces and special characters to match with Locals Post
|
/* ; Format the post title to remove all spaces and special characters to match with Locals Post
|
||||||
ShareLinkFormatted := StrReplace(VideoTitle, " ", "-")
|
ShareLinkFormatted := StrReplace(VideoTitle, " ", "-")
|
||||||
@@ -547,9 +625,9 @@ Loop, %Number_of_loops_to_Check_Upload_status% {
|
|||||||
|
|
||||||
; msgbox % "outerHTML: " . outerHTML
|
; msgbox % "outerHTML: " . outerHTML
|
||||||
|
|
||||||
if(InStr(OuterHTML,VideoTitleFirstWord)){
|
if(InStr(OuterHTML,LongestWordInVideoTitle)){
|
||||||
|
|
||||||
Message = %VideoTitleFirstWord% is in %OuterHTML%
|
Message = %LongestWordInVideoTitle% is in %OuterHTML%
|
||||||
; DevModeMsgBox(Message)
|
; DevModeMsgBox(Message)
|
||||||
|
|
||||||
; MsgBox, found match at %A_index%
|
; MsgBox, found match at %A_index%
|
||||||
|
|||||||
@@ -1,5 +1,13 @@
|
|||||||
|
|
||||||
; -------------------------------Functions-------------------------------
|
; -------------------------------Functions-------------------------------
|
||||||
|
; 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(){
|
CheckLBRYProcess(){
|
||||||
; Check if LBRY Process exists
|
; Check if LBRY Process exists
|
||||||
Process, Exist,LBRY.exe
|
Process, Exist,LBRY.exe
|
||||||
@@ -31,7 +39,7 @@ CheckLBRYProcess(){
|
|||||||
; Msgbox % "daemon_settingsText: " daemon_settingsText
|
; Msgbox % "daemon_settingsText: " daemon_settingsText
|
||||||
FileMove, %LBRYDaemonSettingsFP%, %LBRYDaemonSettingsBackupFP%, 1 ; Dest [, Flag (1 = overwrite)]
|
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
|
sleep, 1000
|
||||||
|
|
||||||
@@ -234,4 +242,20 @@ Check_For_Stuck_Video_Upload(Index_Number, Upload_Status){
|
|||||||
}
|
}
|
||||||
ProgressStatusArray.Push(Upload_Status) ; append current status to array
|
ProgressStatusArray.Push(Upload_Status) ; append current status to array
|
||||||
}
|
}
|
||||||
} ; end of func
|
} ; 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% {
|
Loop, %LengthOfArrayOfPodcastTags% {
|
||||||
Tag := ArrayOfPodcastTags[A_Index] ; find value from position in array
|
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
|
if(InStr(pagehtml, SpanID)){ ; if tag found in page, do this
|
||||||
number := StrSplit(pagehtml, SpanID)
|
number := StrSplit(pagehtml, SpanID)
|
||||||
@@ -289,7 +289,7 @@ Loop, %LengthOfArrayOfPodcastTags% {
|
|||||||
Continue
|
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)
|
Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=2,SleepLength:=1000)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
33
README.md
33
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
|
- 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`
|
- 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
|
- 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
|
- 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.
|
- When run, the Uploader will automatically create the folders and files it requires in the same directory it's run from.
|
||||||
|
|
||||||
# Using Portable Version of Chrome
|
# Using Portable Version of Chrome
|
||||||
@@ -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`
|
2. Download the `win64` chromedriver for the same version and move it to `C:\Program Files\SeleniumBasic\chromedriver.exe`
|
||||||
|
|
||||||
# Settings
|
# Settings File
|
||||||
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:
|
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]
|
[General]
|
||||||
RootDirToStartIn=ParentFolderForAllYourVideoProjects
|
RootDirToStartIn= Parent Folder with your Video Projects
|
||||||
ShowTooltipProgress=1
|
ShowTooltipProgress=1
|
||||||
DiscordWebhookBotURL=
|
DiscordWebhookBotURL=
|
||||||
DiscordVideosWebhookURL=
|
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/)
|
- [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.
|
- 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.
|
||||||
|
The program will then loop through that project folder and look for the following files and automatically select them.
|
||||||
|
You can select a different file in the main window if the auto selection does not select the correct file.
|
||||||
|
`title.txt` which should contain the Title of your video/podcast
|
||||||
|
`body.txt` which should contain the body text of your video/podcast
|
||||||
|
`keywords.txt` which contains the tags/keywords that will be used in the video uploads
|
||||||
|
`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.
|
||||||
|
`*.mp4` an mp4 file which is the video file that you are going to upload
|
||||||
|
`*.jpg` or `*.png` file which will be the thumbnail for your video/podcast
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Uncaught Errors
|
# 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.
|
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.
|
||||||
@@ -65,4 +80,10 @@ I have done my best to catch any possible errors that might pop up and write fun
|
|||||||
|
|
||||||
# Compiling to .exe from Source
|
# Compiling to .exe from Source
|
||||||
1. [Install Autohotkey v1](https://www.autohotkey.com/download/)
|
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.
|
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.
|
||||||
2
Version.ini
Normal file
2
Version.ini
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
[Video-Uploader]
|
||||||
|
Version=3.29
|
||||||
Reference in New Issue
Block a user