From 08c49698a7e3b82d9f7a60727b6f6340f128cac5 Mon Sep 17 00:00:00 2001 From: samwiseg0 <2241731+samwiseg0@users.noreply.github.com> Date: Wed, 19 Jan 2022 13:28:12 -0500 Subject: [PATCH] Clean up request totals. Upstream change sct/overseerr#2426 --- Varken.py | 3 -- data/varken.example.ini | 2 -- varken/iniparser.py | 8 ----- varken/overseerr.py | 68 +++++------------------------------------ varken/structures.py | 4 +++ 5 files changed, 12 insertions(+), 73 deletions(-) diff --git a/Varken.py b/Varken.py index fedb080..6c17fca 100644 --- a/Varken.py +++ b/Varken.py @@ -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" diff --git a/data/varken.example.ini b/data/varken.example.ini index e5eb650..a4c7c9b 100644 --- a/data/varken.example.ini +++ b/data/varken.example.ini @@ -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 diff --git a/varken/iniparser.py b/varken/iniparser.py index 4db95f1..a63e777 100644 --- a/varken/iniparser.py +++ b/varken/iniparser.py @@ -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, diff --git a/varken/overseerr.py b/varken/overseerr.py index 55e8880..d1a74b7 100644 --- a/varken/overseerr.py +++ b/varken/overseerr.py @@ -18,63 +18,6 @@ class OverseerrAPI(object): def __repr__(self): return f"" - 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": { diff --git a/varken/structures.py b/varken/structures.py index 90c8b13..2d1ecb4 100644 --- a/varken/structures.py +++ b/varken/structures.py @@ -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