Skip to content

Instantly share code, notes, and snippets.

@benzBrake
Created February 24, 2021 02:07
Show Gist options
  • Save benzBrake/9c5fc87aaef8f352fc3bcabdf3bbd698 to your computer and use it in GitHub Desktop.
Save benzBrake/9c5fc87aaef8f352fc3bcabdf3bbd698 to your computer and use it in GitHub Desktop.
transmission 下载完成自动上传
#!/bin/bash
# transmission远程 登陆用户名
USERNAME=""
# transmission 远程 登陆密码
PASSWORD=""
# transmission download 目录
DLDIR="/data/Transmission/bt/downloads"
# rcone 上传目录
RemoteDIR="unlimited:/Downloads"
# 过滤关键字
FILTER_STR=".txt .url .chm .mht .gif .htm 扫码 2048 padding_file 澳门 激情 交友 扫码 直播"
# 删除过滤文件
REMOVE_FLAG=1
# 日志文件输出目录
LOG_PATH="/data/trans_autoupload.log"
# 日期格式化
DATA_TIME=$(date +"%y-%m-%d %H:%M:%S")
#====================================================================
function upFile() {
NAME=$@ #因为参数可能带空格,需要看成一个用$@,否则只能取空格前面的字符串
if [[ -e "$DLDIR/$NAME" ]]; then #判断文件是否存在
local _dir=$(echo $NAME | awk -F/ '{print $1}')
local _name=${NAME##*/}
#判断是否存在上传成功的标记文件
if [[ -e "$DLDIR/$NAME.isupload" ]]; then
echo "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b...已上传 or 已删除"
return
fi
#检测是否已经上传
if [[ -e "${DLDIR}/$NAME.isupload" ]]; then
echo -ne "\b\b\b\b\b\b\b\b\b...已上传"
return
fi
#过滤关键字
#检测是否已经跳过
if [[ -e "${DLDIR}/$NAME.isskiped" ]]; then
echo -ne "\b\b\b\b\b\b\b\b\b...已跳过"
return
fi
for str in ${FILTER_STR}; do
if [[ ${_name} =~ ${str} ]]; then
if [[ $REMOVE_FLAG -eq 1 ]]; then
eval "rm -f "\'$DLDIR/$NAME\'""
echo -ne "\b\b\b\b\b\b\b\b\b...已删除"
else
eval "touch "\'"$DLDIR/$NAME\'"".isskiped"
echo -ne "\b\b\b\b\b\b\b\b\b...已跳过"
fi
return
fi
done
#上传
echo -ne "\b\b\b\b\b\b\b\b\b...上传中"
eval "rclone move "\'$DLDIR/$NAME\'" "\'$RemoteDIR/$_dir\'""
if [[ $? == '0' ]]; then
touch "$DLDIR/$NAME.isupload"
echo $DATA_TIME $NAME "上传成功" >>$LOG_PATH 2>&1
fi
fi
}
function Start() {
for i in $(transmission-remote --auth $USERNAME:$PASSWORD -l | grep "Finished" | awk '{print $1}' | grep -v ID); do
echo $DATA_TIME "TASK:$i"
transmission-remote --auth $USERNAME:$PASSWORD -t $i -f | grep -v '#' | grep -E "100%" | awk '{for (i=2; i<7; i++){$i=""} print $0}' | while read ID NAME; do
upFile $NAME #把获取的$NAME传给 upFile函数
done
done
}
Start
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment