forked from Sperryfreak01/RadarrSync
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathRadarrSync.py
102 lines (83 loc) · 3.8 KB
/
RadarrSync.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
96
97
98
99
100
101
import os
import logging
import requests
import json
import configparser
import sys
########################################################################################################################
logger = logging.getLogger()
logger.setLevel(logging.INFO)
logFormatter = logging.Formatter("%(asctime)s [%(threadName)-12.12s] [%(levelname)-5.5s] %(message)s")
fileHandler = logging.FileHandler("./Output.txt")
fileHandler.setFormatter(logFormatter)
logger.addHandler(fileHandler)
consoleHandler = logging.StreamHandler(sys.stdout)
consoleHandler.setFormatter(logFormatter)
logger.addHandler(consoleHandler)
########################################################################################################################
def ConfigSectionMap(section):
dict1 = {}
options = Config.options(section)
for option in options:
try:
dict1[option] = Config.get(section, option)
if dict1[option] == -1:
logger.debug("skip: %s" % option)
except:
print("exception on %s!" % option)
dict1[option] = None
return dict1
Config = configparser.ConfigParser()
settingsFilename = os.path.join(os.getcwd(), 'Config.txt')
Config.read(settingsFilename)
session = requests.Session()
session.trust_env = False
radarr4k_url = ConfigSectionMap("Radarr4k")['url']
radarr4k_key = ConfigSectionMap("Radarr4k")['key']
radarr4kMovies = session.get('{0}/api/movie?apikey={1}'.format(radarr4k_url, radarr4k_key))
radarr_url = ConfigSectionMap("Radarr")['url']
radarr_key = ConfigSectionMap("Radarr")['key']
radarrMovies = session.get('{0}/api/movie?apikey={1}'.format(radarr_url, radarr_key))
if radarrMovies.status_code != 200:
logger.error('Radarr server error - response {}'.format(radarrMovies.status_code))
sys.exit(0)
if radarr4kMovies.status_code != 200:
logger.error('4K Radarr server error - response {}'.format(radarr4kMovies.status_code))
sys.exit(0)
movieIds4k = []
for movie4k in radarr4kMovies.json():
movieIds4k.append(movie4k['tmdbId'])
#logger.debug('found movie to be added')
newMovies = 0
searchid = []
for movie in radarrMovies.json():
if movie['profileId'] == 5:
if movie['tmdbId'] not in movieIds4k:
logging.debug('title: {0}'.format(movie['title']))
logging.debug('qualityProfileId: {0}'.format(movie['qualityProfileId']))
logging.debug('titleSlug: {0}'.format(movie['titleSlug']))
images = movie['images']
for image in images:
image['url'] = '{0}{1}'.format(radarr_url, image['url'])
logging.debug(image['url'])
logging.debug('tmdbId: {0}'.format(movie['tmdbId']))
logging.debug('path: {0}'.format(movie['path']))
logging.debug('monitored: {0}'.format(movie['monitored']))
payload = {'title': movie['title'],
'qualityProfileId': movie['qualityProfileId'],
'titleSlug': movie['titleSlug'],
'tmdbId': movie['tmdbId'],
'path': movie['path'],
'monitored': movie['monitored'],
'images': images,
'profileId': movie['profileId'],
'minimumAvailability': 'released'
}
r = session.post('{0}/api/movie?apikey={1}'.format(radarr4k_url, radarr4k_key), data=json.dumps(payload))
searchid.append(int(r.json()['id']))
logger.info('adding {} to Radarr 4k server'.format(movie['title']))
else:
logging.debug('{0} already in 4k library'.format(movie['title']))
if len(searchid):
payload = {'name' : 'MoviesSearch', 'movieIds' : searchid}
session.post('{0}/api/command?apikey={1}'.format(radarr4k_url, radarr4k_key),data=json.dumps(payload))