<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/ DTD/wml_1.1.xml">

<wml>
<head>
<meta http-equiv="cache-control" content="max-age=180,private" />
</head>
<card title="群晖 Download Station BT 种子下载 自动添加trackerlist">
<p>
作者:<a href="index.php?action=showuser&amp;userid=1&amp;hash=">admin</a><br />时间:2023-11-21 15:12<br />分类:<a href="index.php?action=list&amp;cid=3&amp;hash=">电脑技术</a><br />内容:
群晖 Download Station BT 种子下载 自动添加trackerlist




群晖的DownloadStation（简称DS）不支持订阅trackerlist的功能，trackerlist可以让DS去连接更多的种子服务器，让下载速度加快很多；虽然DS本身不支持订阅trackerlist，但是可以手动向每个下载的任务添加tracker列表。选择正在bt下载的任务，点击下面详细信息中的Tracker服务器，点加入，把复制的trackerlist列表粘贴进去就搞定了。


如果种子任务很多，手动添加非常麻烦，可以使用脚本定期自动添加trackerlist，比如1分钟执行一次，相当于是实时添加trackerlist，省去手动添加的麻烦。






全网热门 BitTorrent Tracker 列表：


ngosang：https://github.com/ngosang/trackerslist


完整列表：https://cdn.jsdelivr.net/gh/ngosang/trackerslist@master/trackers_all.txt


XIU2：https://github.com/XIU2/TrackersListCollection


完整列表：https://cf.trackerslist.com/all.txt




TrackersList(采集):https://github.com/phishinqi/TrackersList


https://cdn.jsdelivr.net/gh/phishinqi/TrackersList@main/main/output_trackers.txt


animeTrackerList(采集，多平台):https://github.com/DeSireFire/animeTrackerList


https://cdn.jsdelivr.net/gh/DeSireFire/animeTrackerList/AT_all.txt




以上仅列举国内可以下载的网站列表，其他列表可以去GitHub查看。


群晖 Download Station BT 自动添加trackerlist 详细教程：


群晖web控制台-控制面板-系统-任务计划-新增-计划的任务-用户定义的脚本


常规-任务名称（trackerlist）用户账号（root）已启动（勾选）


计划-在以下天中运行（每天）首次时间（00:00）运行频率（每分钟）最后运行的时间（23:59）


任务设置（粘贴以下脚本）






XML/HTML代码


    #!/bin/bash  

      

    DISABLE_COLOR=false  

      

    BLACK=&quot;\e[30m&quot;  

    RED=&quot;\e[31m&quot;  

    GREEN=&quot;\e[32m&quot;  

    YELLOW=&quot;\e[33m&quot;  

    BLUE=&quot;\e[34m&quot;  

    MAGENTA=&quot;\e[35m&quot;  

    CYAN=&quot;\e[36m&quot;  

    LIGHT_GRAY=&quot;\e[37m&quot;  

    DARK_GRAY=&quot;\e[90m&quot;  

    LIGHT_RED=&quot;\e[91m&quot;  

    LIGHT_GREEN=&quot;\e[92m&quot;  

    LIGHT_YELLOW=&quot;\e[93m&quot;  

    LIGHT_BLUE=&quot;\e[94m&quot;  

    LIGHT_MAGENTA=&quot;\e[95m&quot;  

    LIGHT_CYAN=&quot;\e[96m&quot;  

    WHITE=&quot;\e[97m&quot;  

    END=&quot;\e[0m&quot;  

      

    if [ $DISABLE_COLOR == true ]; then  

      BLACK=&quot;&quot;  

      RED=&quot;&quot;  

      GREEN=&quot;&quot;  

      YELLOW=&quot;&quot;  

      BLUE=&quot;&quot;  

      MAGENTA=&quot;&quot;  

      CYAN=&quot;&quot;  

      LIGHT_GRAY=&quot;&quot;  

      DARK_GRAY=&quot;&quot;  

      LIGHT_RED=&quot;&quot;  

      LIGHT_GREEN=&quot;&quot;  

      LIGHT_YELLOW=&quot;&quot;  

      LIGHT_BLUE=&quot;&quot;  

      LIGHT_MAGENTA=&quot;&quot;  

      LIGHT_CYAN=&quot;&quot;  

      WHITE=&quot;&quot;  

      END=&quot;&quot;  

    fi  

      

      

    # 群晖DS 任务状态定义  

    TASK_STATUS_WAITING=1  

    TASK_STATUS_DOWNLOADING=2  

    TASK_STATUS_PAUSED=3  

    TASK_STATUS_FINISHING=4  

    TASK_STATUS_FINISHED=5  

    TASK_STATUS_HASH_CHECKING=6  

    TASK_STATUS_SEEDING=7  

    TASK_STATUS_FILEHOSTING_WAITING=8  

    TASK_STATUS_EXTRACTING=9  

    TASK_STATUS_ERROR=10  

    TASK_STATUS_BROKEN_LINK=11  

    TASK_STATUS_DESTINATION_NOT_EXIST=12  

    TASK_STATUS_DESTINATION_DENIED=13  

    TASK_STATUS_DISK_FULL=14  

    TASK_STATUS_QUOTA_REACHED=15  

    TASK_STATUS_TIMEOUT=16  

    TASK_STATUS_EXCEED_MAX_FILE_SYSTEM_SIZE=17  

    TASK_STATUS_EXCEED_MAX_DESTINATION_SIZE=18  

    TASK_STATUS_EXCEED_MAX_TEMP_SIZE=19  

    TASK_STATUS_ENCRYPTED_NAME_TOO_LONG=20  

    TASK_STATUS_NAME_TOO_LONG=21  

    TASK_STATUS_TORRENT_DUPLICATE=22  

    TASK_STATUS_FILE_NOT_EXIST=23  

    TASK_STATUS_REQUIRED_PREMIUM_ACCOUNT=24  

    TASK_STATUS_NOT_SUPPORTED_TYPE=25  

    TASK_STATUS_TRY_IT_LATER=26  

    TASK_STATUS_TASK_ENCRYPTION=27  

    TASK_STATUS_MISSING_PYTHON=28  

    TASK_STATUS_PRIVATE_VIDEO=29  

    TASK_STATUS_FTP_ENCRYPTION_NOT_SUPPORTED_TYPE=30  

    TASK_STATUS_EXTRACT_FAILED=31  

    TASK_STATUS_EXTRACT_FAILED_WRONG_PASSWORD=32  

    TASK_STATUS_EXTRACT_FAILED_INVALID_ARCHIVE=33  

    TASK_STATUS_EXTRACT_FAILED_QUOTA_REACHED=34  

    TASK_STATUS_EXTRACT_FAILED_DISK_FULL=35  

    TASK_STATUS_UNKNOWN=36  

      

    trackerlistUrl=&quot;https://cdn.jsdelivr.net/gh/ngosang/trackerslist@master/trackers_all.txt&quot;  

    trackerlistUrl=&quot;https://cf.trackerslist.com/all.txt&quot;  

      

    trackerList=$(curl -f $trackerlistUrl 2&gt;/dev/null)  

    if [[ $? != 0 ]]; then  

      echo &quot;Tracker list url unavailable please check url: $trackerlistUrl&quot;  

      exit 1  

    fi  

    trackerList=$(echo '&quot;'$trackerList'&quot;' | jq -c 'split(&quot; &quot;)')  

    trackerListLength=$(jq 'length' &lt;&lt;&lt;$trackerList)  

      

    if [[ $trackerListLength == 0 ]]; then  

      echo &quot;No found tracker please check tracker list: $trackerlistUrl&quot;  

      exit 1  

    fi  

      

    pakcageList=$(synowebapi --exec api=SYNO.Core.Package method=list version=2 additional='[&quot;status&quot;]' 2&gt;/dev/null | jq -c '.data.packages | map(select(.id == &quot;DownloadStation&quot;))')  

      

    isRunning=$(jq -r 'map(select(.id == &quot;DownloadStation&quot;) | .additional.status) | .[]' &lt;&lt;&lt;$pakcageList)  

      

    if [ $isRunning != &quot;running&quot; ]; then  

      echo -e &quot;Download Station$RED not running$END exit&quot;  

      exit  

    fi  

      

    echo &quot;Download Station is running go next step&quot;  

      

    downloadList=$(synowebapi --exec api=SYNO.DownloadStation2.Task method=list version=2 limit=-1 &quot;status=[$TASK_STATUS_DOWNLOADING]&quot; 2&gt;/dev/null | jq -c '.data.task | map(select(.type == &quot;bt&quot;))')  

    downloadListCount=$(jq 'length' &lt;&lt;&lt;$downloadList)  

      

    if [[ $downloadListCount -eq 0 ]]; then  

      echo &quot;Not found bt download task&quot;  

      exit  

    fi  

      

    echo &quot;Download tasks count: $downloadListCount&quot;  

      

    for idx in $(seq 0 $((downloadListCount - 1))); do  

      echo &quot;----------------Task [$idx]------------------&quot;  

      task=$(jq -c &quot;.[$idx]&quot; &lt;&lt;&lt;$downloadList)  

      taskId=$(jq -r .id &lt;&lt;&lt;$task)  

      taskName=$(jq -r .title &lt;&lt;&lt;$task)  

      taskTrackerList=$(synowebapi --exec api=SYNO.DownloadStation2.Task.BT.Tracker method=list version=2 task_id=&quot;$taskId&quot; limit=-1 2&gt;/dev/null | jq -c '.')  

      taskTrackerListMap=$(jq -c '.data.items | reduce .[] as $i ({}; .[$i.url] = 1)' 2&gt;/dev/null &lt;&lt;&lt;$taskTrackerList)  

      if [[ $? != 0 ]]; then  

        echo &quot;Task: 【$taskName】 is busy skip task; $taskTrackerList&quot;  

        continue  

      fi  

      taskTrackerListCount=$(jq '.data.total' &lt;&lt;&lt;$taskTrackerList)  

      echo &quot;Task:【$taskName】 has tracker count: $taskTrackerListCount&quot;  

      needAddedTrackerList=$(jq -c --argjson hashMap $taskTrackerListMap 'map(select(. | in($hashMap) == false))' &lt;&lt;&lt;$trackerList)  

      needAddedTrackerListLength=$(jq 'length' &lt;&lt;&lt;$needAddedTrackerList)  

      

      if [[ $needAddedTrackerListLength == 0 ]]; then  

        echo &quot;The task does not need to add a new tracker&quot;  

        continue  

      fi  

      

      echo &quot;A list of trackers that need to be added to the task: $needAddedTrackerList , count: $needAddedTrackerListLength&quot;  

      

      result=$(synowebapi --exec api=SYNO.DownloadStation2.Task.BT.Tracker method=add version=2 task_id=$taskId tracker=$needAddedTrackerList 2&gt;/dev/null)  

      

      if [[ $(jq '.success' &lt;&lt;&lt;$result) == true ]]; then  

        echo &quot;Task: [$taskName] tracker list add success&quot;  

      else  

        echo &quot;Task: [$taskName] tracker list add fail&quot;  

      fi  

    done  

      

    echo &quot;Automatically add tracker script to complete&quot;  




保存后运行，就可以看到效果，此脚本实际上是利用计划任务，每分钟执行一次，给bt任务更新一次tracklist列表，实现了全自动更新的目的。


经实测，群晖的 Download Station 下载速度和稳定性是最高的，比qbittorrent和Transmission稳定性高得多，不会崩溃，速度快切稳定，如果需要pt保种可以调整参数，或者使用Transmission，如果单纯下载还是 Download Station 速度快稳定性高，支持几乎所有的下载协议。


参考1  参考2
</p><p>
<a href="index.php?action=login&amp;hash=">立即登陆发表评论</a><br />
</p>
<p><a href="index.php?action=list&amp;hash=">返回日志列表</a><br /><a href="index.php?action=index&amp;hash=">返回主页</a></p>
</card>
</wml>
