本篇为 Armbian系统下的Aria2离线下载与OneDrive自动上传:打造高效离线下载服务器指南——OneDrive篇 后续文章。主要为离线下载任务的文件下载上传状态做远程推送通知,让你更确切地掌握下载进度。
为实现远程推送功能,本文使用PushDeer:
PushDeer是一个开源的无APP推送解决方案,其特色包括:「易用」、「可控」和「渐进」。
其他不多做介绍,有时间单独写一篇关于PushDeer的使用。
PushDeer官网:
先进入官网下载APP后打开并获得你的KEY。
将上篇文章,即 Armbian系统下的Aria2离线下载与OneDrive自动上传:打造高效离线下载服务器指南——OneDrive篇 内使用的upload.sh文件修改成下方代码并保存即可。
#!/bin/bash
GID="$1";
FileNum="$2";
File="$3";
MaxSize="15728640";
RemoteDIR="/";
#上传到Onedrive的路径,默认为根目录,如果要上传到HEITAO2目录,""里面请填成HEITAO2
LocalDIR="/downloads/";
#Aria2在docker内的下载目录,记得最后面加上/
Uploader="/onedrive-uploader/onedrive-uploader";
#上传工具在docker内的路径
Config="/onedrive-uploader/config.json";
#配置文件在docker内的路径
PushDeerKey="" #这里填上软件内获得的Key值即可
PushURL="https://api2.pushdeer.com/message/push?pushkey=${PushDeerKey}&text="
urlencode(){
tmpText=`echo $1 |tr -d '\n' |od -An -tx1|tr ' ' %`
echo ${tmpText} |sed 's/ //g'
}
if [[ -z $(echo "$FileNum" |grep -o '[0-9]*' |head -n1) ]]; then FileNum='0'; fi
if [[ "$FileNum" -le '0' ]]; then exit 0; fi
if [[ "$#" != '3' ]]; then exit 0; fi
function LoadFile(){
if [[ ! -e "${Uploader}" ]]; then return; fi
IFS_BAK=$IFS
IFS=$'\n'
tmpFile="$(echo "${File/#$LocalDIR}" |cut -f1 -d'/')"
FileLoad="${LocalDIR}${tmpFile}"
message=`urlencode "${tmpFile}下载完成"`
curl ${PushURL}${message}
if [[ ! -e "${FileLoad}" ]]; then return; fi
ItemSize=$(du -s "${FileLoad}" |cut -f1 |grep -o '[0-9]*' |head -n1)
if [[ -z "$ItemSize" ]]; then return; fi
if [[ "$ItemSize" -ge "$MaxSize" ]]; then
echo -ne "\033[33m${FileLoad} \033[0mtoo large to spik.\n";
return;
fi
if [ -f "${FileLoad}" ]; then
${Uploader} -c "${Config}" upload "${FileLoad}" "${RemoteDIR}"
else
newRemoteDIR="${RemoteDIR}/${tmpFile}"
${Uploader} -c "${Config}" mkdir "${newRemoteDIR}"
for file in ${FileLoad}/*
do
${Uploader} -c "${Config}" upload "${file}" "${newRemoteDIR}"
done
fi
if [[ $? == '0' ]]; then
rm -rf "${FileLoad}";
message=`urlencode "${tmpFile}上传完成,已删除本地文件"`
curl ${PushURL}${message}
else
message=`urlencode "${tmpFile}上传失败"`
curl ${PushURL}${message}
fi
IFS=$IFS_BAK
}
LoadFile;
评论 (0)