From dfa16ee0618380c322bf40eaff88c7eeb3e76ef5 Mon Sep 17 00:00:00 2001 From: Jamie Harrison Date: Wed, 12 Jan 2022 23:07:40 -0600 Subject: [PATCH 1/4] Added docker support. --- Dockerfile | 17 +++++++++++++++++ entrypoint.sh | 7 +++++++ transmission-trackers.py | 13 +++++++------ 3 files changed, 31 insertions(+), 6 deletions(-) create mode 100644 Dockerfile create mode 100644 entrypoint.sh diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..668601d --- /dev/null +++ b/Dockerfile @@ -0,0 +1,17 @@ +FROM python:latest +ENV TRANSMISSION_HOST=localhost +ENV TRANSMISSION_PORT=9091 +ENV TRANSMISSION_USER=admin +ENV TRANSMISSION_PASSWORD=password +ENV TRANSMISSION_FILTER= +ENV TEMP=/tmp +RUN pip3 install transmissionrpc & \ + mkdir /app +COPY transmission-trackers.py /app +COPY transmission-trackers.timer /app +COPY transmission-trackers.service /app +COPY requirements.txt /app +COPY entrypoint.sh / +RUN chmod +x /entrypoint.sh +WORKDIR /app +CMD /entrypoint.sh diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100644 index 0000000..e3ddd9d --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,7 @@ +#/bin/bash +cd /app +pip install -r /app/requirements.txt +while (true); do + python /app/transmission-trackers.py + sleep 1m +done diff --git a/transmission-trackers.py b/transmission-trackers.py index 820b57e..43a6deb 100755 --- a/transmission-trackers.py +++ b/transmission-trackers.py @@ -1,20 +1,21 @@ #!/usr/bin/env python3 from __future__ import print_function +import os # Host, port, username and password to connect to Transmission # Set user and pw to None if auth is not required client = { - 'host': 'localhost', - 'port': 9091, - 'user': 'admin', - 'password': 'passwd' + 'host': os.environ.get('TRANSMISSION_HOST'), + 'port': os.environ.get('TRANSMISSION_PORT'), + 'user': os.environ.get('TRANSMISSION_USER'), + 'password': os.environ.get('TRANSMISSION_PASSWORD') } config = { # Work with torrents having only these statuses. # Can be any combination of: 'check pending', 'checking', 'downloading', 'seeding', 'stopped' # If empty - will affect all torrents - 'status_filter': (), + 'status_filter': (os.environ.get('TRANSMISSION_FILTER')), # A list of URLs where to get the tracker lists from. # The lists are combined into one with duplicates removed. @@ -48,7 +49,7 @@ } cache_file = None # Universal scope from os import getcwd -if getcwd() != '/docker/transmission/transmission-trackers': +if getcwd() != '/app': from os import environ as env, path, mkdir try: cache_file = path.join(env.get('TEMP',env.get('TMP',None)) ,'.cache/trackers.txt') From f4d3a19953160a82ccc27895c61632f158eea584 Mon Sep 17 00:00:00 2001 From: Jamie Harrison Date: Wed, 12 Jan 2022 23:14:57 -0600 Subject: [PATCH 2/4] Update readme --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index 183ea8f..a6a6ada 100644 --- a/README.md +++ b/README.md @@ -28,3 +28,9 @@ Usage: * Adjust other parameters if needed (see comments) * Make the script run by cron e.g. every minute * You're done + +Docker Usage: +Set the environment variables: TRANSMISSION_HOST, TRANSMISSION_PORT, TRANSMISSION_USER, TRANSMISSION_PASSWORD +You can control the status filter by setting the TRANSMISSION_FILTER environment variable to one of the available options: 'check pending', 'checking', 'downloading', 'seeding', 'stopped' + +example: docker run -e TRANSMISSION_HOST='localhost' -e TRANSMISSION_PORT=9091 -e TRANSMISSION_USER='admin' -e TRANSMISSION_PASSWORD='password' cannibal3004/transmission-trackers:latest \ No newline at end of file From 9a8ca2863bcb52e4c404458a882c8b79edd375c6 Mon Sep 17 00:00:00 2001 From: Jamie Harrison Date: Wed, 12 Jan 2022 23:16:10 -0600 Subject: [PATCH 3/4] Update readme --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index a6a6ada..61542a1 100644 --- a/README.md +++ b/README.md @@ -29,8 +29,8 @@ Usage: * Make the script run by cron e.g. every minute * You're done -Docker Usage: -Set the environment variables: TRANSMISSION_HOST, TRANSMISSION_PORT, TRANSMISSION_USER, TRANSMISSION_PASSWORD -You can control the status filter by setting the TRANSMISSION_FILTER environment variable to one of the available options: 'check pending', 'checking', 'downloading', 'seeding', 'stopped' +Docker Usage: \ +Set the environment variables: TRANSMISSION_HOST, TRANSMISSION_PORT, TRANSMISSION_USER, TRANSMISSION_PASSWORD \ +You can control the status filter by setting the TRANSMISSION_FILTER environment variable to one of the available options: 'check pending', 'checking', 'downloading', 'seeding', 'stopped' \ -example: docker run -e TRANSMISSION_HOST='localhost' -e TRANSMISSION_PORT=9091 -e TRANSMISSION_USER='admin' -e TRANSMISSION_PASSWORD='password' cannibal3004/transmission-trackers:latest \ No newline at end of file +example: docker run -e TRANSMISSION_HOST='localhost' -e TRANSMISSION_PORT=9091 -e TRANSMISSION_USER='admin' -e TRANSMISSION_PASSWORD='password' cannibal3004/transmission-trackers:latest \ \ No newline at end of file From 072d3eca9491c1ab52506aaecff44d41b6bc607a Mon Sep 17 00:00:00 2001 From: Jamie Harrison Date: Thu, 13 Jan 2022 21:43:31 -0600 Subject: [PATCH 4/4] added a new default tracker list to the list --- transmission-trackers.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/transmission-trackers.py b/transmission-trackers.py index 43a6deb..39c4b9e 100755 --- a/transmission-trackers.py +++ b/transmission-trackers.py @@ -5,8 +5,8 @@ # Host, port, username and password to connect to Transmission # Set user and pw to None if auth is not required client = { - 'host': os.environ.get('TRANSMISSION_HOST'), - 'port': os.environ.get('TRANSMISSION_PORT'), + 'host': os.environ.get('TRANSMISSION_HOST','localhost'), + 'port': os.environ.get('TRANSMISSION_PORT',9091), 'user': os.environ.get('TRANSMISSION_USER'), 'password': os.environ.get('TRANSMISSION_PASSWORD') } @@ -23,6 +23,7 @@ 'remote_lists': [ 'https://raw.githubusercontent.com/ngosang/trackerslist/master/trackers_all.txt', 'https://raw.githubusercontent.com/zcq100/transmission-trackers/master/tracker_ipv6.txt', + 'https://trackerslist.com/all.txt', # ... ],