Skip to content

Commit a995b1b

Browse files
committed
qbittorrent: increase the script running speed.
1 parent 6dcb6e0 commit a995b1b

1 file changed

Lines changed: 20 additions & 43 deletions

File tree

qbittorrent/s6-overlay/usr/local/bin/tracker-error

Lines changed: 20 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -2,50 +2,27 @@
22

33
tag_name="TrackerError"
44

5-
## 传参$1:hash
6-
find_error_msg() {
7-
local hash="$1"
8-
9-
# 获取tracker清单
10-
local trackers=$($cmd_curl "${api_url_base}/torrents/trackers?hash=${hash}")
11-
local trackers_url=( $(echo $trackers | jq -r .[].url | sed "s# #_#g" ) )
12-
local trackers_status=( $(echo $trackers | jq .[].status) )
13-
local trackers_msg=( $(echo $trackers | jq -r .[].msg | sed "s| |_|g") )
14-
15-
# 检查tracker消息
16-
local add_tag_mark=yes
17-
local n
18-
for ((n = $((${#trackers_url[*]} - 1)); n >= 0; n--)); do
19-
if [[ ${trackers_url[n]} == *http* ]] && [[ ${trackers_status[n]} -ne 4 || ${trackers_msg[n]} == expected_digit_in_bencoded_string ]]; then
20-
add_tag_mark=no
21-
break
22-
fi
23-
done
24-
[[ $add_tag_mark == yes ]] && add_hashes="${add_hashes}|${hash}"
25-
}
26-
275
## 处理所有torrent
28-
main() {
29-
. /usr/local/bin/share
30-
hashes=( $($cmd_curl ${api_url_base}/torrents/info | jq -r .[].hash) )
31-
tracker_error_count=0
32-
add_hashes=""
33-
$cmd_curl_post -d "hashes=all&tags=${tag_name}" ${api_url_base}/torrents/removeTags
34-
for hash in "${hashes[@]}"; do
35-
find_error_msg "$hash"
36-
done
6+
. /usr/local/bin/share
7+
hashes=( $($cmd_curl ${api_url_base}/torrents/info | jq -r .[].hash) )
8+
tracker_error_count=0
9+
add_hashes=""
10+
$cmd_curl_post -d "hashes=all&tags=${tag_name}" ${api_url_base}/torrents/removeTags
11+
for hash in "${hashes[@]}"; do
12+
if [[ -z $($cmd_curl "${api_url_base}/torrents/trackers?hash=${hash}" | jq '.[] | select(.tier >= 0)' | jq -r '.status | select(. <= 3)') ]]; then
13+
add_hashes="${add_hashes}|${hash}"
14+
fi
15+
done
3716

38-
## 调整标签
39-
if [[ -n $add_hashes ]]; then
40-
echo "hashes=${add_hashes/|/}&tags=${tag_name}" | $cmd_curl_post -d @- ${api_url_base}/torrents/addTags
41-
42-
## 发送通知
43-
TRACKER_ERROR_COUNT_MIN=${TRACKER_ERROR_COUNT_MIN:-3}
44-
tracker_error_count=$(echo ${add_hashes/|/} | awk -F "|" '{print NF}')
45-
if [[ $tracker_error_count -ge $TRACKER_ERROR_COUNT_MIN ]]; then
46-
notify "tracker出错数量超过阈值" "主机:${HOSTNAME}\n时间:$(date +'%Y-%m-%d %H:%M:%S')\n注意:当前有${tracker_error_count}个种子tracker出错,建议检查一下\n说明:您收到本通知是因为您设置了通知阈值TRACKER_ERROR_COUNT_MIN=${TRACKER_ERROR_COUNT_MIN}(默认值:3)"
47-
fi
17+
## 调整标签
18+
if [[ -n $add_hashes ]]; then
19+
echo "hashes=${add_hashes/|/}&tags=${tag_name}" | $cmd_curl_post -d @- ${api_url_base}/torrents/addTags
20+
21+
## 发送通知
22+
TRACKER_ERROR_COUNT_MIN=${TRACKER_ERROR_COUNT_MIN:-3}
23+
tracker_error_count=$(echo ${add_hashes/|/} | awk -F "|" '{print NF}')
24+
if [[ $tracker_error_count -ge $TRACKER_ERROR_COUNT_MIN ]]; then
25+
notify "tracker出错数量超过阈值" "主机:${HOSTNAME}\n时间:$(date +'%Y-%m-%d %H:%M:%S')\n注意:当前有${tracker_error_count}个种子tracker出错,建议检查一下\n说明:您收到本通知是因为您设置了通知阈值TRACKER_ERROR_COUNT_MIN=${TRACKER_ERROR_COUNT_MIN}(默认值:3)"
4826
fi
49-
}
27+
fi
5028

51-
main "$@"

0 commit comments

Comments
 (0)