From f20332d6c64082d29f5ab4f4ada1b59ae4823c39 Mon Sep 17 00:00:00 2001 From: Yuriy Date: Fri, 19 Apr 2024 18:58:15 -0400 Subject: [PATCH] merged in misc functions from video uploader, modularized lbry functions into it's own file --- LBRY-Functions.ahk | 149 ++++++++++++++++++++++ Miscellaneous-Functions.ahk | 245 ++++++++++++++++++++++++++++++++++++ 2 files changed, 394 insertions(+) create mode 100644 LBRY-Functions.ahk create mode 100644 Miscellaneous-Functions.ahk diff --git a/LBRY-Functions.ahk b/LBRY-Functions.ahk new file mode 100644 index 0000000..b92c9e4 --- /dev/null +++ b/LBRY-Functions.ahk @@ -0,0 +1,149 @@ + +CheckLBRYProcess(){ + ; Check if LBRY Process exists + Process, Exist,LBRY.exe + if(ErrorLevel = 0) ; if doesn't exist + { + Message = Not Running. Starting up LBRY.exe + SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile") + + LBRYExeFilepath = C:\Program Files\LBRY\LBRY.exe + if(!FileExist(LBRYExeFilepath)){ + Message = Failed to Find LBRY.exe executable. LBRY not installed? + SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging") + Return + } + + Message = Checking LBRY daemon_settings.yml file for Odysee Wallet Servers + SaveOrPostProgress(Message:=Message,PostType:=",ErrorLoggingTextFile,DiscordErrorLogging") + + ; FileRead, daemon_settingsFileContent, C:\Users\%A_UserName%\AppData\Local\lbry\lbrynet\daemon_settings.yml + + ; if(!InStr(daemon_settingsFileContent, "a-hub1.odysee.com")){ + ; Message = Odysee wallet server is not in daemon_settings.yml. Replacing File with required settings. + ; SaveOrPostProgress(Message:=Message,PostType:=",DiscordErrorLogging") + + ; LBRYDaemonSettingsFP = C:\Users\%A_UserName%\AppData\Local\lbry\lbrynet\daemon_settings.yml + ; LBRYDaemonSettingsBackupFP = C:\Users\%A_UserName%\AppData\Local\lbry\lbrynet\daemon_settings_BU.yml + + + ; ; Msgbox % "daemon_settingsText: " daemon_settingsText + ; FileMove, %LBRYDaemonSettingsFP%, %LBRYDaemonSettingsBackupFP%, 1 ; Dest [, Flag (1 = overwrite)] + + ; UrlDownloadToFile, https://freedomain.dev/yuriy/video-uploader/raw/branch/main/Assets/daemon_settings.yml , %LBRYDaemonSettingsFP% + + ; sleep, 1000 + + ; if(!FileExist(LBRYDaemonSettingsFP)){ + ; Message = Failed to download the custom daemon_settings.yml file from git. Restoring Original File + ; SaveOrPostProgress(Message:=Message,PostType:=",ErrorLoggingTextFile,DiscordErrorLogging") + ; FileMove,%LBRYDaemonSettingsBackupFP%,%LBRYDaemonSettingsFP%, 1 + ; } + ; } + + + try run, "%LBRYExeFilepath%" + Message = Waiting 1 Minute for LBRY to start up + SaveOrPostProgress(Message:=Message,PostType:="Tooltip") + Sleep, 60000 ; 1 minute + + Process, Exist,LBRY.exe + if(ErrorLevel = 0) ; if doesn't exist + { + Message = Failed to Start LBRY.exe after 60 seconds of waiting + SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging") + Return + } + WinMinimize, LBRY + } + Return +} + + +GetPermanentLBRYURL(UploadResult){ + SingleQuotationmark = " + + UploadResult := StrSplit(UploadResult, "`n") ; split results by new line + + ; Iterate through the array of the results + Loop % UploadResult.Length() { + PermanentURL := UploadResult[A_Index] + if(InStr(PermanentURL, "permanent_url")) + Break + } + + ; Starting Result: "permanent_url": "lbry://Test-Video-161-Numbered#c9ad9afe54c7178d6f870b59bbe129aef8efc3ff", + PermanentURL := StrSplit(PermanentURL, "lbry:") + PermanentURL := "lbry:" . PermanentURL[2] + PermanentURL := StrReplace(PermanentURL, ",", "") + PermanentURL := StrReplace(PermanentURL, SingleQuotationmark, "") + PermanentURL := StrReplace(PermanentURL, "`n", "") + PermanentURL := StrReplace(PermanentURL, "`r", "") + + ; End Result lbry://Test-Video-161-Numbered#c9ad9afe54c7178d6f870b59bbe129aef8efc3ff + Return PermanentURL +} + + +GetLBRYCanonicalURL(LBRYJSONObject){ ; input json string + ; ResolveURL := StrSplit(LBRYResolveAPICommand, "lbry://") + ; ResolveURL := "lbry://" . ResolveURL[2] + ; StrReplace(Haystack, SearchText [, ReplaceText, OutputVarCount, Limit := -1]) + LBRYPermanentURLJsonOBJ := StrReplace(LBRYJSONObject, LBRYPermanentURL, "LBRYPermanentURL") + ; clipboard := LBRYPermanentURLJsonOBJ + ; DevModeMsgBox(LBRYPermanentURLJsonOBJ) + + try parsed := JSON.Load(LBRYPermanentURLJsonOBJ) + try LBRYCanonicalURL := parsed.LBRYPermanentURL.canonical_url + + ; DevModeMsgBox(LBRYCanonicalURL) + + if(LBRYCanonicalURL = ""){ + Return "" ; return blank + } + + ; otherwise return the LBRY url + LBRYCanonicalURL := StrReplace(LBRYCanonicalURL, "lbry://", "https://lbry.tv/") + Return LBRYCanonicalURL +} + + +LBRYCMDTextReplacement(LBRYURLSlug){ + SingleQUote = " + LBRYURLSlug := StrReplace(LBRYURLSlug, " ", "_") ; replace all spaces with dashes + LBRYURLSlug := StrReplace(LBRYURLSlug, ":", "_") ; replace all colons with dashes + LBRYURLSlug := StrReplace(LBRYURLSlug, ",", "_") ; replace all colons with dashes + LBRYURLSlug := StrReplace(LBRYURLSlug, "?", "") ; replace all colons with dashes + LBRYURLSlug := StrReplace(LBRYURLSlug, "!", "") ; replace all colons with dashes + LBRYURLSlug := StrReplace(LBRYURLSlug, "`;", "_") ; replace all colons with dashes + LBRYURLSlug := StrReplace(LBRYURLSlug, "/", "_") ; replace all colons with dashes + ; LBRYURLSlug := StrReplace(LBRYURLSlug, "?", "") ; replace all colons with dashes + LBRYURLSlug := StrReplace(LBRYURLSlug, "<", "_") ; replace all colons with dashes + LBRYURLSlug := StrReplace(LBRYURLSlug, ">", "_") ; replace all colons with dashes + LBRYURLSlug := StrReplace(LBRYURLSlug, SingleQUote, "") ; replace all colons with dashes + LBRYURLSlug := StrReplace(LBRYURLSlug, "'", "") ; replace all colons with dashes + LBRYURLSlug := StrReplace(LBRYURLSlug, "=", "") ; replace all colons with dashes + LBRYURLSlug := StrReplace(LBRYURLSlug, ";", "") ; replace all colons with dashes + LBRYURLSlug := StrReplace(LBRYURLSlug, ")", "") ; replace all colons with dashes + LBRYURLSlug := StrReplace(LBRYURLSlug, "(", "") ; replace all colons with dashes + LBRYURLSlug := StrReplace(LBRYURLSlug, "___", "_") ; replace all colons with dashes + LBRYURLSlug := StrReplace(LBRYURLSlug, "__", "_") ; replace all colons with dashes + LBRYURLSlug := StrReplace(LBRYURLSlug, "__", "_") ; replace all colons with dashes + Return LBRYURLSlug +} + +GetLBRYAPIErrorFromString(UploadResult){ + UploadResultArray := StrSplit(UploadResult, "message") + LBRYAPIError := UploadResultArray[2] + ; LBRYAPIErrorStrLen := StrLen(LBRYAPIError) + + ; LBRYAPIErrorStrToTrim := LBRYAPIErrorStrLen - 3 + ; Msgbox % "LBRYAPIErrorStrToTrim: " LBRYAPIErrorStrToTrim + LBRYAPIError := SubStr(LBRYAPIError, 4) + LBRYAPIError := StrReplace(LBRYAPIError, "}", "") + + + ; Msgbox % "LBRYAPIError: " LBRYAPIError + Return LBRYAPIError + +} \ No newline at end of file diff --git a/Miscellaneous-Functions.ahk b/Miscellaneous-Functions.ahk new file mode 100644 index 0000000..444f9c2 --- /dev/null +++ b/Miscellaneous-Functions.ahk @@ -0,0 +1,245 @@ + +; -------------------------------Functions------------------------------- + +OnMsgBoxConfirmChromiumOverwrite() { + DetectHiddenWindows, On + Process, Exist + If (WinExist("ahk_class #32770 ahk_pid " . ErrorLevel)) { + ControlSetText Button1, Cancel + ControlSetText Button2, Yes + } +} + +; https://www.autohotkey.com/docs/v2/Functions.htm#Variadic +Join(sep, params*) { + For index, param in params + str .= param . sep + return SubStr(str, 1, -StrLen(sep)) +} + + +CheckLBRYProcess(){ + ; Check if LBRY Process exists + Process, Exist,LBRY.exe + if(ErrorLevel = 0) ; if doesn't exist + { + Message = Not Running. Starting up LBRY.exe + SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile") + + LBRYExeFilepath = C:\Program Files\LBRY\LBRY.exe + if(!FileExist(LBRYExeFilepath)){ + Message = Failed to Find LBRY.exe executable. LBRY not installed? + SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging") + Return + } + + Message = Checking LBRY daemon_settings.yml file for Odysee Wallet Servers + SaveOrPostProgress(Message:=Message,PostType:=",ErrorLoggingTextFile,DiscordErrorLogging") + + FileRead, daemon_settingsFileContent, C:\Users\%A_UserName%\AppData\Local\lbry\lbrynet\daemon_settings.yml + + if(!InStr(daemon_settingsFileContent, "a-hub1.odysee.com")){ + Message = Odysee wallet server is not in daemon_settings.yml. Replacing File with required settings. + SaveOrPostProgress(Message:=Message,PostType:=",DiscordErrorLogging") + + LBRYDaemonSettingsFP = C:\Users\%A_UserName%\AppData\Local\lbry\lbrynet\daemon_settings.yml + LBRYDaemonSettingsBackupFP = C:\Users\%A_UserName%\AppData\Local\lbry\lbrynet\daemon_settings_BU.yml + + + ; Msgbox % "daemon_settingsText: " daemon_settingsText + FileMove, %LBRYDaemonSettingsFP%, %LBRYDaemonSettingsBackupFP%, 1 ; Dest [, Flag (1 = overwrite)] + + UrlDownloadToFile, https://freedomain.dev/yuriy/video-uploader/raw/branch/main/Assets/daemon_settings.yml , %LBRYDaemonSettingsFP% + + sleep, 1000 + + if(!FileExist(LBRYDaemonSettingsFP)){ + Message = Failed to download the custom daemon_settings.yml file from git. Restoring Original File + SaveOrPostProgress(Message:=Message,PostType:=",ErrorLoggingTextFile,DiscordErrorLogging") + FileMove,%LBRYDaemonSettingsBackupFP%,%LBRYDaemonSettingsFP%, 1 + } + } + + + try run, "%LBRYExeFilepath%" + Message = Waiting 1 Minute for LBRY to start up + SaveOrPostProgress(Message:=Message,PostType:="Tooltip") + Sleep, 60000 ; 1 minute + + Process, Exist,LBRY.exe + if(ErrorLevel = 0) ; if doesn't exist + { + Message = Failed to Start LBRY.exe after 60 seconds of waiting + SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging") + Return + } + WinMinimize, LBRY + } + Return +} + + +GetPermanentLBRYURL(UploadResult){ + SingleQuotationmark = " + + UploadResult := StrSplit(UploadResult, "`n") ; split results by new line + + ; Iterate through the array of the results + Loop % UploadResult.Length() { + PermanentURL := UploadResult[A_Index] + if(InStr(PermanentURL, "permanent_url")) + Break + } + + ; Starting Result: "permanent_url": "lbry://Test-Video-161-Numbered#c9ad9afe54c7178d6f870b59bbe129aef8efc3ff", + PermanentURL := StrSplit(PermanentURL, "lbry:") + PermanentURL := "lbry:" . PermanentURL[2] + PermanentURL := StrReplace(PermanentURL, ",", "") + PermanentURL := StrReplace(PermanentURL, SingleQuotationmark, "") + PermanentURL := StrReplace(PermanentURL, "`n", "") + PermanentURL := StrReplace(PermanentURL, "`r", "") + + ; End Result lbry://Test-Video-161-Numbered#c9ad9afe54c7178d6f870b59bbe129aef8efc3ff + Return PermanentURL +} + + + + +LogErrorToTextFile(Error){ +/* if(LogErrorsToTextFile != 1) + Return + */ + ErrorLoggingFile := VideoFolderDir . "\" . "ErrorLogging.txt" + FormatTime, TodayDate , YYYYMMDDHH24MISS, yyyyMMdd_hhmmss + text = + ( + + + ---------------%TodayDate%--------------- + %CurrentSite%: %Error% + + + ) + if(LogErrorsToMsgbox) + Msgbox % "Text: " Text + + FileAppend, %Text%, %ErrorLoggingFile% + } ; End of Function + +/* +*/ + +AddToTotalVideosUploadedCount(){ + ; IniRead, TotalVideosUploaded, %SettingsIniFilepath%, General, TotalVideosUploaded, %A_Space% + TotalVideosUploaded += 1 + ; IniWrite, %TotalVideosUploaded%, %SettingsIniFilepath%, General, TotalVideosUploaded +} + + + +OnMsgBoxPodcastFinish() { + DetectHiddenWindows, On + Process, Exist + If (WinExist("ahk_class #32770 ahk_pid " . ErrorLevel)) { + WinMove,, 0 + } +} + +OnMsgBoxSocialMediaPoster() { + DetectHiddenWindows, On + Process, Exist + If (WinExist("ahk_class #32770 ahk_pid " . ErrorLevel)) { + ControlSetText Button1, Yes + ControlSetText Button2, Not Now + } +} + + + +Check_For_Stuck_Video_Upload(Index_Number, Upload_Status){ + if(A_index = 1){ ; Create a blank array + ProgressStatusArray := [] + Return + } + + Message = Upload Status: %Upload_Status% + SaveOrPostProgress(Message:=Message,PostType:="Tooltip") + + ; if we reached the last loop number: + if(A_index = %Number_of_loops_to_Check_Upload_status%){ + Message = Upload Most Likely Failed: Video Hasn't Finished Uploading after 1 hour. + SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging") + SaveDriverURLOFErrorPage() + Return "Failed" + } + + ; If progress is still the same after a ten minute interval then error out + if(HasVal(Array_Index_Num_of_Upload_StatusChecks, A_index)){ ; if current index is in Array of index numbers to check status during + + ; Send a notification message of upload status + Message = Upload Status: %Upload_Status% + SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,DiscordErrorLogging") + + ; if current upload_status is in the array of values that are updated every 10 mins + if(HasVal(ProgressStatusArray, Upload_Status)){ + Message = Upload Failed (E#4508)`nUpload Stuck at same point for 10 minutes. Stuck Status: %ProgressStatus% + SaveOrPostProgress(Message:=Message,PostType:="Tooltip,ErrorLoggingTextFile,ErrorSummaryVar,DiscordErrorLogging") + SaveDriverURLOFErrorPage() + Return "Failed" + } + ProgressStatusArray.Push(Upload_Status) ; append current status to array + } + } ; end of func + +/* +*/ +; Find the longest word in a string of words +FindLongestWordInString(m, calloutNumber, pos, haystack, pattern){ + Global wordLength, longestWord + + len := StrLen(m) + + If ( len > wordLength ) + { + wordLength := len + longestWord := m + + ; MsgBox, %m% + } +} + +/* +*/ + +; Split a long string into multiple pieces based on the string lengtht you want and return an array with all strings +SplitStringWithSentences(text, maxChunkSize) { + sentences := StrSplit(text, "\. ") ; split at period with space after it + + currentChunk := "" + chunks := [] + + Loop, % sentences.Length() + { + sentence := sentences[A_Index] + CurrentChunkAndSentence := currentChunk . sentence + ; Msgbox % "CurrentChunkAndSentence: " CurrentChunkAndSentence + ; msgbox % StrLen(CurrentChunkAndSentence) + + if (StrLen(CurrentChunkAndSentence) <= maxChunkSize) + { + currentChunk .= sentence . "\. " + } + else + { + chunks.Push(currentChunk) + currentChunk := sentence . "\. " + } + } + + if (currentChunk != "") + chunks.Push(currentChunk) + + return chunks +} +