-
Notifications
You must be signed in to change notification settings - Fork 0
/
transmission-connect.py
97 lines (81 loc) · 3.54 KB
/
transmission-connect.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
import docker
from sys import exit
import os
import requests
import json
from dotenv import load_dotenv
from pathlib import Path
env_path = Path('.') / '.env'
load_dotenv(dotenv_path=env_path)
try:
client = docker.from_env()
APIClient = docker.APIClient(base_url='unix://var/run/docker.sock')
print('docker connected')
containers = client.containers.list(all=True)
transmission = client.containers.get(os.getenv("DOWNLOADCLIENT"))
print(os.getenv("DOWNLOADCLIENT"), 'status:', transmission.status)
# start up docker container for downloadclient
if transmission.status != 'running':
print(transmission)
transmission.start()
else:
print('already on')
# exit(0)
started = False
while (started == False):
print('starting...')
if (client.containers.get(os.getenv("DOWNLOADCLIENT")).status == 'running'):
started = True
# grab container info
print(os.getenv("DOWNLOADCLIENT"), 'status:', client.containers.get(os.getenv("DOWNLOADCLIENT")).status)
print('container:', client.containers.get(os.getenv("DOWNLOADCLIENT")))
print('name:', transmission.name)
print('id:', client.containers.get(os.getenv("DOWNLOADCLIENT")).id)
transmissionIP = ''
for currCont in APIClient.containers():
if currCont['Names'][0] == '/' + os.getenv("DOWNLOADCLIENT"):
transmissionIP = currCont['NetworkSettings']['Networks']['bridge']['IPAddress']
print('IP Address:', transmissionIP, '\n')
# config sonarr and radarr clients and connect to download clients
sonarr = requests.get("http://" + os.getenv("SONARRHOST") + ":" +
os.getenv("SONARRPORT") +
"/api/downloadclient?apikey="+
os.getenv("SONARRAPIKEY"))
print('sonarr GET request status:', sonarr.status_code)
# grab client info and configure
clientInfo = None
for client in sonarr.json():
if (str(client['name']) == str(os.getenv("DOWNLOADCLIENT"))):
clientInfo = client
if clientInfo == None:
print(os.getenv("DOWNLOADCLIENT"),"not found")
clientInfo["fields"][0]['value'] = transmissionIP
# configure download client for sonarr
sonarr = requests.put("http://" + os.getenv("SONARRHOST") + ":" +
os.getenv("SONARRPORT") +
"/api/downloadclient/" + str(clientInfo["id"]) +
"?apikey=" + os.getenv("SONARRAPIKEY"), data=json.dumps(clientInfo))
print('sonarr PUT request status:', sonarr.status_code, '\n')
# config radarr clients and connect to download clients
radarr = requests.get("http://" + os.getenv("RADARRHOST") + ":" +
os.getenv("RADARRPORT") +
"/api/downloadclient?apikey="+
os.getenv("RADARRAPIKEY"))
print('radarr GET request status:', radarr.status_code)
# grab client info and configure
clientInfo = None
for client in radarr.json():
if (str(client['name']) == str(os.getenv("DOWNLOADCLIENT"))):
clientInfo = client
if clientInfo == None:
print(os.getenv("DOWNLOADCLIENT"),"not found")
clientInfo["fields"][0]['value'] = transmissionIP
# configure download client for sonarr
radarr = requests.put("http://" + os.getenv("RADARRHOST") + ":" +
os.getenv("RADARRPORT") +
"/api/downloadclient/" + str(clientInfo["id"]) +
"?apikey=" + os.getenv("RADARRAPIKEY"), data=json.dumps(clientInfo))
print('radarr PUT request status:', radarr.status_code, '\n')
except docker.errors.APIError:
print('failed to connect to docker')
# print(docker.errors.APIError)