diff --git a/.github/dependabot.yml b/.github/dependabot.yml
new file mode 100644
index 0000000..91ccc92
--- /dev/null
+++ b/.github/dependabot.yml
@@ -0,0 +1,12 @@
+version: 2
+updates:
+- package-ecosystem: "docker"
+ directory: "/"
+ schedule:
+ interval: "daily"
+ open-pull-requests-limit: 10
+- package-ecosystem: "github-actions"
+ directory: "/"
+ schedule:
+ interval: "weekly"
+ open-pull-requests-limit: 10
diff --git a/README.md b/README.md
index d0ef71d..31969dd 100644
--- a/README.md
+++ b/README.md
@@ -1,12 +1,32 @@
-# Get more trackers [](https://microbadger.com/images/andrewmhub/transmission-tracker-add)  
+# Get more trackers, get more seeders, get more peers transmission
+[](https://github.com/AndrewMarchukov/tracker-add/actions/workflows/docker-image.yml) [](https://microbadger.com/images/andrewmhub/transmission-tracker-add)   
+
See no peers,seeds for some torrent(s)? Add more tracker(s) for Transmission
This script automatically checks new torrents and adds trackers
+
+ FAQ:
+
+```
+Q: Requirements?
+A: curl, transmission-remote or\and transmission-cli
+
+Q: How often does this check for updates for new trackers?
+A: Only when adding new torrent in transmission and only active torrents and gap 25 seconds
+
+Q: Can I add tracker to a remote server?
+A: Yes, host=host:port or host=http(s?)://host:port/transmission/
+```
+
+
Changelog
-
+
```
+Mar 10, 2020
+avoid add trackers for private torrents
+
Mar 27, 2019
add tracker-add-auto-router.sh script for routers
now tracker file saved in tmp directory until update web source
@@ -42,9 +62,9 @@ Take image `docker pull andrewmhub/transmission-tracker-add`
```docker run --net=host -d -e HOSTPORT=localhost:9091 -e TR_AUTH=user:password --name=transmission-tracker-add andrewmhub/transmission-tracker-add:latest```
-if you need another torrent tracker list then use docker run env
+if you need another torrent tracker list then use docker run env
-`-e TORRENTLIST=https://raw.githubusercontent.com/user/trackerslist/master/mylist.txt`
+`-e TORRENTLIST=https://raw.githubusercontent.com/user/trackerslist/master/mylist.txt`
you have transmission daemon in docker then read [Docker Documentation Network](https://docs.docker.com/network/)
@@ -53,7 +73,7 @@ you have transmission daemon in docker then read [Docker Documentation Network](
Download script and make it executable:
-Edit settings for transmission set rpc-enabled, rpc-username and rpc-password
+Edit settings.json for transmission set rpc-enabled, rpc-username and rpc-password
```
wget --no-check-certificate -O /opt/bin/add-trackers-auto.sh https://raw.githubusercontent.com/AndrewMarchukov/tracker-add/master/tracker-add-auto.sh
@@ -74,7 +94,7 @@ systemctl status transmission-tracker-add.service
CGroup: /system.slice/transmission-tracker-add.service
├─19102 /bin/bash /opt/bin/add-trackers-auto.sh
└─31204 sleep 5
-
+
```
#### * Simple way (for routers)
@@ -83,7 +103,7 @@ Requirements: curl, transmission-remote
Download script and make it executable:
-Edit settings for transmission set rpc-enabled, rpc-username and rpc-password
+Edit settings for transmission set rpc-enabled, rpc-username, rpc-password and your pt trackers
```
wget --no-check-certificate -O tracker-add-auto-router.sh https://raw.githubusercontent.com/AndrewMarchukov/tracker-add/master/tracker-add-auto-router.sh
diff --git a/manual-tracker-add.sh b/manual-tracker-add.sh
index 8f23f6c..922a663 100755
--- a/manual-tracker-add.sh
+++ b/manual-tracker-add.sh
@@ -1,24 +1,29 @@
#!/bin/bash
-# Get transmission credentials
-auth=user:password
-host=localhost
+# Get transmission credentials, if set
+if [[ -n "$TRANSMISSION_USER" && -n "$TRANSMISSION_PASS" ]]; then
+ auth="${TRANSMISSION_USER:-user}:${TRANSMISSION_PASS:-password}"
+else
+ auth=
+fi
+host=${TRANSMISSION_HOST:-localhost}
+list_url=${TRACKER_URL:-https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_all.txt}
add_trackers () {
torrent_hash=$1
- for base_url in https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_all.txt ; do
+ for base_url in "${list_url}" ; do
echo -e "\e[1m\e[5m"
echo "URL for ${base_url}"
echo -e "Adding trackers for \e[91m$torrent_name..."
echo -en "\e[0m"
echo -e "\e[2m\e[92m"
-for tracker in $(curl -# "${base_url}") ; do
+for tracker in $(curl --location -# "${base_url}") ; do
echo -en "\e[0m"
echo -ne "\e[93m*\e[0m ${tracker}..."
-if transmission-remote "$host" --auth="$auth" --torrent "${torrent_hash}" -td "${tracker}" | grep -q 'success'; then
- echo -e '\e[91m failed.'
+if transmission-remote "$host" ${auth:+--auth="$auth"} --torrent "${torrent_hash}" -td "${tracker}" | grep -q 'success'; then
+ echo -e '\e[92m done.'
echo -en "\e[0m"
else
- echo -e '\e[92m done.'
+ echo -e '\e[93m already added.'
echo -en "\e[0m"
fi
done
@@ -26,10 +31,10 @@ done
}
# Get list of active torrents
-ids="$(transmission-remote "$host" --auth="$auth" --list | grep -vE 'Seeding|Stopped|Finished' | grep '^ ' | awk '{ print $1 }')"
+ids=${1:-"$(transmission-remote "$host" ${auth:+--auth="$auth"} --list | grep -vE 'Seeding|Stopped|Finished' | grep '^ ' | awk '{ print $1 }')"}
for id in $ids ; do
- hash="$(transmission-remote "$host" --auth="$auth" --torrent "$id" --info | grep '^ Hash: ' | awk '{ print $2 }')"
- torrent_name="$(transmission-remote "$host" --auth="$auth" --torrent "$id" --info | grep '^ Name: ' |cut -c 9-)"
+ hash="$(transmission-remote "$host" ${auth:+--auth="$auth"} --torrent "$id" --info | grep '^ Hash: ' | awk '{ print $2 }')"
+ torrent_name="$(transmission-remote "$host" ${auth:+--auth="$auth"} --torrent "$id" --info | grep '^ Name: ' |cut -c 9-)"
add_trackers "$hash"
done
diff --git a/tracker-add-auto.sh b/tracker-add-auto.sh
index 44c417e..2acd3d2 100644
--- a/tracker-add-auto.sh
+++ b/tracker-add-auto.sh
@@ -2,51 +2,59 @@
# Get transmission credentials and ip or dns address
auth=user:password
host=localhost
+# set trackers list space separated
+trackers=https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_all.txt
+pt_trackers=()
-while true ; do
-sleep 25
-add_trackers () {
- torrent_hash=$1
- id=$2
- trackerslist=/tmp/trackers.txt
-for base_url in https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_all.txt ; do
-if [ ! -f $trackerslist ]; then
-curl -o "$trackerslist" "${base_url}"
-fi
-Local=$(wc -c < $trackerslist)
-Remote=$(curl -sI "${base_url}" | awk '/Content-Length/ {sub("\r",""); print $2}')
-if [ "$Local" != "$Remote" ]; then
-curl -o "$trackerslist" "${base_url}"
-fi
- echo "URL for ${base_url}"
- echo "Adding trackers for $torrent_name..."
-for tracker in $(cat $trackerslist) ; do
- echo -n "${tracker}..."
-if transmission-remote "$host" --auth="$auth" --torrent "${torrent_hash}" -td "${tracker}" | grep -q 'success'; then
- echo ' failed.'
-else
- echo ' done.'
-fi
-done
-done
- sleep 3m
- rm -f "/tmp/TTAA.$id.lock"
-}
-# Get list of active torrents
+while true; do
+ sleep 25
+ add_trackers() {
+ torrent_hash=$1
+ id=$2
+ trackerslist=/tmp/trackers.txt
+ for base_url in $trackers; do
+ if [ ! -f $trackerslist ]; then
+ curl -o "$trackerslist" "${base_url}"
+ fi
+ Local=$(wc -c <$trackerslist)
+ Remote=$(curl -sI "${base_url}" | awk '/Content-Length/ {sub("\r",""); print $2}')
+ if [ "$Local" != "$Remote" ]; then
+ curl -o "$trackerslist" "${base_url}"
+ fi
+ echo "URL for ${base_url}"
+ echo "Adding trackers for $torrent_name..."
+ for tracker in $(cat $trackerslist); do
+ echo -n "${tracker}..."
+ if transmission-remote "$host" --auth="$auth" --torrent "${torrent_hash}" -td "${tracker}" | grep -q 'success'; then
+ echo ' done.'
+ else
+ echo ' already added.'
+ fi
+ done
+ done
+ sleep 3m
+ rm -f "/tmp/TTAA.$id.lock"
+ }
+ # Get list of active torrents
ids="$(transmission-remote "$host" --auth="$auth" --list | grep -vE 'Seeding|Stopped|Finished|[[:space:]]100%[[:space:]]' | grep '^ ' | awk '{ print $1 }')"
-for id in $ids ; do
- add_date="$(transmission-remote "$host" --auth="$auth" --torrent "$id" --info| grep '^ Date added: ' |cut -c 21-)"
- add_date_t="$(date -d "$add_date" "+%Y-%m-%d %H:%M")"
- dater="$(date "+%Y-%m-%d %H:%M")"
- dateo="$(date -d "1 minutes ago" "+%Y-%m-%d %H:%M")"
+ for id in $ids; do
+ add_date="$(transmission-remote "$host" --auth="$auth" --torrent "$id" --info | grep '^ Date added: ' | cut -c 21-)"
+ add_date_t="$(date -d "$add_date" "+%Y-%m-%d %H:%M")"
+ dater="$(date "+%Y-%m-%d %H:%M")"
+ dateo="$(date -d "1 minutes ago" "+%Y-%m-%d %H:%M")"
+ tracker0="$(transmission-remote "$host" --auth="$auth" -t "$id" -it | sed -n '2,2p' | awk '{print $3}' | awk -F : '{print $2}' | sed -e 's/\/\///')"
+ if [[ " ${pt_trackers[@]} " =~ " $tracker0 " ]]; then
+ echo "skip id=" "$id" "$tracker0"
+ continue
+ fi
-if [ ! -f "/tmp/TTAA.$id.lock" ]; then
-if [[ "( "$add_date_t" == "$dater" || "$add_date_t" == "$dateo" )" ]]; then
- hash="$(transmission-remote "$host" --auth="$auth" --torrent "$id" --info | grep '^ Hash: ' | awk '{ print $2 }')"
- torrent_name="$(transmission-remote "$host" --auth="$auth" --torrent "$id" --info | grep '^ Name: ' |cut -c 9-)"
- add_trackers "$hash" "$id" &
- touch "/tmp/TTAA.$id.lock"
-fi
-fi
-done
+ if [ ! -f "/tmp/TTAA.$id.lock" ]; then
+ if [[ "( "$add_date_t" == "$dater" || "$add_date_t" == "$dateo" )" ]]; then
+ hash="$(transmission-remote "$host" --auth="$auth" --torrent "$id" --info | grep '^ Hash: ' | awk '{ print $2 }')"
+ torrent_name="$(transmission-remote "$host" --auth="$auth" --torrent "$id" --info | grep '^ Name: ' | cut -c 9-)"
+ add_trackers "$hash" "$id" &
+ touch "/tmp/TTAA.$id.lock"
+ fi
+ fi
+ done
done