#!/usr/bin/env bash # # Copyright (c) 2018-2020 P3TERX # # This is free software, licensed under the MIT License. # See /LICENSE for more information. # # https://github.com/P3TERX/aria2.conf # File name:upload.sh # Description: Use Rclone to upload files after Aria2 download is complete # Version: 3.1 # CHECK_CORE_FILE() { CORE_FILE="$(dirname $0)/core" if [[ -f "${CORE_FILE}" ]]; then . "${CORE_FILE}" else echo && echo "!!! core file does not exist !!!" exit 1 fi } CHECK_RCLONE() { [[ $# -eq 0 ]] && { echo && echo -e "Checking RCLONE connection ..." rclone mkdir "${DRIVE_NAME}:${DRIVE_DIR}/P3TERX.COM" if [[ $? -eq 0 ]]; then rclone rmdir "${DRIVE_NAME}:${DRIVE_DIR}/P3TERX.COM" echo echo -e "${LIGHT_GREEN_FONT_PREFIX}success${FONT_COLOR_SUFFIX}" exit 0 else echo echo -e "${RED_FONT_PREFIX}failure${FONT_COLOR_SUFFIX}" exit 1 fi } } TASK_INFO() { echo -e " -------------------------- [${YELLOW_FONT_PREFIX}Task Infomation${FONT_COLOR_SUFFIX}] -------------------------- ${LIGHT_PURPLE_FONT_PREFIX}Task GID:${FONT_COLOR_SUFFIX} ${TASK_GID} ${LIGHT_PURPLE_FONT_PREFIX}Number of Files:${FONT_COLOR_SUFFIX} ${FILE_NUM} ${LIGHT_PURPLE_FONT_PREFIX}First File Path:${FONT_COLOR_SUFFIX} ${FILE_PATH} ${LIGHT_PURPLE_FONT_PREFIX}Task File Name:${FONT_COLOR_SUFFIX} ${TASK_FILE_NAME} ${LIGHT_PURPLE_FONT_PREFIX}Task Path:${FONT_COLOR_SUFFIX} ${TASK_PATH} ${LIGHT_PURPLE_FONT_PREFIX}Aria2 Download Directory:${FONT_COLOR_SUFFIX} ${ARIA2_DOWNLOAD_DIR} ${LIGHT_PURPLE_FONT_PREFIX}Custom Download Directory:${FONT_COLOR_SUFFIX} ${DOWNLOAD_DIR} ${LIGHT_PURPLE_FONT_PREFIX}Local Path:${FONT_COLOR_SUFFIX} ${LOCAL_PATH} ${LIGHT_PURPLE_FONT_PREFIX}Remote Path:${FONT_COLOR_SUFFIX} ${REMOTE_PATH} ${LIGHT_PURPLE_FONT_PREFIX}.aria2 File Path:${FONT_COLOR_SUFFIX} ${DOT_ARIA2_FILE} -------------------------- [${YELLOW_FONT_PREFIX}Task Infomation${FONT_COLOR_SUFFIX}] -------------------------- " } OUTPUT_UPLOAD_LOG() { LOG="${UPLOAD_LOG}" LOG_PATH="${UPLOAD_LOG_PATH}" OUTPUT_LOG } DEFINITION_PATH() { LOCAL_PATH="${TASK_PATH}" if [[ -f "${TASK_PATH}" ]]; then REMOTE_PATH="${DRIVE_NAME}:${DRIVE_DIR}${DEST_PATH_SUFFIX%/*}" else REMOTE_PATH="${DRIVE_NAME}:${DRIVE_DIR}${DEST_PATH_SUFFIX}" fi } LOAD_RCLONE_ENV() { RCLONE_ENV_FILE="${ARIA2_CONF_DIR}/rclone.env" [[ -f ${RCLONE_ENV_FILE} ]] && export $(grep -Ev "^#|^$" ${RCLONE_ENV_FILE} | xargs -0) } UPLOAD_FILE() { echo -e "$(DATE_TIME) ${INFO} Start upload files..." TASK_INFO RETRY=0 RETRY_NUM=3 while [ ${RETRY} -le ${RETRY_NUM} ]; do [ ${RETRY} != 0 ] && ( echo echo -e "$(DATE_TIME) ${ERROR} Upload failed! Retry ${RETRY}/${RETRY_NUM} ..." echo ) rclone move -v "${LOCAL_PATH}" "${REMOTE_PATH}" RCLONE_EXIT_CODE=$? if [ ${RCLONE_EXIT_CODE} -eq 0 ]; then UPLOAD_LOG="$(DATE_TIME) ${INFO} Upload done: ${LOCAL_PATH} -> ${REMOTE_PATH}" OUTPUT_UPLOAD_LOG DELETE_EMPTY_DIR break else RETRY=$((${RETRY} + 1)) [ ${RETRY} -gt ${RETRY_NUM} ] && ( echo UPLOAD_LOG="$(DATE_TIME) ${ERROR} Upload failed: ${LOCAL_PATH}" OUTPUT_UPLOAD_LOG ) sleep 3 fi done } CHECK_CORE_FILE "$@" CHECK_SCRIPT_CONF CHECK_RCLONE "$@" CHECK_FILE_NUM GET_TASK_INFO GET_DOWNLOAD_DIR CONVERSION_PATH DEFINITION_PATH CLEAN_UP LOAD_RCLONE_ENV UPLOAD_FILE exit 0