Clean up request totals. Upstream change sct/overseerr#2426

This commit is contained in:
samwiseg0 2022-01-19 13:28:12 -05:00
parent 5e8c8eb5ce
commit 08c49698a7
5 changed files with 12 additions and 73 deletions

View file

@ -160,9 +160,6 @@ if __name__ == "__main__":
if CONFIG.overseerr_enabled:
for server in CONFIG.overseerr_servers:
OVERSEER = OverseerrAPI(server, DBMANAGER)
if server.get_request_total_counts:
at_time = schedule.every(server.request_total_run_seconds).seconds
at_time.do(thread, OVERSEER.get_total_requests).tag("overseerr-{}-get_total_requests".format(server.id))
if server.get_request_status_counts:
at_time = schedule.every(server.request_status_run_seconds).seconds
at_time.do(thread, OVERSEER.get_request_status_counts).tag("overseerr-{}-get_request_status_counts"

View file

@ -101,8 +101,6 @@ url = overseerr.domain.tld
apikey = xxxxxxxxxxxxxxxx
ssl = false
verify_ssl = false
get_request_total_counts = true
request_total_run_seconds = 300
get_request_status_counts = true
request_status_run_seconds = 300
get_latest_requests = true

View file

@ -297,12 +297,6 @@ class INIParser(object):
get_latest_requests = boolcheck(env.get(
f'VRKN_{envsection}_GET_LATEST_REQUESTS',
self.config.get(section, 'get_latest_requests')))
num_latest_requests_to_fetch = int(env.get(
f'VRKN_{envsection}_NUM_LATEST_REQUESTS',
self.config.getint(section, 'num_latest_requests_to_fetch')))
num_latest_requests_seconds = int(env.get(
f'VRKN_{envsection}_NUM_LATEST_REQUESTS_SECONDS',
self.config.getint(section, 'num_latest_requests_seconds')))
get_request_total_counts = boolcheck(env.get(
f'VRKN_{envsection}_GET_REQUEST_TOTAL_COUNTS',
self.config.get(section, 'get_request_total_counts')))
@ -318,8 +312,6 @@ class INIParser(object):
server = OverseerrServer(id=server_id, url=scheme + url, api_key=apikey,
verify_ssl=verify_ssl, get_latest_requests=get_latest_requests,
num_latest_requests_to_fetch=num_latest_requests_to_fetch,
num_latest_requests_seconds=num_latest_requests_seconds,
get_request_total_counts=get_request_total_counts,
request_total_run_seconds=request_total_run_seconds,
get_request_status_counts=get_request_status_counts,

View file

@ -18,63 +18,6 @@ class OverseerrAPI(object):
def __repr__(self):
return f"<overseerr-{self.server.id}>"
def get_total_requests(self):
now = datetime.now(timezone.utc).astimezone().isoformat()
endpoint = '/api/v1/request?take=200&filter=all&sort=added'
req = self.session.prepare_request(Request('GET', self.server.url + endpoint))
get_req = connection_handler(self.session, req, self.server.verify_ssl) or []
if not any([get_req]):
self.logger.error('No json replies. Discarding job')
return
tv_requests = []
movie_requests = []
for result in get_req['results']:
if result['type'] == 'tv':
try:
tv_requests.append(OverseerrRequest(**result))
except TypeError as e:
self.logger.error('TypeError has occurred : %s while creating OverseerrRequest structure for show. '
'data attempted is: %s', e, result)
if result['type'] == 'movie':
try:
movie_requests.append(OverseerrRequest(**result))
except TypeError as e:
self.logger.error('TypeError has occurred : %s while creating OverseerrRequest \
structure for movie. '
'data attempted is: %s', e, result)
if tv_requests:
tv_request_count = len(tv_requests)
if movie_requests:
movie_request_count = len(movie_requests)
influx_payload = [
{
"measurement": "Overseerr",
"tags": {
"type": "Request_Totals",
"server": self.server.id
},
"time": now,
"fields": {
"total": movie_request_count + tv_request_count,
"movies": movie_request_count,
"tv": tv_request_count
}
}
]
if influx_payload:
self.dbmanager.write_points(influx_payload)
else:
self.logger.debug("Empty dataset for overseerr module. Discarding...")
def get_request_status_counts(self):
now = datetime.now(timezone.utc).astimezone().isoformat()
endpoint = '/api/v1/request/count'
@ -97,7 +40,12 @@ class OverseerrAPI(object):
"pending": requests.pending,
"approved": requests.approved,
"processing": requests.processing,
"available": requests.available
"available": requests.available,
"total": requests.total,
"movies": requests.movie,
"tv": requests.tv,
"declined": requests.declined
}
}
]
@ -139,8 +87,8 @@ class OverseerrAPI(object):
"request_type": 0,
"status": get_tv_req['mediaInfo']['status'],
"title": get_tv_req['name'],
"requested_user": get_tv_req['mediaInfo']['requests'][0]['requestedBy']['plexUsername'],
"requested_date": get_tv_req['mediaInfo']['requests'][0]['requestedBy']['createdAt']
"requested_date": get_tv_req['mediaInfo']['requests'][0]['media']['createdAt']
"requested_date": get_movie_req['mediaInfo']['requests'][0]['media']['createdAt']
},
"time": now,
"fields": {

View file

@ -212,6 +212,10 @@ class OverseerrRequestCounts(NamedTuple):
approved: int = None
processing: int = None
available: int = None
total: int = None
movie: int = None
tv: int = None
declined: int = None
# Sonarr