记录我的一些生活写照、无聊的牢骚、内心世界的活动 注册 | 登陆

群晖 Download Station BT 种子下载 自动添加trackerlist

群晖 Download Station BT 种子下载 自动添加trackerlist

群晖的DownloadStation(简称DS)不支持订阅trackerlist的功能,trackerlist可以让DS去连接更多的种子服务器,让下载速度加快很多;虽然DS本身不支持订阅trackerlist,但是可以手动向每个下载的任务添加tracker列表。选择正在bt下载的任务,点击下面详细信息中的Tracker服务器,点加入,把复制的trackerlist列表粘贴进去就搞定了。
如果种子任务很多,手动添加非常麻烦,可以使用脚本定期自动添加trackerlist,比如1分钟执行一次,相当于是实时添加trackerlist,省去手动添加的麻烦。
全网热门 BitTorrent Tracker 列表:
完整列表:https://cdn.jsdelivr.net/gh/ngosang/trackerslist@master/trackers_all.txt
完整列表:https://cf.trackerslist.com/all.txt
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代码
  1. #!/bin/bash  
  2.   
  3. DISABLE_COLOR=false  
  4.   
  5. BLACK="\e[30m"  
  6. RED="\e[31m"  
  7. GREEN="\e[32m"  
  8. YELLOW="\e[33m"  
  9. BLUE="\e[34m"  
  10. MAGENTA="\e[35m"  
  11. CYAN="\e[36m"  
  12. LIGHT_GRAY="\e[37m"  
  13. DARK_GRAY="\e[90m"  
  14. LIGHT_RED="\e[91m"  
  15. LIGHT_GREEN="\e[92m"  
  16. LIGHT_YELLOW="\e[93m"  
  17. LIGHT_BLUE="\e[94m"  
  18. LIGHT_MAGENTA="\e[95m"  
  19. LIGHT_CYAN="\e[96m"  
  20. WHITE="\e[97m"  
  21. END="\e[0m"  
  22.   
  23. if [ $DISABLE_COLOR == true ]; then  
  24.   BLACK=""  
  25.   RED=""  
  26.   GREEN=""  
  27.   YELLOW=""  
  28.   BLUE=""  
  29.   MAGENTA=""  
  30.   CYAN=""  
  31.   LIGHT_GRAY=""  
  32.   DARK_GRAY=""  
  33.   LIGHT_RED=""  
  34.   LIGHT_GREEN=""  
  35.   LIGHT_YELLOW=""  
  36.   LIGHT_BLUE=""  
  37.   LIGHT_MAGENTA=""  
  38.   LIGHT_CYAN=""  
  39.   WHITE=""  
  40.   END=""  
  41. fi  
  42.   
  43.   
  44. # 群晖DS 任务状态定义  
  45. TASK_STATUS_WAITING=1  
  46. TASK_STATUS_DOWNLOADING=2  
  47. TASK_STATUS_PAUSED=3  
  48. TASK_STATUS_FINISHING=4  
  49. TASK_STATUS_FINISHED=5  
  50. TASK_STATUS_HASH_CHECKING=6  
  51. TASK_STATUS_SEEDING=7  
  52. TASK_STATUS_FILEHOSTING_WAITING=8  
  53. TASK_STATUS_EXTRACTING=9  
  54. TASK_STATUS_ERROR=10  
  55. TASK_STATUS_BROKEN_LINK=11  
  56. TASK_STATUS_DESTINATION_NOT_EXIST=12  
  57. TASK_STATUS_DESTINATION_DENIED=13  
  58. TASK_STATUS_DISK_FULL=14  
  59. TASK_STATUS_QUOTA_REACHED=15  
  60. TASK_STATUS_TIMEOUT=16  
  61. TASK_STATUS_EXCEED_MAX_FILE_SYSTEM_SIZE=17  
  62. TASK_STATUS_EXCEED_MAX_DESTINATION_SIZE=18  
  63. TASK_STATUS_EXCEED_MAX_TEMP_SIZE=19  
  64. TASK_STATUS_ENCRYPTED_NAME_TOO_LONG=20  
  65. TASK_STATUS_NAME_TOO_LONG=21  
  66. TASK_STATUS_TORRENT_DUPLICATE=22  
  67. TASK_STATUS_FILE_NOT_EXIST=23  
  68. TASK_STATUS_REQUIRED_PREMIUM_ACCOUNT=24  
  69. TASK_STATUS_NOT_SUPPORTED_TYPE=25  
  70. TASK_STATUS_TRY_IT_LATER=26  
  71. TASK_STATUS_TASK_ENCRYPTION=27  
  72. TASK_STATUS_MISSING_PYTHON=28  
  73. TASK_STATUS_PRIVATE_VIDEO=29  
  74. TASK_STATUS_FTP_ENCRYPTION_NOT_SUPPORTED_TYPE=30  
  75. TASK_STATUS_EXTRACT_FAILED=31  
  76. TASK_STATUS_EXTRACT_FAILED_WRONG_PASSWORD=32  
  77. TASK_STATUS_EXTRACT_FAILED_INVALID_ARCHIVE=33  
  78. TASK_STATUS_EXTRACT_FAILED_QUOTA_REACHED=34  
  79. TASK_STATUS_EXTRACT_FAILED_DISK_FULL=35  
  80. TASK_STATUS_UNKNOWN=36  
  81.   
  82. trackerlistUrl="https://cdn.jsdelivr.net/gh/ngosang/trackerslist@master/trackers_all.txt"  
  83. trackerlistUrl="https://cf.trackerslist.com/all.txt"  
  84.   
  85. trackerList=$(curl -f $trackerlistUrl 2>/dev/null)  
  86. if [[ $? != 0 ]]; then  
  87.   echo "Tracker list url unavailable please check url: $trackerlistUrl"  
  88.   exit 1  
  89. fi  
  90. trackerList=$(echo '"'$trackerList'"' | jq -c 'split(" ")')  
  91. trackerListLength=$(jq 'length' <<<$trackerList)  
  92.   
  93. if [[ $trackerListLength == 0 ]]; then  
  94.   echo "No found tracker please check tracker list: $trackerlistUrl"  
  95.   exit 1  
  96. fi  
  97.   
  98. pakcageList=$(synowebapi --exec api=SYNO.Core.Package method=list version=2 additional='["status"]' 2>/dev/null | jq -c '.data.packages | map(select(.id == "DownloadStation"))')  
  99.   
  100. isRunning=$(jq -r 'map(select(.id == "DownloadStation") | .additional.status) | .[]' <<<$pakcageList)  
  101.   
  102. if [ $isRunning != "running" ]; then  
  103.   echo -e "Download Station$RED not running$END exit"  
  104.   exit  
  105. fi  
  106.   
  107. echo "Download Station is running go next step"  
  108.   
  109. downloadList=$(synowebapi --exec api=SYNO.DownloadStation2.Task method=list version=2 limit=-1 "status=[$TASK_STATUS_DOWNLOADING]" 2>/dev/null | jq -c '.data.task | map(select(.type == "bt"))')  
  110. downloadListCount=$(jq 'length' <<<$downloadList)  
  111.   
  112. if [[ $downloadListCount -eq 0 ]]; then  
  113.   echo "Not found bt download task"  
  114.   exit  
  115. fi  
  116.   
  117. echo "Download tasks count: $downloadListCount"  
  118.   
  119. for idx in $(seq 0 $((downloadListCount - 1))); do  
  120.   echo "----------------Task [$idx]------------------"  
  121.   task=$(jq -c ".[$idx]" <<<$downloadList)  
  122.   taskId=$(jq -r .id <<<$task)  
  123.   taskName=$(jq -r .title <<<$task)  
  124.   taskTrackerList=$(synowebapi --exec api=SYNO.DownloadStation2.Task.BT.Tracker method=list version=2 task_id="$taskId" limit=-1 2>/dev/null | jq -c '.')  
  125.   taskTrackerListMap=$(jq -c '.data.items | reduce .[] as $i ({}; .[$i.url] = 1)' 2>/dev/null <<<$taskTrackerList)  
  126.   if [[ $? != 0 ]]; then  
  127.     echo "Task: 【$taskName】 is busy skip task; $taskTrackerList"  
  128.     continue  
  129.   fi  
  130.   taskTrackerListCount=$(jq '.data.total' <<<$taskTrackerList)  
  131.   echo "Task:【$taskName】 has tracker count: $taskTrackerListCount"  
  132.   needAddedTrackerList=$(jq -c --argjson hashMap $taskTrackerListMap 'map(select(. | in($hashMap) == false))' <<<$trackerList)  
  133.   needAddedTrackerListLength=$(jq 'length' <<<$needAddedTrackerList)  
  134.   
  135.   if [[ $needAddedTrackerListLength == 0 ]]; then  
  136.     echo "The task does not need to add a new tracker"  
  137.     continue  
  138.   fi  
  139.   
  140.   echo "A list of trackers that need to be added to the task: $needAddedTrackerList , count: $needAddedTrackerListLength"  
  141.   
  142.   result=$(synowebapi --exec api=SYNO.DownloadStation2.Task.BT.Tracker method=add version=2 task_id=$taskId tracker=$needAddedTrackerList 2>/dev/null)  
  143.   
  144.   if [[ $(jq '.success' <<<$result) == true ]]; then  
  145.     echo "Task: [$taskName] tracker list add success"  
  146.   else  
  147.     echo "Task: [$taskName] tracker list add fail"  
  148.   fi  
  149. done  
  150.   
  151. echo "Automatically add tracker script to complete"  
保存后运行,就可以看到效果,此脚本实际上是利用计划任务,每分钟执行一次,给bt任务更新一次tracklist列表,实现了全自动更新的目的。
经实测,群晖的 Download Station 下载速度和稳定性是最高的,比qbittorrent和Transmission稳定性高得多,不会崩溃,速度快切稳定,如果需要pt保种可以调整参数,或者使用Transmission,如果单纯下载还是 Download Station 速度快稳定性高,支持几乎所有的下载协议。
参考1  参考2

« 上一篇 | 下一篇 »

发表评论

评论内容 (必填):