一个sh
脚本,闲来没事结合chatgpt乱折腾的!
其实你还可以自己编写下载完成后自动上传等脚本!
功能:
- 下载完成后,移动文件到指定目录
- 过滤掉文件名中的url地址,并写入进日志文件中
- 判断是否为视频文件,如果为视频为就移动,不是视频文件就停止
- 自动删除掉空文件夹以及种子文件
这里结合P3TERX
的aria2 pro修改版本,因为它可以下载指定的文件类型(例如只下载视频文件,mp4,mov等),其他的文件就自动删除。
这个应该也可以自己写脚本实现,为了省事就这样了。也不仅仅有这一个功能,自己探索吧
项目地址 https://github.com/P3TERX/aria2.conf
下面就是我搞的脚本了,其中
DOWNLOAD_DIR="/root/123"为下载完成后需要移动的路径
LOG_FILE="/root/.aria2c/file.log"为过滤掉的域名url日志
#!/bin/bash
# 设置Aria2下载完成后移动文件保存目录
DOWNLOAD_DIR="/root/123"
# 设置日志文件路径
LOG_FILE="/root/.aria2c/file.log"
# 获取Aria2传递的参数
FILE_PATH=$3
FILE_NAME=$(basename "$FILE_PATH")
# 通过正则表达式过滤掉文件名中的任何域名
NEW_FILE_NAME=$(echo "$FILE_NAME" | sed -E 's/(https?:\/\/)?([a-zA-Z0-9-]+\.){1,}[a-zA-Z]{2,}[^[:alnum:]]//g')
# 移除连续的空格字符
NEW_FILE_NAME=$(echo "$NEW_FILE_NAME" | sed 's/ \+/ /g')
# 生成新的文件路径
NEW_FILE_PATH="$DOWNLOAD_DIR/$NEW_FILE_NAME"
# 移动文件到新路径
#mv "$FILE_PATH" "$NEW_FILE_PATH"
# 获取文件的扩展名
FILE_EXTENSION="${FILE_PATH##*.}"
# 定义视频文件格式的数组
VIDEO_FORMATS=("mp4" "mkv" "avi" "mov")
# 判断文件扩展名是否在视频文件格式数组中
if [[ " ${VIDEO_FORMATS[*]} " == *" $FILE_EXTENSION "* ]]; then
# mv "$FILE_PATH" "$NEW_FILE_PATH"
mv "$FILE_PATH" "$NEW_FILE_PATH"
#echo "File moved to $NEW_FILE_PATH."
fi
# 记录过滤掉的域名到日志文件
FILTERED_DOMAINS=$(echo "$FILE_NAME" | grep -oE '(https?://)?([a-zA-Z0-9-]+\.)+[a-zA-Z]{2,}'| sed 's/https\?:\/\///')
if [ -n "$FILTERED_DOMAINS" ]; then
echo "$(date) - 过滤域名:$FILTERED_DOMAINS" >> "$LOG_FILE"
fi
#自动删除空文件夹以及种子文件
CHECK_CORE_FILE() {
CORE_FILE="$(dirname $0)/core"
if [[ -f "${CORE_FILE}" ]]; then
. "${CORE_FILE}"
else
echo "!!! core file does not exist !!!"
exit 1
fi
}
CHECK_CORE_FILE "$@"
CHECK_PARAMETER "$@"
CHECK_FILE_NUM
CHECK_SCRIPT_CONF
GET_TASK_INFO
GET_DOWNLOAD_DIR
CONVERSION_PATH
CLEAN_UP
exit 0
保存为move_file.sh文件放到 aria2配置路径下 (P3TERX默认是在 /root/.aria2c目录下)
然后编辑/root/.aria2c
目录下的aria2.conf文件
添加一个aria2下载完成后执行的函数 ,把脚本路径放到里面。on-download-complete=/root/.aria2c/move_file.sh
使用dos2unix将文本文件从 DOS/MAC 格式转换为 UNIX 格式
dos2unix move_file.sh
需要给上运行权限chmod +x /root/.aria2c/move_file.sh
过滤掉的域名日志文件在脚本的同路径下。
这是过滤掉的域名信息