Varken/Varken.py

91 lines
3.4 KiB
Python
Raw Normal View History

2018-11-28 20:21:16 -08:00
import schedule
import threading
2018-12-03 21:47:46 -08:00
from sys import exit
2018-11-28 20:21:16 -08:00
from time import sleep
2018-12-03 21:47:46 -08:00
from os import access, R_OK
from os.path import isdir, abspath, dirname, join
from argparse import ArgumentParser, RawTextHelpFormatter
2018-11-28 20:21:16 -08:00
2018-12-04 08:45:18 -08:00
from varken.iniparser import INIParser
from varken.sonarr import SonarrAPI
from varken.tautulli import TautulliAPI
from varken.radarr import RadarrAPI
from varken.ombi import OmbiAPI
from varken.dbmanager import DBManager
2018-12-04 16:16:00 -08:00
from varken.varkenlogger import VarkenLogger
2018-11-28 20:21:16 -08:00
def threaded(job):
thread = threading.Thread(target=job)
2018-11-28 20:21:16 -08:00
thread.start()
2018-11-29 10:42:10 -08:00
2018-11-28 20:21:16 -08:00
if __name__ == "__main__":
2018-12-04 16:16:00 -08:00
vl = VarkenLogger()
vl.logger.info('Starting Varken...')
2018-12-04 08:45:18 -08:00
parser = ArgumentParser(prog='varken',
2018-12-03 21:47:46 -08:00
description='Command-line utility to aggregate data from the plex ecosystem into InfluxDB',
formatter_class=RawTextHelpFormatter)
parser.add_argument("-d", "--data-folder", help='Define an alternate data folder location')
parser.add_argument("-l", "--log-level", choices=['info', 'error', 'debug'], help='Not yet implemented')
opts = parser.parse_args()
DATA_FOLDER = abspath(join(dirname(__file__), 'data'))
if opts.data_folder:
ARG_FOLDER = opts.data_folder
if isdir(ARG_FOLDER):
DATA_FOLDER = ARG_FOLDER
if not access(ARG_FOLDER, R_OK):
exit("Read permission error for {}".format(ARG_FOLDER))
else:
exit("{} does not exist".format(ARG_FOLDER))
CONFIG = INIParser(DATA_FOLDER)
2018-12-01 21:15:12 -08:00
DBMANAGER = DBManager(CONFIG.influx_server)
2018-11-28 20:21:16 -08:00
if CONFIG.sonarr_enabled:
for server in CONFIG.sonarr_servers:
2018-12-01 21:15:12 -08:00
SONARR = SonarrAPI(server, DBMANAGER)
2018-11-28 20:21:16 -08:00
if server.queue:
2018-11-29 10:42:10 -08:00
schedule.every(server.queue_run_seconds).seconds.do(threaded, SONARR.get_queue)
2018-11-28 20:57:10 -08:00
if server.missing_days > 0:
schedule.every(server.missing_days_run_seconds).seconds.do(threaded, SONARR.get_missing)
2018-11-28 20:57:10 -08:00
if server.future_days > 0:
schedule.every(server.future_days_run_seconds).seconds.do(threaded, SONARR.get_future)
2018-11-28 20:21:16 -08:00
if CONFIG.tautulli_enabled:
for server in CONFIG.tautulli_servers:
2018-12-01 21:15:12 -08:00
TAUTULLI = TautulliAPI(server, DBMANAGER)
if server.get_activity:
schedule.every(server.get_activity_run_seconds).seconds.do(threaded, TAUTULLI.get_activity)
if server.get_sessions:
schedule.every(server.get_sessions_run_seconds).seconds.do(threaded, TAUTULLI.get_sessions)
2018-12-01 18:33:33 -08:00
if CONFIG.radarr_enabled:
for server in CONFIG.radarr_servers:
2018-12-01 21:15:12 -08:00
RADARR = RadarrAPI(server, DBMANAGER)
if server.get_missing:
2018-12-01 18:33:33 -08:00
schedule.every(server.get_missing_run_seconds).seconds.do(threaded, RADARR.get_missing)
if server.queue:
schedule.every(server.queue_run_seconds).seconds.do(threaded, RADARR.get_queue)
2018-12-01 20:26:44 -08:00
if CONFIG.ombi_enabled:
for server in CONFIG.ombi_servers:
2018-12-01 21:15:12 -08:00
OMBI = OmbiAPI(server, DBMANAGER)
2018-12-01 20:26:44 -08:00
if server.request_type_counts:
schedule.every(server.request_type_run_seconds).seconds.do(threaded, OMBI.get_request_counts)
if server.request_total_counts:
schedule.every(server.request_total_run_seconds).seconds.do(threaded, OMBI.get_total_requests)
2018-12-03 12:28:15 -08:00
# Run all on startup
schedule.run_all()
2018-11-28 20:21:16 -08:00
while True:
schedule.run_pending()
sleep(1)