qbit-maid/qbit-maid.py

94 lines
3.3 KiB
Python

#The first file shall contain an client to the qbit api and the processing of the torrents.
import qbittorrentapi
import pushover
from json import load
from json import dump
from qlist import *
from qlogging import *
from qprocess import *
import time
import datetime
import logging
from collections import Counter
class Qbt:
def __init__(self):
"""Main object, should be calling functions from qlist.py, qlogging.py and qprocess.py"""
# Open the config. Needs a json file with the data in config.json.example
self.st = datetime.datetime.now()
c = open('./config.json')
self.config = load(c)
w = open('./category-whitelist.json')
self.cat_whitelist = load(w)
# Create the api object
self.qbt_client = qbittorrentapi.Client(
host=self.config["host"],
port=self.config["port"],
username=self.config["username"],
password=self.config["password"],
)
# Create the logging and pushover objects
self.tl = logging
self.po = pushover
self.ct = Counter
# Variables torlog uses from config.json
self.use_pushover = self.config["use_pushover"]
self.use_log = self.config["use_log"]
self.po_key = self.config["po_key"]
self.po_token = self.config["po_token"]
self.logpath = self.config["logpath"]
self.loglevel = self.config["loglevel"]
self.tracker_protected_tag = self.config["protected_tag"]
self.tracker_non_protected_tag = self.config["non_protected_tag"]
self.minimum_age = self.config["minimum_age"]
self.age = self.config["age"]
# Calling log and notify functions
torlog(self)
tornotify(self)
self.t = time
# Pulling domain names to treat carefully
f = open('./tracker-whitelist.json')
self.tracker_whitelist = load(f)
self.tracker_list = []
self.up_tor_counter = 0
self.preme_tor_counter = 0
self.ignored_counter = 0
self.torrent_hash_delete_list = []
if self.use_log:
self.tl.debug(self.tracker_whitelist)
#logging in
try:
self.tl.info('Connecting to host.')
self.qbt_client.auth_log_in()
self.tl.info('Connected.')
except qbittorrentapi.APIError as e:
self.tl.exception(e)
self.poc.send_message(e, title="qbit-maid API ERROR")
self.torrentlist = {}
# Pulling all torrent data
self.torrentlist = self.qbt_client.torrents_info()
self.d = dump
self.l = load
writetor(self)
#Main process block
#debugpremecal(self)
if self.use_log:
listqbitapiinfo(self)
listfirsttor(self)
buildtorlist(self)
processcounts(self)
#tordeletetags(self)
if self.use_log:
torrentcount(self)
torprocessor(self)
if self.use_log:
printprocessor(self)
if self.config["delete_torrents"]:
tordelete(self)
self.et = datetime.datetime.now()
getscriptruntime(self)
if self.use_pushover:
tornotifysummary(self)
# Run
if __name__== "__main__":
Qbt()