Aria2 bt-tracker自动更新脚本

这个帖子里@LUTICLIU分享了他的脚本,但是可能很多人都跑不起来,我参考他的脚本重新写了两个,分别是批处理和powershell脚本,分享给大家,并感谢@LUTICLIU。

batch:

@echo off

:: aria2.conf位置、要下载的trackers文件,在这里修改
set CONF_FILE=%USERPROFILE%\.aria2\aria2.conf
set TRACKER_FILE=trackers_best.txt
set DOWNLOAD_LINK=https://raw.githubusercontent.com/ngosang/trackerslist/master/%TRACKER_FILE%

aria2c --dir=%TEMP% --allow-overwrite=true "%DOWNLOAD_LINK%"

sed.exe -i ":a;N;s/\n/ /; ta;" %TEMP%\%TRACKER_FILE%
sed.exe -i "1s/^/bt-tracker=/g; s/  /,/g; s/ $//;" %TEMP%\%TRACKER_FILE%
sed.exe -i "/^bt-tracker=/d" %CONF_FILE%

type %TEMP%\%TRACKER_FILE% >> %CONF_FILE%

del .\sed*
del %TEMP%\trackers*

powershell:

# aria2.conf位置、要下载的trackers文件,在这里修改
$ConfigFile = "$HOME\.aria2\aria2.conf"
$TrackersFile = "trackers_best.txt"
$DownloadLink = "https://raw.githubusercontent.com/ngosang/trackerslist/master/$TrackersFile"

Invoke-WebRequest -Uri $DownloadLink -OutFile $env:TEMP\$TrackersFile

$TrackersStream = (Get-Content $env:TEMP\$TrackersFile -Raw).Replace("`n`n", ",").Insert(0, "bt-tracker=")
$TrackersStream = $TrackersStream.Substring(0, $TrackersStream.Length - 1)

$ExcludeLineNum=(Select-String -Path $ConfigFile -SimpleMatch "bt-tracker=").LineNumber
$ConfigStream = Get-Content $ConfigFile
$ConfigStream[$ExcludeLineNum-1]=$TrackersStream
Set-Content -Path $ConfigFile -Value $ConfigStream -Encoding Default

Remove-Item -Path $env:TEMP\trackers*

注意事项:

  1. 脚本假设你的aria2.conf文件在默认位置,不是的话自行修改,使用前最好先备份。
  2. 第一个脚本需要你装好aria2c和sed并添加到path,由于不明原因sed -i会在当前目录产生一些sed???文件,所以最后加了一行del sed*,所以不要把这个脚本放到sed.exe所在的位置。(或者自己你改一下工作目录)
  3. powershell脚本理论上只要powershell版本在3以上都能运行,不需要aria2c和sed,不过powershell是我现查现写的,可能有坑。

EDIT:

  • sed对中文支持不好,有奇怪错误的的话试试把aria2.conf里的中文字符删掉
2 个赞

哈哈哈哈哈,我昨天还在手动添加…

我用motrix, 它的conf里# bt-tracker数据就来自

1 个赞

要不再写一个 OpenWrt 版 :sweat_smile:

感谢分享,当时想要这个了好久

这个powershell脚本运行以后会把aria2.conf里的中文的一部分变成乱码,是什么原因啊?

自己解决了,这几行改成这样就行了,编码问题
$ConfigStream = Get-Content $ConfigFile -Encoding UTF8
$ConfigStream[$ExcludeLineNum-1]=$TrackersStream
Set-Content -Path $ConfigFile -Value $ConfigStream -Encoding UTF8

只有我一个人这个脚本跑不起来么?

这个我写不来,而且linux下的脚本网上有很多吧 :sweat_smile:

不客气,希望能帮到你