Compare commits
9 Commits
08eff7166a
...
videotags-
| Author | SHA1 | Date | |
|---|---|---|---|
|
6b9038b15a
|
|||
| 9ec17b0ead | |||
| 03c75ab073 | |||
| a1dc003cdc | |||
| 1aba6a650a | |||
| adeb7a9df1 | |||
| aa1110a780 | |||
|
4b39f927d3
|
|||
|
3a0b6921f6
|
1
.gitignore
vendored
1
.gitignore
vendored
@@ -18,3 +18,4 @@ Compile Scripts to EXE.ahk
|
||||
Freedomain Video Uploader.exe
|
||||
Lib/LBRY Process Killer.exe
|
||||
Lib/chrome-win64
|
||||
Lib/Version.ini
|
||||
@@ -35,6 +35,16 @@ ScriptToCompile = SocialMediaPoster
|
||||
AHKFilepath = %A_ScriptDir%\Freedomain Video Uploader.ahk
|
||||
Exefilepath = %A_ScriptDir%\Freedomain Video Uploader.exe
|
||||
icopath = %A_ScriptDir%\Assets\FreedomainVideo.ico
|
||||
VersionIniFP = %A_ScriptDir%\Version.ini
|
||||
|
||||
|
||||
|
||||
; Bump the version number in the version.ini file
|
||||
IniRead, VersionNumber, %VersionIniFP%, Video-Uploader, Version, 0.0 ; , Filename, Section, Key [, Default]
|
||||
VersionNumber += .01
|
||||
VersionNumber := SubStr(VersionNumber, 1, 4)
|
||||
; Msgbox % "VersionNumber: " VersionNumber
|
||||
IniWrite, %VersionNumber%, %VersionIniFP%,Video-Uploader, Version
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -31,9 +31,7 @@ global FullScriptName
|
||||
|
||||
|
||||
|
||||
ScriptName = Freedomain Video Uploader
|
||||
ScriptVersion = 3.25
|
||||
FullScriptName := ScriptName . " - " . ScriptVersion
|
||||
|
||||
|
||||
|
||||
UStartTime := A_TickCount ; start time
|
||||
@@ -51,25 +49,6 @@ UStartTime := A_TickCount ; start time
|
||||
#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 LBRYResolveAPICommand
|
||||
@@ -135,6 +114,13 @@ global ScriptSettingsSection
|
||||
ScriptSettingsSection := "VideoUploader"
|
||||
|
||||
|
||||
FileInstall, Version.ini, %A_ScriptDir%\Lib\Version.ini, 1
|
||||
IniRead, ScriptVersion, %A_ScriptDir%\Lib\Version.ini,Video-Uploader, Version, 0.0
|
||||
|
||||
ScriptName = Freedomain Video Uploader
|
||||
FullScriptName := ScriptName . " - " . ScriptVersion
|
||||
|
||||
|
||||
;---Script Settings---
|
||||
;------------------------------------------------
|
||||
; Checkbox Settings
|
||||
@@ -193,10 +179,6 @@ if(DiscordErrorLoggingWebhookBotURL = ""){
|
||||
global GitReleasesAPIURL
|
||||
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---
|
||||
;------------------------------------------------
|
||||
@@ -1173,15 +1155,29 @@ JSVideoDescription := FormatTextToJSText(VideoDescription)
|
||||
; -------------------------------/Log Info To Text-------------------------------
|
||||
|
||||
|
||||
; This should go somewhere appropriate
|
||||
; fwiw this function comes straight from the docs: 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))
|
||||
}
|
||||
|
||||
|
||||
; 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,",")
|
||||
|
||||
KeywordsArray := Array()
|
||||
For idx, 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)
|
||||
; 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
|
||||
val := RegexReplace(val, "i)[^a-z0-9 ]", "")
|
||||
KeywordsArray.InsertAt(idx, val)
|
||||
}
|
||||
; update VideoTags with sanitized keywords list
|
||||
VideoTags := Join(",", KeywordsArray*)
|
||||
|
||||
; Call each sub one by one, if errors occur then an upload will be stopped and the next upload will then proceed
|
||||
|
||||
|
||||
Submodule Lib/Freedomain-Posters-Shared-Functions updated: 1e77871bd8...e32fe026e9
135
Modules/LBRY-Process-Killer.ahk
Normal file
135
Modules/LBRY-Process-Killer.ahk
Normal file
@@ -0,0 +1,135 @@
|
||||
;---ENVIRONMENT---------------------------------------------------------------------
|
||||
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
|
||||
;#Warn ; Enable warnings to assist with detecting common errors.
|
||||
;DetectHiddenWindows, On
|
||||
#SingleInstance, Force
|
||||
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
|
||||
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
|
||||
;SetKeyDelay, 500
|
||||
CoordMode, ToolTip, Screen
|
||||
CoordMode, Mouse, Screen
|
||||
;#NoTrayIcon
|
||||
|
||||
|
||||
; Menu, Tray, Icon, %A_scriptDir%\Assets\LBRY-Process-Killer.ico
|
||||
|
||||
;---Notes/Extra Info/#Includes------------------------------------------------------
|
||||
|
||||
|
||||
;---VARIABLES-----------------------------------------------------------------------
|
||||
global DiscordWebhookBotURL
|
||||
|
||||
PassedParameter = %1%
|
||||
if(PassedParameter = "Kill")
|
||||
ExitApp
|
||||
|
||||
IniRead, DiscordWebhookBotURL, %A_scriptDir%\..\Settings.ini, General, DiscordWebhookBotURL, %A_Space%
|
||||
if(DiscordWebhookBotURL = ""){
|
||||
; msgbox, Unable to Read Settings.ini for DiscordWebhookBotURL.`nProgram will not be able to post seed status to Discord
|
||||
; ExitApp
|
||||
}
|
||||
|
||||
|
||||
;---MAIN SCRIPT---------------------------------------------------------------------
|
||||
lbrynetlog_FP = C:\Users\%A_Username%\AppData\Local\lbry\lbrynet\lbrynet.log
|
||||
if(!FileExist(lbrynetlog_FP)){
|
||||
Message = lbrynet.log not found in the usual location. `nPlease submit issue on gitea to add functionality for custom locations.`nClick OK to open gitea page.
|
||||
msgbox % Message
|
||||
run, https://git.zinchuk.xyz/yuriy/LBRY-Process-Killer
|
||||
ExitApp
|
||||
}
|
||||
|
||||
|
||||
FileRead, lbrynetlogContents, C:\Users\%A_Username%\AppData\Local\lbry\lbrynet\lbrynet.log
|
||||
if(lbrynetlogContents = ""){
|
||||
Message = LBRYNet.log exists at normal location, but is currently empty. `nPlease submit issue on gitea about this error message `nClick OK to open gitea page and exit.
|
||||
msgbox % Message
|
||||
run, https://git.zinchuk.xyz/yuriy/LBRY-Process-Killer
|
||||
ExitApp
|
||||
}
|
||||
|
||||
; Msgbox % "lbrynetlogContents: " lbrynetlogContents
|
||||
|
||||
LogContentsArray := StrSplit(lbrynetlogContents, "`n")
|
||||
OriginalArrayLenght := LogContentsArray.Length() ; Save total number of items in the array
|
||||
|
||||
Loop, 45 { ; 3.75 hours, if not complete by this time then exit
|
||||
sleep, 300000 ; 5 minutes
|
||||
; sleep, 60000
|
||||
if(A_index = 6 OR A_index = 12 OR A_index = 24 OR A_index = 36 OR A_index = 48){ ; 30, 60, 120 minutes
|
||||
Message = LBRY: Still waiting for Video to finish Uploading to Reflectors
|
||||
PostProgressToDiscord(Message)
|
||||
}
|
||||
|
||||
FileRead, lbrynetlogContents, C:\Users\%A_username%\AppData\Local\lbry\lbrynet\lbrynet.log
|
||||
UpdatedLogContentsArray := StrSplit(lbrynetlogContents, "`n")
|
||||
ArrayLenght := UpdatedLogContentsArray.Length() ; Count number of individual rows
|
||||
|
||||
Loop, %ArrayLenght% {
|
||||
if(A_index < %OriginalArrayLenght%)
|
||||
Continue ; Skip all lines that that were present in the original .log
|
||||
|
||||
CurrentLineContents := UpdatedLogContentsArray[A_index]
|
||||
|
||||
if(InStr(CurrentLineContents, "Finished sending reflector")){ ; Upload Complete Text on lbrylog
|
||||
SeedingComplete := 1 ; mark seeding as complete and go to next loop
|
||||
OriginalArrayLenght := A_index ; set variable to equal this loop number. So all lines up to this one get skipped next loop round
|
||||
Continue
|
||||
}
|
||||
|
||||
if(InStr(CurrentLineContents, "Sent reflector blob")){ ; Means "Still Uploading" in LBRY API
|
||||
SeedingComplete := 0 ; mark seeding as incomplete as there is still an upload in progress
|
||||
Continue
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
if(SeedingComplete){
|
||||
Process, Close, LBRY.exe ; terminate LBRY if it's running
|
||||
|
||||
if(DiscordWebhookBotURL){
|
||||
Message = LBRY: Video Finished Seeding to Reflectors. LBRY Process Killed.
|
||||
PostProgressToDiscord(Message)
|
||||
}
|
||||
|
||||
ExitApp
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
;---FUNCTIONS-----------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
PostProgressToDiscord(Message){
|
||||
; Need to transform the message into a json string:
|
||||
FormatTime, CurrentTime, YYYYMMDDHH24MISS, hh:mm
|
||||
; Message := "-----------" . CurrentTime . "-----------" . "`n" . Message ; add a ------- to the top of the message to help split them up visually on discord
|
||||
|
||||
; Escape Backslashes
|
||||
Message := StrReplace(Message, "", "\/")
|
||||
|
||||
; Escape quotation marks
|
||||
SingleQuotationmark = "
|
||||
ReplacedQuote = \"
|
||||
Message := StrReplace(Message, SingleQuotationmark, ReplacedQuote)
|
||||
|
||||
; Escape New Character
|
||||
Message := StrReplace(Message, "`n", "\n")
|
||||
|
||||
; Convert into json string
|
||||
JsonString=
|
||||
(
|
||||
{
|
||||
"content": "%Message%"
|
||||
}
|
||||
)
|
||||
try WebRequest := ComObjCreate("WinHttp.WinHttpRequest.5.1")
|
||||
try WebRequest.Open("POST", DiscordWebhookBotURL, false)
|
||||
try WebRequest.SetRequestHeader("Content-Type", "application/json")
|
||||
try WebRequest.Send(JsonString)
|
||||
}
|
||||
BIN
Modules/LBRY-Process-Killer.exe
Normal file
BIN
Modules/LBRY-Process-Killer.exe
Normal file
Binary file not shown.
BIN
Modules/LBRY-Process-Killer.ico
Normal file
BIN
Modules/LBRY-Process-Killer.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 319 KiB |
@@ -31,15 +31,19 @@ if(!FileExist(LBRYKillerPath)){
|
||||
; Msgbox % "LBRYKillerPath: " LBRYKillerPath
|
||||
; Msgbox % "LBRYProcessKillerURL: " LBRYProcessKillerURL
|
||||
LBRYKillerPath = %A_ScriptDir%\Lib\LBRY Process Killer.exe
|
||||
LBRYKillerUpdateURL = https://git.freedomainplaylists.com/attachments/7865dc8d-5aad-4f9f-8a30-94bab0192b1d
|
||||
LBRYKillerUpdateURL = https://freedomain.dev/yuriy/video-uploader/raw/branch/main/Modules/LBRY-Process-Killer.exe
|
||||
|
||||
UrlDownloadToFile, %LBRYKillerUpdateURL%, %LBRYKillerPath%
|
||||
; msgbox, work?
|
||||
; UrlDownloadToFile, URL, Filename
|
||||
Message = LBRY Process Killer Not Found. Automatically Downloading.
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||
}
|
||||
|
||||
UrlDownloadToFile, %LBRYKillerUpdateURL%, %LBRYKillerPath%
|
||||
if(ErrorLevel){
|
||||
Message = Failed to download the the LBRY-Killer.exe from %LBRYKillerUpdateURL%
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging")
|
||||
Return
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
TooltipThis("Uploading Video through API")
|
||||
|
||||
@@ -25,38 +25,25 @@ Status := NavigateFromBaseURLTo(LocalsPostPageURL)
|
||||
if(Status)
|
||||
Return
|
||||
|
||||
/*
|
||||
if(DevMode){
|
||||
MsgBox 0x4, DevMode Skip, Skip uploading section and skip straight to grab URL?
|
||||
|
||||
IfMsgBox Yes, {
|
||||
goto, Devmodeskip
|
||||
} Else IfMsgBox No, {
|
||||
Message = Waiting for Page to fully load
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile")
|
||||
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']
|
||||
Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=10,SleepLength:=1000)
|
||||
Status := Selenium_LoopToClickXpath(Xpath:=Xpath,NumOfLoops:=2,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")
|
||||
SaveOrPostProgress(Message:="Post Failed: Check Login Status, or Website is Down",PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging")
|
||||
|
||||
send, {Escape} ; Temporary workaround, as Page seems to endlessly load for Stef
|
||||
|
||||
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
|
||||
}
|
||||
Return
|
||||
}
|
||||
}
|
||||
/*
|
||||
Message = Inputting Title
|
||||
SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile")
|
||||
@@ -253,6 +240,11 @@ Return
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
;--------------LocalsGrabURL----------------------------------
|
||||
LocalsGrabURL:
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@ CheckLBRYProcess(){
|
||||
; Msgbox % "daemon_settingsText: " daemon_settingsText
|
||||
FileMove, %LBRYDaemonSettingsFP%, %LBRYDaemonSettingsBackupFP%, 1 ; Dest [, Flag (1 = overwrite)]
|
||||
|
||||
UrlDownloadToFile, https://git.freedomainplaylists.com/yuriy/Freedomain-Video-Uploader/raw/branch/main/Assets/daemon_settings.yml , %LBRYDaemonSettingsFP%
|
||||
UrlDownloadToFile, https://freedomain.dev/yuriy/video-uploader/raw/branch/main/Assets/daemon_settings.yml , %LBRYDaemonSettingsFP%
|
||||
|
||||
sleep, 1000
|
||||
|
||||
|
||||
@@ -289,7 +289,7 @@ Loop, %LengthOfArrayOfPodcastTags% {
|
||||
Continue
|
||||
}
|
||||
|
||||
Xpath = //div[@id='tagIDs__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)
|
||||
|
||||
}
|
||||
|
||||
12
README.md
12
README.md
@@ -22,9 +22,9 @@ Automated posting to the following media platform using either the Platform's AP
|
||||
- Open Chrome and type in `about::version` into the URL bar. The very first line will tell you what Chrome version you have
|
||||
- After downloading, extract “chromedriver_win32.zip” and move the extracted chromedriver.exe to: `C:\Program Files\SeleniumBasic\chromedriver.exe`
|
||||
- NOTE: The chromedriver will need to be re-downloaded whenever Chrome updates to keep up with API changes
|
||||
4. Install the [LBRY Desktop Application Manually](https://lbry.com/ or through chocolatey `choco install -y lbry`)
|
||||
4. Install the [LBRY Desktop Application Manually](https://lbry.com/) or through chocolatey `choco install -y lbry`
|
||||
- Once installed log into your account, and also add your LBRY Channel ID to the settings.ini file
|
||||
5. [Download the latest .exe of the Uploader](https://git.freedomainplaylists.com/yuriy/Freedomain-Video-Uploader/releases)
|
||||
5. [Download the latest .exe of the Uploader](https://freedomain.dev/yuriy/video-uploader/releases)
|
||||
- When run, the Uploader will automatically create the folders and files it requires in the same directory it's run from.
|
||||
|
||||
# Using Portable Version of Chrome
|
||||
@@ -65,4 +65,10 @@ I have done my best to catch any possible errors that might pop up and write fun
|
||||
|
||||
# Compiling to .exe from Source
|
||||
1. [Install Autohotkey v1](https://www.autohotkey.com/download/)
|
||||
2. `git clone` the project and then either run the `Compile Uploader to EXE.ahk` autohotkey script to automatically compile, or start up the AHK compiler that comes installed with Autohotkey and select the `Freedomain Video Uploader.ahk` and `\Assets\FreedomainVideo.ico` icon.
|
||||
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