82 lines
2.7 KiB
Python
82 lines
2.7 KiB
Python
import logging
|
|
from requests import Session, Request
|
|
from datetime import datetime, timezone
|
|
|
|
from varken.helpers import connection_handler
|
|
from varken.structures import OmbiRequestCounts
|
|
|
|
|
|
class OmbiAPI(object):
|
|
def __init__(self, server, dbmanager):
|
|
self.now = datetime.now(timezone.utc).astimezone().isoformat()
|
|
self.dbmanager = dbmanager
|
|
self.server = server
|
|
# Create session to reduce server web thread load, and globally define pageSize for all requests
|
|
self.session = Session()
|
|
self.session.headers = {'Apikey': self.server.api_key}
|
|
self.logger = logging.getLogger()
|
|
|
|
def __repr__(self):
|
|
return "<ombi-{}>".format(self.server.id)
|
|
|
|
def get_total_requests(self):
|
|
self.now = datetime.now(timezone.utc).astimezone().isoformat()
|
|
tv_endpoint = '/api/v1/Request/tv'
|
|
movie_endpoint = "/api/v1/Request/movie"
|
|
|
|
tv_req = self.session.prepare_request(Request('GET', self.server.url + tv_endpoint))
|
|
movie_req = self.session.prepare_request(Request('GET', self.server.url + movie_endpoint))
|
|
get_tv = connection_handler(self.session, tv_req, self.server.verify_ssl)
|
|
get_movie = connection_handler(self.session, movie_req, self.server.verify_ssl)
|
|
|
|
if not all([get_tv, get_movie]):
|
|
return
|
|
|
|
movie_requests = len(get_movie)
|
|
tv_requests = len(get_tv)
|
|
|
|
influx_payload = [
|
|
{
|
|
"measurement": "Ombi",
|
|
"tags": {
|
|
"type": "Request_Total",
|
|
"server": self.server.id
|
|
},
|
|
"time": self.now,
|
|
"fields": {
|
|
"total": movie_requests + tv_requests,
|
|
"movies": movie_requests,
|
|
"tv_shows": tv_requests
|
|
}
|
|
}
|
|
]
|
|
|
|
self.dbmanager.write_points(influx_payload)
|
|
|
|
def get_request_counts(self):
|
|
self.now = datetime.now(timezone.utc).astimezone().isoformat()
|
|
endpoint = '/api/v1/Request/count'
|
|
|
|
req = self.session.prepare_request(Request('GET', self.server.url + endpoint))
|
|
get = connection_handler(self.session, req, self.server.verify_ssl)
|
|
|
|
if not get:
|
|
return
|
|
|
|
requests = OmbiRequestCounts(**get)
|
|
influx_payload = [
|
|
{
|
|
"measurement": "Ombi",
|
|
"tags": {
|
|
"type": "Request_Counts"
|
|
},
|
|
"time": self.now,
|
|
"fields": {
|
|
"pending": requests.pending,
|
|
"approved": requests.approved,
|
|
"available": requests.available
|
|
}
|
|
}
|
|
]
|
|
|
|
self.dbmanager.write_points(influx_payload)
|