; -------------------------------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 }