#! Name: ExamplesMainHooks.sh #! Author: kittykat #! Version: 2024.09.21 #! Desc: Just some examples on easy plugins... #! Usage: Edit LoadPlugin="" line in mad.sh or mad.config #! LoadPlugin="ExamplesMainHooks.sh" #! #! #! Plugin System: Additional Hook Functions added for easy of overriding: #! #! To Hook a Function, your function must begin with the hookable function name, and be unique #! Best practice: HooKFuncName_ #! ie. #! PostSuccessfulDownload_myfilename() { #! } #! #! Available Hook Functions: #! ------------------------- #! * OnLoad(): Occurs after load mad.config / load plugins (prior to processing). #! * BeginProcessing(): Occurs immediately after beginning processin of urls.txt (loops with Catnaps). #! * PreProcessUrl(): occurs immediately after reading in an unprocessed url (^http) line to process. #! * PostSuccessfulDownload(): occurs after a download success (is marked #OK# in the urls.txt). #! * PostFailedDownload(): occurs after a download fails (is marked #FAIL# in the urls.txt). #! * PostFailRetryDownload(): occurs after a download fails with a retry (is marked #RETRY# in the urls.txt). #! * DoneProcessingAllUrls(): occurs after all the urls have finished processing (no flocks or other terms downloading). #! * PostSuccessfulUpload(): occurs after an upload success (after upload completed ticket is created in ./downloads/). #! * PostFailedUpload(): occurs after an upload fails definitively (host not responding, missing required response) #! * PostFailRetryUpload(): occurs after an upload fails with a retry (network drop, unexpected result) #! * DoneProcessingAllUploads: occurs after alll the files have finished processing #! #! ----------- Hooks ---------------------------- #! OnLoad_ExamplesMainHooks() { local plugName='ExamplesMainHooks' local plugFunc='OnLoad_ExamplesMainHooks' if [ "${DebugPluginsEnabled}" == "true" ]; then echo -e "[${PINK}DEBUG${NC}]: Running ${PINK}$plugFunc${NC} in ${BLUE}$plugName${NC} ...${NC}" fi local pScriptSourceDir="$1" local pScriptArguments="$2" return 0 } BeginProcessing_ExamplesMainHooks() { local plugName='ExamplesMainHooks' local plugFunc='BeginProcessing_ExamplesMainHooks' if [ "${DebugPluginsEnabled}" == "true" ]; then echo -e "[${PINK}DEBUG${NC}]: Running ${PINK}$plugFunc${NC} in ${BLUE}$plugName${NC} ...${NC}" fi local pInputFile="$1" return 0 } PreProcessUrl_ExamplesMainHooks() { local plugName='ExamplesMainHooks' local plugFunc='PreProcessUrl_ExamplesMainHooks' if [ "${DebugPluginsEnabled}" == "true" ]; then echo -e "[${PINK}DEBUG${NC}]: Running ${PINK}$plugFunc${NC} in ${BLUE}$plugName${NC} ...${NC}" fi local pFullLine="$1" local pUrlOnly="${1%%\ *}" if grep -Eqi '|' <<< "${pUrlOnly}" ; then pUrlOnly="${pUrlOnly%%\|*}" fi if grep -Eqi '^direct=' <<< "${pUrlOnly}" ; then pUrlOnly="${pUrlOnly%%\=*}" fi return 0 return 1 } PostSuccessfulDownload_ExamplesMainHooks() { local plugName='ExamplesMainHooks' local plugFunc='PostSuccessfulDownload_ExamplesMainHooks' if [ "${DebugPluginsEnabled}" == "true" ]; then echo -e "[${PINK}DEBUG${NC}]: Running ${PINK}$plugFunc${NC} in ${BLUE}$plugName${NC} ...${NC}" fi local pRemoteUrl="$1" local pFilePath="$2" local pFileName="$3" local pFolderName="$4" local pFileSize="$5" return 0 } PostFailedDownload_ExamplesMainHooks() { local plugName='ExamplesMainHooks' local plugFunc='PostFailedDownload_ExamplesMainHooks' if [ "${DebugPluginsEnabled}" == "true" ]; then echo -e "[${PINK}DEBUG${NC}]: Running ${PINK}$plugFunc${NC} in ${BLUE}$plugName${NC} ...${NC}" fi local pRemoteUrl="$1" local pMessage1="$2" local pMessage2="$3" return 0 } PostFailRetryDownload_ExamplesMainHooks() { local plugName='ExamplesMainHooks' local plugFunc='PostFailRetryDownload_ExamplesMainHooks' if [ "${DebugPluginsEnabled}" == "true" ]; then echo -e "[${PINK}DEBUG${NC}]: Running ${PINK}$plugFunc${NC} in ${BLUE}$plugName${NC} ...${NC}" fi local pRemoteUrl="$1" local pMessage1="$2" local pMessage2="$3" return 0 } DoneProcessingAllUrls_ExamplesMainHooks() { local plugName='ExamplesMainHooks' local plugFunc='DoneProcessingAllUrls_ExamplesMainHooks' if [ "${DebugPluginsEnabled}" == "true" ]; then echo -e "[${PINK}DEBUG${NC}]: Running ${PINK}$plugFunc${NC} in ${BLUE}$plugName${NC} ...${NC}" fi local pInputFile="$1" madReset "$pInputFile" "true" "false" "false" "true" qChkLineCount=$(grep -Ei '^(http|direct=http)' "${pInputFile}" | wc -l | awk '{ print $1 }') if ((qChkLineCount > 0)) ; then ReloadScript "$@" fi return 0 } PostSuccessfulUpload_ExamplesMainHooks() { local plugName='ExamplesMainHooks' local plugFunc='PostSuccessfulUpload_ExamplesMainHooks' if [ "${DebugPluginsEnabled}" == "true" ]; then echo -e "[${PINK}DEBUG${NC}]: Running ${PINK}$plugFunc${NC} in ${BLUE}$plugName${NC} ...${NC}" fi local pFilePath="$1" local pHostCode="$2" local pFileName="$3" local pFileSize="$4" local pDownloadLink="$5" return 0 } PostFailedUpload_ExamplesMainHooks() { local plugName='ExamplesMainHooks' local plugFunc='PostFailedUpload_ExamplesMainHooks' if [ "${DebugPluginsEnabled}" == "true" ]; then echo -e "[${PINK}DEBUG${NC}]: Running ${PINK}$plugFunc${NC} in ${BLUE}$plugName${NC} ...${NC}" fi local pFilePath="$1" local pHostCode="$2" local pMessage1="$3" local pMessage2="$4" return 0 } PostFailRetryUpload_ExamplesMainHooks() { local plugName='ExamplesMainHooks' local plugFunc='PostFailRetryUpload_ExamplesMainHooks' if [ "${DebugPluginsEnabled}" == "true" ]; then echo -e "[${PINK}DEBUG${NC}]: Running ${PINK}$plugFunc${NC} in ${BLUE}$plugName${NC} ...${NC}" fi local pFilePath="$1" local pHostCode="$2" local pMessage1="$3" local pMessage2="$4" return 0 } DoneProcessingAllUploads_ExamplesMainHooks() { local plugName='ExamplesMainHooks' local plugFunc='DoneProcessingAllUploads_ExamplesMainHooks' if [ "${DebugPluginsEnabled}" == "true" ]; then echo -e "[${PINK}DEBUG${NC}]: Running ${PINK}$plugFunc${NC} in ${BLUE}$plugName${NC} ...${NC}" fi local pInputFile="$1" return 0 }