Giter VIP home page Giter VIP logo

aria2.conf's Issues

添加tracker时报错

--------------------[TRACKERS]--------------------

[INFO] Adding trackers to 'aria2.conf' ...

sed: 1: "aria2.conf": command a expects \ followed by text

谢谢。

手动指定下载路径时.aria2 文件删除失败问题(已找到原因,望修复)

触发条件

直接上结论:

如果 手动指定 下载路径且下载的 BT 是 包含多个文件 的文件夹,此时无法正确删除自动生成的 .aria2 文件。

对于一般小白用户,如果添加 bt 时,没有手动指定路径,或者下载的 bt 只有一个文件。目前的脚本都可以正常删除 .aria2

例子

就以我目前的配置和实际情况来讲解了

aria2.conf 配置中,我设定默认下载目录为 : dir=/media/pi/hdd/downloads

delete.aria2.sh 脚本中,我同样设定目录为: DOWNLOAD_PATH='/media/pi/hdd/downloads'

默认情况下

添加Bt 种子 -》 复制 bt 到输入框 -》 点击下载
没有手动输入下载路径的情况下

此时我要下载一个 bt 种子,假设这个 bt 种子含有多个文件,下载后便是一个文件夹,假设下载后目录结构和文件是这样的:

/media/pi/hdd/downloads/文件夹/文件1
/media/pi/hdd/downloads/文件夹/文件2
/media/pi/hdd/downloads/文件夹.aria2

delete.aria2.sh 脚本中,有这么一行 TOP_PATH=${DOWNLOAD_PATH}/${REMOVE_DOWNLOAD_PATH%%/*}

这时候的脚本会正确拼接成路径 /media/pi/hdd/downloads/文件夹 ,然后成功删除 .aria2 文件

手动指定下载路径

添加Bt 种子 -》 复制 bt 到输入框 -》 设定下载目录 -》 点击下载

假设我这次设定的目录是: /media/pi/hdd/downloads/test1/test2

此时下载同一个 bt 种子,下载后目录结构和文件是这样的:

/media/pi/hdd/downloads/test1/test2/文件夹/文件1
/media/pi/hdd/downloads/test1/test2/文件夹/文件2
/media/pi/hdd/downloads/test1/test2/文件夹.aria2

那么 delete.aria2.sh 脚本中的 TOP_PATH=${DOWNLOAD_PATH}/${REMOVE_DOWNLOAD_PATH%%/*} 行,拼接后的路径为:

/media/pi/hdd/downloads/test1

此时尝试删除 /media/pi/hdd/downloads/test1.aria2 文件显然是不对的

原因就是这种方式只能获取一级目录,而我设定的目录包含了两个子目录 test1test2

将这一行脚本修改为: TOP_PATH=${DOWNLOAD_PATH}/$(dirname $REMOVE_DOWNLOAD_PATH)

使用 dirname 获取到两个子目录,此时拼接的路径为:

/media/pi/hdd/downloads/test1/test/文件夹

然后就能正确删除了。

我只使用了 delete.aria2.sh 脚本,如果其他脚本中也是这样的获取方式,应该有同样的问题

附上我目前的脚本,供参考

#!/usr/bin/env bash

DOWNLOAD_PATH='/media/pi/hdd/downloads'

if [ ! -d $DOWNLOAD_PATH ]; then
    echo 'path not exists'
    exit 1
fi

FILE_PATH=$3
REMOVE_DOWNLOAD_PATH=${FILE_PATH#${DOWNLOAD_PATH}/}
# TOP_PATH=${DOWNLOAD_PATH}/${REMOVE_DOWNLOAD_PATH%%/*}
TOP_PATH=${DOWNLOAD_PATH}/$(dirname $REMOVE_DOWNLOAD_PATH)
# echo log
LIGHT_GREEN_FONT_PREFIX="\033[1;32m"
FONT_COLOR_SUFFIX="\033[0m"
INFO="[${LIGHT_GREEN_FONT_PREFIX}INFO${FONT_COLOR_SUFFIX}]"

echo -e "$(date +"%m/%d %H:%M:%S") ${INFO} Delete .aria2 file ..."

if [ "$2"x == "0"x ]; then
    echo 'file length is zero'
    exit 0
elif [ -f "${FILE_PATH}.aria2" ]; then
    rm -vf "${FILE_PATH}.aria2"
elif [ -f "${TOP_PATH}.aria2" ]; then
    rm -vf "${TOP_PATH}.aria2"
fi

绑定了ip后无法上传

我的aria2是用的隧道代理下载,其中用的设置如下

multiple-interface=192.168.100.2,2001:470:1f14:594::2
bt-lpd-interface=192.168.100.2

然后绑完之后就无法自动上传upload.sh

关于BT下载完后上传问题

BT下载完成后还需要等待做种完成才会开始上传。
ondownload-complete 和 on-bt-download-complete的区别如下:
image
需要在下载完后即刻开始上传文件并且不会重复上传
congig里加上 on-bt-download-complete=
以下为本人自改脚本(水平有限仅供参考):
#!/bin/bash

GID="$1";
FileNum="$2";
File="$3";
MinSize="5" #5K
MaxSize="157286400" #15G
RemoteDIR="/root/ftppanshi/"; #rclone path
LocalDIR="/home/wwwroot/default/Download/"; #Aria2 Dowanload Path
log_file="/etc/aria2/upload.log";

echo "date +'%Y-%m-%d %H:%M:%S': $output" >> $log_file;
echo $GID>> $log_file;
echo $FileNum>> $log_file;
echo $File>> $log_file;

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(){
IFS_BAK=$IFS
IFS=$'\n'
if [[ ! -d "$LocalDIR" ]]; then return; fi
if [[ -e "$File" ]]; then
FileLoad="${File/#$LocalDIR}"

echo $FileLoad;

    if [[ "$FileLoad" == '/' ]]; then echo "end"; return; fi

    


fl="${FileLoad#*/}";
echo $fl;

    FileLoad=$(basename "$FileLoad");
echo $FileLoad;
if [[ "$fl" != "$FileLoad" ]]; then 
FileLoad=$fl; 
FileLoad=$(dirname "$FileLoad");
tmplog_file="/etc/aria2/"$FileLoad".log";
else
tmplog_file="/etc/aria2/"$FileLoad".log";
echo "single file">$tmplog_file;
fi
echo $FileLoad;

echo $tmplog_file;

  if [ ! -e $tmplog_file ];then
 
 echo "on-bt-download-complete">$tmplog_file;
  else 
 state=$(cat $tmplog_file | sed -n 1p) ;

#echo $state;
if [ $state == "on-bt-download-complete" ]; then 
echo "on-download-complete">$tmplog_file;  
exit;
elif [ $state == "single file" ];then
echo "single file";
else
rm -rf $tmplog_file;
exit;
fi


  fi


if [[ "$FileLoad" == "$LocalDIR" ]]; then return; fi
EXEC="$(command -v cp)"
if [[ -z "$EXEC" ]]; then return; fi
Option=" -f -r";
cd "$LocalDIR";
if [[ -e "$FileLoad" ]]; then

  ItemSize=$(du -s "$FileLoad" |cut -f1 |grep -o '[0-9]*' |head -n1)

echo $ItemSize;
  if [[ -z "$ItemSize" ]]; then return; fi
  if [[ "$ItemSize" -le "$MinSize" ]]; then
    echo -ne "\033[33m$FileLoad \033[0mtoo small to spik.\n";
    return;
  fi
  if [[ "$ItemSize" -ge "$MaxSize" ]]; then
    echo -ne "\033[33m$FileLoad \033[0mtoo large to spik.\n";
    return;
  fi





while true
do
ls $RemoteDIR;
if [ $? -eq 0 ]; then break;
fi
done




if [  -f "${RemoteDIR}$FileLoad" ]; then
echo "exist file!";
exit;
fi


if [  -d "${RemoteDIR}$FileLoad" ]; then
echo "exist directory!";
exit;
fi


while true
do
cd "$LocalDIR";
  	eval "${EXEC}${Option}" \'"${FileLoad}"\' "${RemoteDIR}";
if [ $? -eq 0 ]; then 
state=$(cat $tmplog_file | sed -n 1p) ;
if [ $state == "on-bt-download-complete" ]; then 
echo "on-upload-complete">$tmplog_file;  
else
rm -rf $tmplog_file;
fi
break;
fi

done
fi

fi
IFS=$IFS_BAK
}
LoadFile;

move.sh在转移已下载的文件时会创建2层目录

实际上,应该一层目录即可,不知道为何会创建2层目录。move.sh的目录配置具体如下:
Aria2下载目录
DOWNLOAD_PATH='/downloads'
目标目录
TARGET_DIR='/downloads/completed'
日志保存路径。注释或留空为不保存。
LOG_PATH='/downloads/move.log'

aria2.conf里面的配置如下
文件的保存路径(可使用绝对路径或相对路径), 默认: 当前启动位置
dir=/downloads

当下载的文件完整路径为:/downloads/aaa,下载完成后,move.sh把 aaa目录自动转移到了completed目录后的完整路径为:/downloads/completed/aaa/aaa/文件。

看起来似乎是多了一层aaa的目录,请检查,多谢。

[Feature request] 添加 /watch 目录来自动识别 .torrent 文件或者 包含磁力链接的文本文件

添加 /watch 目录来自动识别 .torrent 文件或者 包含磁力链接/torrent link 的文本文件

我还没有想到 torrent 文件制定下载目标目录的方法 可能就直接默认位置 /downloads

磁力链接的文本则可以:

  • #开头为注释行直接跳过
  • 格式类似 magnet:?xt=urn:btih:** 仅仅包含连接的下载到默认位置
  • 格式类似 magnet:?xt=urn:btih:** /absolute/path 下载到指定绝对路径
  • 格式类似 magnet:?xt=urn:btih:** relative/path 下载到相对默认下载路径的位置 (/downloads/relative/path)
  • 添加之后移动或者删除原文件
  • (optiional) MAX_WATCH_LINK_FILE_SIZE 跳过处理过大的文件 (0 为无限制)

请教一下 dish-cache 这个选项的作用

我看到 aria2 的文档中说这个选项可以配置下载文件时,先下载到内存中的大小

那么我配置这个 =512M 是不是就是说明下载一个好几个G大小的文件的时候,最多会占用内存512M

我是这么理解的,但是实际配置的时候发现内存占用很小

因为我想减少磁盘的读写,所以不知道我是不是对这个配置的理解有误

感谢

Aria2 启动失败

Parse error in /root/.aria2/aria2.conf
Exception: [AbstractOptionHandler.cc:69] errorCode=28 We encountered a problem while processing the option '--rpc-certificate'.
-> [OptionHandlerImpl.cc:556] errorCode=1 Could not get file status: No such file or directory
Usage:
--rpc-certificate=FILE Use the certificate in FILE for RPC server.
The certificate must be in PEM format.
Use --rpc-private-key option to specify the
private key. Use --rpc-secure option to enable
encryption.

请教

我使用了你的一键完美配置aria2,体验是很棒的,但是我想使aria2下载到本地virtualvbox虚拟机centos7挂载的usb移动硬盘目录,通过设置下载目录为移动硬盘,但是只要任务开始立即就出错了,感觉是不可写入一样,因为桌面环境下是可是正常读写的,应该挂载是没问题的,然后我就想到能不能下载到centos本地然后再转移到移动硬盘,然后我网上搜到了这样一个脚本,下载完成后转移是成功的,但新问题又出现了,就是在aria2.conf最后一行加入后,你的脚本自动删除.aria2后缀文件不起作用了,.aria2留在了下载目录,下载文件转移是成功的。
请教:不能直接下载到挂载的移动硬盘和添加转移脚本后不能删除.aria2文件是哪里出了问题,或者同学能不能把自动转移功能添加进去

这个是我网上搜的
Aria2下载完成后转移文件到指定目录
2019-04-04 03:43 阅读 1,155 views 次
这个脚本的作用就是再aria2下载完文件后将文件转移到其它目录的自动处理脚本;

编辑aria2.conf文件,增加以下代码
#我添加在配置文件最后一行
on-download-complete=/root/.aria2/move.sh
move.sh脚本内容如下
#!/bin/sh

$1 is gid.

$2 is the number of files.

$3 is the path of the first file.

DOWNLOAD=/tmp # aria2的下载目录
COMPLETE=/home/down # 你要设置的转移目录路径
LOG=/root/.aria2/mvcompleted.log #脚本操作日志
SRC=$3

if [ "$2" == "0" ]; then
echo date "INFO no file to move for" "$1". >> "$LOG"
exit 0
fi

while true; do
DIR=dirname "$SRC"
if [ "$DIR" == "$DOWNLOAD" ]; then
echo date "INFO " "$3" moved as "$SRC". >> "$LOG"
mv --backup=t "$SRC" "$COMPLETE" >> "$LOG" 2>&1
exit $?
elif [ "$DIR" == "/" -o "$DIR" == "." ]; then
echo date ERROR "$3" not under "$DOWNLOAD". >> "$LOG"
exit 1
else
SRC=$DIR
fi
done

考虑使用 $HOME 代替 root

可以考虑使用 $HOME 或 ${HOME} 代替各个文件路径中的 root 。

原因:
因为服务器上有时不会使用 root 用户,同时如果在本地使用的话,也不会用到 root 用户。
而替换为环境变量 $HOME 或 ${HOME} 可以回避使用非 root 用户导致的脚本无法运行问题。

建议上传日志单独归档

大佬,你好,首先感谢你的脚本,帮助小白用上离线下载!
目前,脚本中上传和下载信息在一个日志里面,查找起来很不方便,其实我们打开日志就是想看上传日志,下载信息在ariang面板里都有不需要打开日志,所以建议能不能上传日志单独归档,这样看起来比较方便,上传进度和是否完成上传也好查!

建议增加quiet选项

已经openwrt上使用该配置, 建议新增quiet选项,否则会出现日志刷屏的情况

下载错误重试的命令应该怎么写?

下载错误后执行的命令,此项未定义则执行下载停止后执行的命令(on-download-stop)
on-download-error=

希望在下载失败之后重试一次,能够实现断点续传,省去手动按重试的麻烦,请问应该怎么写sh脚本?

多个网盘上传问题

很感谢大佬分析的教程,安装成功,上传暂时也没有问题,但本人有几个onedrive,想实现aria2下载到不同的目录,文件通过rclone上传到不同网盘。
比如:
aira2下载到/home/A,自动上传到A网盘;
aira2下载到/home/B,自动上传到B网盘;
我根据您的上传代码修改了一下,发现用不了,小白一枚,所以能不能帮忙修改下代码,谢谢

[增强]下载视频时自动生成视频拼贴预览图

大体已经写了自用中,需要FFMPEG,不过可能语句有点啰嗦。
大佬可以考虑一下加入这个功能,在快速找资源的时候还是挺有用的感觉~

FYSub Pocket_Monsters_Movie22-Mewtwo_Strikes_Back_EVOLUTION BDRip CHS 1080P AVC_AAC (31A0F14A) (1)
Liuyun VCB-Studio  Toaru Kagaku no Railgun S  02 Hi10p_1080p x264_flac

`#暂时记录视频文件路径的暂存log路径
VIDEOSAVE_PATH='/root/.aria2'


PREVIEW() {
	time=$(date +%H%M%S)
	if [[ "$2" != "1" ]]
    then
	find "${MOVIE_PATH}" -name "*.mkv" >> ${VIDEOSAVE_PATH}/videofile$time.txt
	find "${MOVIE_PATH}" -name "*.mp4" >> ${VIDEOSAVE_PATH}/videofile$time.txt
	MOVIE_NUM=`cat ${VIDEOSAVE_PATH}/videofile$time.txt | wc -l`
	declare -i i=1
	while (($i<=${MOVIE_NUM}))
	do
		MOVIE_PATH=$(sed -n ${i}p ${VIDEOSAVE_PATH}/videofile$time.txt)
        REMOVE_DOWNLOAD_PATH_MOVIE=${MOVIE_PATH#${DOWNLOAD_PATH}/}
        REMOTEPNG_PATH="${DRIVE_NAME}:${DRIVE_PATH}/${REMOVE_DOWNLOAD_PATH_MOVIE%/*}"
		ffmpeg -ss 00:00:10 -i "${MOVIE_PATH}" -n -frames 1 -vf "select=not(mod(n\,192)),scale=304:171,tile=2x2" "${MOVIE_PATH%.*}.png"
		rclone move -v "${MOVIE_PATH%.*}.png" "${REMOTEPNG_PATH}"
		let i++
	done
	    rm ${VIDEOSAVE_PATH}/videofile$time.txt
    else
    	ffmpeg -ss 00:00:10 -i "${MOVIE_PATH}" -n -frames 1 -vf "select=not(mod(n\,192)),scale=304:171,tile=2x2" "${MOVIE_PATH%.*}.png"
    	rclone move -v "${MOVIE_PATH%.*}.png" "${REMOTE_PATH}"
    fi
}




if [ "${TOP_PATH}" = "${FILE_PATH}" ] && [ $2 -eq 1 ]; then # 普通单文件下载,移动文件到设定的网盘文件夹。
    UPLOAD_PATH="${FILE_PATH}"
    REMOTE_PATH="${DRIVE_NAME}:${DRIVE_PATH}"
    MOVIE_PATH="${FILE_PATH}"
    PREVIEW
    UPLOAD
    exit 0
elif [ "${TOP_PATH}" != "${FILE_PATH}" ] && [ $2 -gt 1 ]; then # BT下载(文件夹内文件数大于1),移动整个文件夹到设定的网盘文件夹。
    UPLOAD_PATH="${TOP_PATH}"
    #REMOTE_PATH="${DRIVE_NAME}:${DRIVE_PATH}/${REMOVE_DOWNLOAD_PATH%%/*}"
    REMOTE_PATH="${DRIVE_NAME}:${DRIVE_PATH}/${TOP_PATH##*/}"
    MOVIE_PATH="${TOP_PATH}"
    CLEAN_UP
    PREVIEW
    UPLOAD
    exit 0
elif [ "${TOP_PATH}" != "${FILE_PATH}" ] && [ $2 -eq 1 ]; then # 第三方度盘工具下载(子文件夹或多级目录等情况下的单文件下载)、BT下载(文件夹内文件数等于1),移动文件到设定的网盘文件夹下的相同路径文件夹。
    UPLOAD_PATH="${FILE_PATH}"
    REMOTE_PATH="${DRIVE_NAME}:${DRIVE_PATH}/${REMOVE_DOWNLOAD_PATH%/*}"
    MOVIE_PATH="${FILE_PATH}"
    PREVIEW
    UPLOAD
    exit 0
fi`

请问如何在命令行下使用 aria2c 下载

你好,我想请教一个问题。
我在我的远程服务器上成功配置了 aria2,但我尝试在命令行上使用 aria2c 指定 url 下载发现,aria2c 一直作为守护进程开着,并没有下载我给定的 url 地址。请问没有图形化界面要如何使用配置后的 aria2 呢。

谢谢!

bt下载没有触发自动上传

测试网盘转存可以自动上传,bt下载的文件没有触发
如下
�[1;35mDownload path:�[0m/root/Download
�[1;35mFile path: �[0m/root/Download/Game.of.Thrones.S08E01.WEBRip.x264-ION10/Game.of.Thrones.S08E01.WEBRip.x264-ION10.mp4
�[1;35mUpload path: �[0m
�[1;35m.aria2 file path: �[0m
�[1;35mRemote path:�[0m

首先感谢付出,有几个问题请教一下。

  1. exclude-file=html|url|lnk|txt|jpg|png|nfo 关于排除选项机制,
    注释是:在下载完成后。需要on-download-error=
    去触发还是完成自动判断删除呢;其次,除了注释范例中的后缀名,这句命令支持自定义添加的后缀么?(比如我加了nfo)在测试的时候我下载了百度首页,index.html这个文件是会被上传,这里不知道是否单文件不进行判断,还我使用方式有问题或是代码失效。

  2. 关于rclone配置
    drive-name=gd | drive-name=gd
    drive-dir=/temp | drive-dir=/home/gdrive/temp
    左边为正确配置,以谷歌网盘为根目录;右边为挂载点。网上很多非整合脚本用的是挂载路径。建议您可用在注释中多提一嘴区别挂载点,让我等码盲不至于在此绕圈圈。

  3. 建议安装包第一层只放aria2.conf、script.conf这两个文件或者其他文件隐藏(也许是我天真了)。从使用者角度而言,upload.sh我没可能看懂,仔细阅读github才帮助我找到了script。其他调用配置文件其实根本没必要看到,方便使用者和防止误操作都是很好的。

最后再次感谢一版又一版的改进和付出。

可以配置只上传某种后缀的文件吗

你好, 磁力/种子里面可能会含有一些推广文件,其实这些文件是不需要下载的,有办法做到,下载完成后调用上传叫笨蛋时候,只上传某几种后缀的文件吗?

support exclude-file-regex

之前在 这里提出的 现在移到这里来

添加原本的正则表达式支持

exclude-file-regex & include-file-regex

主要用于自动删除类似于

image

_____padding_file_236_如果您看到此文件,请升级到BitComet(比特彗星)0.85或以上版本____

最好能支持多个正则表达式的匹配

可以添加自动上传脚本的并行数选择选项吗?

如题,我的vps的cpu是3900X虚拟的,按理说性能不差了,可是当我下载一部电视剧时,包含几十个直链,通常下载速度远大于上传速度(世纪互联单个文件上传速度限制100Mbs)。于是就出现问题了,vps本地有多少文件,脚本就会生成多少个并行的rclone任务。cpu和内存在相当长的一段时间内都几乎处于满载状态。所以我想能不能给rclone的上传并行数加一个限制。

自定义下载路径,其中一个种子完成后触发上传,会上传同下载目录的其他未完成文件

使用flexget的rss订阅推送与自定义下载路径功能。
开启下载完成rclone上传。

同个订阅里的多个种子共用一个自定义下载目录,如“/root/downloads/电视剧第一季”。
其中一个种子下载完成触发上传脚本,上传脚本会尝试把“电视剧第一季”里面的都上传上去。

我禁用磁盘缓存+禁用rclone上传失败重试应该能解决大部分。文件变动的话就会上传失败达到不影响正在下载的文件效果。

题外话:被删除的未下载完成的文件,所对应的任务在文件被删除后仍继续下载,但下载完成后文件也没回来。(正常现象

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.