13 Commits
3.27 ... 3.30

13 changed files with 286 additions and 81 deletions

1
.gitignore vendored
View File

@@ -18,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

View File

@@ -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

View File

@@ -31,9 +31,7 @@ global FullScriptName
ScriptName = Freedomain Video Uploader
ScriptVersion = 3.26
FullScriptName := ScriptName . " - " . ScriptVersion
UStartTime := A_TickCount ; start time UStartTime := A_TickCount ; start time
@@ -51,25 +49,6 @@ UStartTime := A_TickCount ; start time
#include %A_ScriptDir%\Lib\Freedomain-Posters-Shared-Functions\URLDownloadToVar.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
@@ -135,6 +114,13 @@ 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
@@ -193,10 +179,6 @@ if(DiscordErrorLoggingWebhookBotURL = ""){
global GitReleasesAPIURL global GitReleasesAPIURL
GitReleasesAPIURL = https://freedomain.dev/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---
;------------------------------------------------ ;------------------------------------------------
@@ -302,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"){
@@ -348,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)){
@@ -387,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%
@@ -438,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---
@@ -572,9 +568,6 @@ else, {
} }
; @ TODO REMOVE
; LocalsGrabURL := 0
; Locals := 0
@@ -598,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%
@@ -793,7 +786,12 @@ Gui, Add, Checkbox, x%GroupBoxCheckboxPos% y+%MarginSpace% vOdyseeAudio Checked%
Gui, Add, Checkbox, x%GroupBoxCheckboxPos% y+%MarginSpace% vRumble Checked%RumbleCheckStatus% gUpdateVars, Rumble 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 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, vDailyMotion y+%MarginSpace% Checked%DailyMotionCheckStatus% gUpdateVars, DailyMotion
; Gui, Add, Checkbox, vStreamanity Checked%StreamanityCheckStatus%, Streamanity ; Gui, Add, Checkbox, vStreamanity Checked%StreamanityCheckStatus%, Streamanity
@@ -1127,6 +1125,7 @@ LBRYURLSlug := LBRYCMDTextReplacement(LBRYURLSlug)
IniWrite, %LBRYURLSlug%, %VideoLinksIniFile%, Misc, LBRYUrlSlug IniWrite, %LBRYURLSlug%, %VideoLinksIniFile%, Misc, LBRYUrlSlug
IniWrite, %VideoThumbFilepath%, %VideoLinksIniFile%, Misc, VideoThumbFilepath IniWrite, %VideoThumbFilepath%, %VideoLinksIniFile%, Misc, VideoThumbFilepath
IniWrite, %PodcastNumber%, %VideoLinksIniFile%, Misc, PodcastNumber IniWrite, %PodcastNumber%, %VideoLinksIniFile%, Misc, PodcastNumber
IniWrite, %VideoThumbFilepath%, %VideoLinksIniFile%, Misc, VideoThumbFilepath
@@ -1172,19 +1171,44 @@ JSVideoDescription := FormatTextToJSText(VideoDescription)
; -------------------------------/Log Info To Text------------------------------- ; -------------------------------/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 ; Create an array out of the keywords to be used in different places
VideoTags := StrReplace(VideoTags, ", ",",") VideoTagsArray := []
VideoTags := StrReplace(VideoTags, " ,",",") PodcastTagsArray := []
VideoTags := StrReplace(VideoTags, " ",",")
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 ]", "")
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)
}
; 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(",", 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

View File

@@ -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")

View 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)
}

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 319 KiB

View File

@@ -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")

View File

@@ -25,19 +25,6 @@ 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, {
goto, Devmodeskip
} Else IfMsgBox No, {
}
}
*/
Message = Waiting for Page to fully load Message = Waiting for Page to fully load
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile") SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile")
@@ -253,6 +240,11 @@ Return
;--------------LocalsGrabURL---------------------------------- ;--------------LocalsGrabURL----------------------------------
LocalsGrabURL: LocalsGrabURL:

View File

@@ -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

View File

@@ -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.
@@ -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 # 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
View File

@@ -0,0 +1,2 @@
[Video-Uploader]
Version=3.29