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 23ab4fa..31969dd 100644
--- a/README.md
+++ b/README.md
@@ -1,12 +1,149 @@
-# 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 for some torrent? Add more trackers from torrentz.eu.
+See no peers,seeds for some torrent(s)? Add more tracker(s) for Transmission
-Works with Transmission only.
+This script automatically checks new torrents and adds trackers
+
+ FAQ:
-## Usage
+```
+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
+new exception in "Get list of active torrents", helps to avoid fully loaded torrents
+cosmetic fixes
+
+Feb 22, 2019
+add feature connection to host
+
+May 27, 2018
+wait new torrents 25 sec
+
+May 26, 2018
+Change systemd policy
+CPUSchedulingPolicy=idle
+Nice=19
+```
+
+
+#### Choose your destiny:
+
+[Docker way](https://github.com/AndrewMarchukov/tracker-add#-docker-way)
+
+[Systemd way](https://github.com/AndrewMarchukov/tracker-add#-systemd-way)
+
+[Simple way (for routers)](https://github.com/AndrewMarchukov/tracker-add#-simple-way-for-routers)
+
+## Installation and usage
+
+#### * Docker way
+
+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
+
+`-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/)
+
+
+#### * Systemd way
+
+Download script and make it executable:
+
+Edit settings.json for transmission set rpc-enabled, rpc-username and rpc-password
```
-./tracker-add.sh ba5e29dccfddaf219215b46b80d24adc53269096
+wget --no-check-certificate -O /opt/bin/add-trackers-auto.sh https://raw.githubusercontent.com/AndrewMarchukov/tracker-add/master/tracker-add-auto.sh
+wget --no-check-certificate -O /etc/systemd/system/transmission-tracker-add.service https://raw.githubusercontent.com/AndrewMarchukov/tracker-add/master/transmission-tracker-add.service
+chmod +x /opt/bin/add-trackers-auto.sh
```
+Set user and password in add-trackers-auto.sh
+```
+systemctl daemon-reload
+systemctl enable transmission-tracker-add.service
+systemctl start transmission-tracker-add.service
+
+systemctl status transmission-tracker-add.service
+● transmission-tracker-add.service - transmission tracker add
+ Loaded: loaded (/etc/systemd/system/transmission-tracker-add.service; enabled; vendor preset: enabled)
+ Active: active (running) since; 0 days ago
+ Main PID: 19102 (add_trackers_au)
+ CGroup: /system.slice/transmission-tracker-add.service
+ ├─19102 /bin/bash /opt/bin/add-trackers-auto.sh
+ └─31204 sleep 5
+
+```
+
+#### * Simple way (for routers)
+
+Requirements: curl, transmission-remote
+
+Download script and make it executable:
+
+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
+chmod +x tracker-add-auto-router.sh
+```
+Set user and password in tracker-add-auto-router.sh
+
+```
+./tracker-add-auto-router.sh &
+```
+or
+```
+nohup ./tracker-add-auto-router.sh /var/log/tracker-add-auto.log 2>&1 &
+```
+or
+```
+screen -d -m -S tracker-add-auto path/to/tracker-add-auto-router.sh
+```
+
+
+
+### Extra manual script if you need
+Set user and password in manual-tracker-add.sh
+
+Run manual script to add some more trackers for active torrents:
+
+```
+/opt/bin # ./manual-tracker-add.sh
+URL for https://hastebin.com/raw/bererufibu
+Adding trackers for Film.HDRip.AVC.mkv...
+
+######################################################################## 100,0%
+* http://tracker.dutchtracking.nl:80/announce... failed.
+* http://tracker.edoardocolombo.eu:6969/announce... failed.
+* http://tracker.ex.ua:80/announce... failed.
+* http://tracker.kicks-ass.net:80/announce... failed.
+* http://tracker.mg64.net:6881/announce... done.
+* http://tracker.tfile.me/announce... failed.
+* http://tracker1.wasabii.com.tw:6969/announce... done.
+* http://tracker2.itzmx.com:6961/announce... done.
+```
+
+Don't be confused with `failed` message. In most cases, it means tracker(s) already added and/or exists in current torrent.
diff --git a/manual-tracker-add.sh b/manual-tracker-add.sh
new file mode 100755
index 0000000..922a663
--- /dev/null
+++ b/manual-tracker-add.sh
@@ -0,0 +1,40 @@
+#!/bin/bash
+# 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 "${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 --location -# "${base_url}") ; do
+ echo -en "\e[0m"
+ echo -ne "\e[93m*\e[0m ${tracker}..."
+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[93m already added.'
+ echo -en "\e[0m"
+fi
+ done
+done
+}
+
+# Get list of active torrents
+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="$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-router.sh b/tracker-add-auto-router.sh
new file mode 100644
index 0000000..2c1875d
--- /dev/null
+++ b/tracker-add-auto-router.sh
@@ -0,0 +1,52 @@
+#!/bin/sh
+# Get transmission credentials and ip or dns address
+auth=user:password
+host=localhost
+
+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 "${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
+ 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 '%s' -d "$(( `date +%s`+1*60 ))" "+%Y-%m-%d %H:%M")"
+
+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
diff --git a/tracker-add-auto.sh b/tracker-add-auto.sh
new file mode 100644
index 0000000..2acd3d2
--- /dev/null
+++ b/tracker-add-auto.sh
@@ -0,0 +1,60 @@
+#!/bin/bash
+# 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 $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")"
+ 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
+done
diff --git a/tracker-add.sh b/tracker-add.sh
deleted file mode 100755
index c41c3cb..0000000
--- a/tracker-add.sh
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/bash
-
-torrent_hash=$1
-base_url='https://torrentz2.eu'
-pattern='announcelist_[0-9]+'
-
-if [ -z "$1" ] ; then
- echo 'Usage: ./tracker-add.sh '
- exit 1
-fi
-
-announce_list=`curl -s ${base_url}/${torrent_hash} | grep -Eo "${pattern}"`
-
-if [ -z "$announce_list" ] ; then
- echo 'No additional trackers found, sorry.'
- exit 1
-fi
-
-for tracker in $(curl -s ${base_url}/${announce_list})
-do
- echo "Adding ${tracker} to torrent ${torrent_hash}"
- transmission-remote -t ${torrent_hash} -td ${tracker}
-done
diff --git a/transmission-tracker-add.service b/transmission-tracker-add.service
new file mode 100644
index 0000000..42d74f0
--- /dev/null
+++ b/transmission-tracker-add.service
@@ -0,0 +1,18 @@
+[Unit]
+Description=transmission tracker add
+Requires=network.target
+
+[Service]
+### use non root user example below:
+#User=debian-transmission
+Type=simple
+ExecStart=/opt/bin/add-trackers-auto.sh
+ExecStop=/bin/kill -s TERM $MAINPID
+ExecStopPost=/bin/rm -f /tmp/TTAA.*.lock
+KillMode=control-group
+StandardOutput=null
+CPUSchedulingPolicy=idle
+Nice=19
+
+[Install]
+WantedBy=multi-user.target