-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathmain.py
117 lines (105 loc) · 4.1 KB
/
main.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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
import os
import requests
from flask import Flask, request
from waitress import serve
from dotenv import load_dotenv
#load the .env file to find any environment variables.
load_dotenv()
#Set variables
seerr_baseurl = os.getenv("seerr_baseurl", None)
seerr_api_key = os.getenv("seerr_api_key", None)
movieFolder_Animemovies = os.getenv("rootFolder_Animemovies", None)
movieFolder_Cartoon = os.getenv("rootFolder_Cartoon", None)
tvFolder_documentary = os.getenv("rootFolder_documentary", None)
tvFolder_Animatedseries = os.getenv("rootFolder_Animatedseries", None)
tvFolder_documentary = os.getenv("rootFolder_documentary", None)
tvFolder_reality = os.getenv("rootFolder_reality", None)
app = Flask(__name__)
@app.route('/webhook', methods=['POST'])
def handle_request():
request_data = request.get_json()
process_request(request_data)
return ('success', 202)
def process_request(request_data):
request_id = request_data['requestID']
media_tmdbid = request_data['mediaId']
media_type = request_data['mediaType']
image = request_data['image']
overview = request_data['message']
print(request_id)
seasons = None
if 'extra' in request_data:
for item in request_data['extra']:
if item['name'] == 'Requested Seasons':
seasons = item['value']
break
print(seasons)
get_url = seerr_baseurl + f'/api/v1/{media_type}/{media_tmdbid}?language=en'
headers = {
'accept': 'application/json',
'X-Api-Key': seerr_api_key
}
response = requests.get(get_url, headers=headers)
response_data = response.json()
print(response_data)
put_data = None
if media_type == 'movie':
if any(g['name'] == 'Animation' for g in response_data['genres']):
if any(k['name'] == 'anime' for k in response_data['keywords']):
put_data = {
"mediaType": media_type,
"rootFolder": movieFolder_Animemovies
}
else:
put_data = {
"mediaType": media_type,
"rootFolder": movieFolder_Cartoon
}
elif any(g['name'] == 'Documentary' for g in response_data['genres']):
put_data = {
"mediaType": media_type,
"rootFolder": tvFolder_documentary
}
elif media_type == 'tv':
seasons = [int(season) for season in seasons.split(',')]
if any(g['name'] == 'Animation' for g in response_data['genres']) and not any(k['name'] == 'anime' for k in response_data['keywords']):
put_data = {
"mediaType": media_type,
"seasons": seasons,
"rootFolder": tvFolder_Animatedseries
}
elif any(g['name'] == 'Documentary' for g in response_data['genres']):
put_data = {
"mediaType": media_type,
"seasons": seasons,
"rootFolder": tvFolder_documentary
}
elif any(g['name'] == 'Reality' for g in response_data['genres']):
put_data = {
"mediaType": media_type,
"seasons": seasons,
"rootFolder": tvFolder_reality
}
put_url = seerr_baseurl + f'/api/v1/request/{request_id}'
headers = {
'accept': 'application/json',
'X-Api-Key': seerr_api_key,
'Content-Type': 'application/json'
}
if put_data:
print(put_data)
requests.put(put_url, headers=headers, json=put_data)
rootFolder = put_data['rootFolder']
#title = response_data['title']
title = response_data.get('title', response_data.get('name', ''))
print(f"{title}\n{overview}\nRoot Folder: {rootFolder}")
if response.status_code != 200:
raise Exception(f'Error updating request status: {response.content}')
else:
print("Success for request on Seerr instance, 200")
def handle_request(request):
request_data = request.get_json()
process_request(request_data)
return ('Changed rootfolder', 200)
if __name__ == '__main__':
serve(app, host='0.0.0.0', port='5001')