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 bb75ba8..31969dd 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,6 @@ -# Get more trackers, get more seeders, get more peers transmission [![](https://images.microbadger.com/badges/version/andrewmhub/transmission-tracker-add.svg)](https://microbadger.com/images/andrewmhub/transmission-tracker-add) ![Docker Pulls](https://img.shields.io/docker/pulls/andrewmhub/transmission-tracker-add.svg) ![GitHub top language](https://img.shields.io/github/languages/top/AndrewMarchukov/tracker-add.svg) +# Get more trackers, get more seeders, get more peers transmission +[![Docker Image CI](https://github.com/AndrewMarchukov/tracker-add/actions/workflows/docker-image.yml/badge.svg?branch=docker)](https://github.com/AndrewMarchukov/tracker-add/actions/workflows/docker-image.yml) [![](https://images.microbadger.com/badges/version/andrewmhub/transmission-tracker-add.svg)](https://microbadger.com/images/andrewmhub/transmission-tracker-add) ![Docker Pulls](https://img.shields.io/docker/pulls/andrewmhub/transmission-tracker-add.svg) ![GitHub top language](https://img.shields.io/github/languages/top/AndrewMarchukov/tracker-add.svg) ![Docker Image Size (tag)](https://img.shields.io/docker/image-size/andrewmhub/transmission-tracker-add/latest) + See no peers,seeds for some torrent(s)? Add more tracker(s) for Transmission This script automatically checks new torrents and adds trackers @@ -20,8 +22,11 @@ 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 @@ -57,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/) @@ -89,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) @@ -98,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 1afe076..922a663 100755 --- a/manual-tracker-add.sh +++ b/manual-tracker-add.sh @@ -20,10 +20,10 @@ 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[91m failed.' + 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 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