Added comments for the functions

This commit is contained in:
jblu 2022-07-20 11:34:13 -05:00
parent 1375bc36ce
commit 08cbf7f445
7 changed files with 31 additions and 5 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -21,28 +21,32 @@ class Qbt:
username=self.config["username"],
password=self.config["password"],
)
# Create the logging object
# Create the logging and pushover objects
self.tl = logging
self.po = pushover
# 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"]
# Variables torlog uses from config.json
self.logpath = self.config["logpath"]
self.loglevel = self.config["loglevel"]
# 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_protected_list = []
self.tracker_nonprotected_list = []
# Setting values of the tags
self.tracker_protected_tag = 'ipt'
self.tracker_non_protected_tag = 'public'
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()
@ -51,7 +55,9 @@ class Qbt:
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()
#Main process block
if self.use_log:
listqbitapiinfo(self)
listfirsttor(self)
@ -65,5 +71,6 @@ class Qbt:
tornotifysummary(self)
tordelete(self)
# Run
if __name__== "__main__":
Qbt()

View File

@ -1,6 +1,10 @@
#The second file shall contain functions to build out a list of torrents.
def buildtorlist(self):
"""builds multiple lists of torrents to be sorted."""
"""Builds multiple lists of torrents to be sorted. Also adds tags to the torents.
There are more effecient ways of doing things but I did this rather quickly.
V2 will certainly be more performant. The reason two lists were used was so that torrents
that are in public trackers woudln't be around as long as torrents from a private tracker.
"""
self.protected_count = 0
self.nonprotected_count = 0
while self.torrentlist:
@ -37,6 +41,9 @@ def buildtorlist(self):
self.tracker_nonprotected_list.append(torrent)
def writetor(self, filepath='./torrentinfo.txt'):
"""Write all torrent data to a file.
Useful for development of new features.
"""
with open(filepath, 'w') as fp:
fp.write(str(self.torrentlist))
@ -54,5 +61,6 @@ def listqbitapiinfo(self):
self.tl.debug(f'qBittorrent Web API: {self.qbt_client.app.web_api_version}')
def torrentcount(self):
"""write torrent counts to log file"""
self.tl.debug(f'torrents that are protected {self.protected_count}')
self.tl.debug(f"torrents that aren't protected {self.nonprotected_count}")

View File

@ -1,6 +1,7 @@
#The third file shall contain logging and email communication.
def torlog(self):
"""Setting up the log file, if self.use_log is set to true and self.loglevel is DEBUG OR INFO"""
if self.use_log:
if self.loglevel == 'DEBUG':
self.tl.basicConfig(filename=self.logpath, format='%(asctime)s:%(levelname)s:%(message)s', encoding='utf-8', datefmt='%m/%d/%Y %I:%M:%S %p',level=self.tl.DEBUG)
@ -8,18 +9,22 @@ def torlog(self):
self.tl.basicConfig(filename=self.logpath, format='%(asctime)s:%(levelname)s:%(message)s', encoding='utf-8', datefmt='%m/%d/%Y %I:%M:%S %p',level=self.tl.INFO)
def tornotify(self):
"""Seting up to use pushover, if self.use_pushover is set to true and
if valid self.po_key and self.po_token is provided in the config file"""
if self.use_pushover:
self.poc = self.po.Client(self.po_key, api_token=self.po_token)
def tornotifytest(self):
"""Used to make sure tornotify is working and messages are getting to the client"""
self.poc.send_message("Test Message", title="qbit-maid")
def tornotifysummary(self):
"""Main notification method when the app is used in an automated fashion"""
self.poc.send_message(f' Protected torrents: {len(self.tracker_protected_list)}\n\
Non-protected torrents: {len(self.tracker_nonprotected_list)}\n\
Total torrents set for deletion: {len(self.torrent_hash_delete_list)}', title="qbit-maid summary")
def getunixtimestamp(self):
"""Used for debuging and development related to unixtimestamps, not used in main script but useful"""
self.uts = self.t.time()
self.tl.info(self.uts)

View File

@ -1,5 +1,8 @@
#The fourth file shall be logic to process torrents.
def torprocessor(self):
"""Main logic to sort through both self.tracker_nonprotected_list and self.tracker_protected_list
If torrent meets criteria for deletion, its infohash_v1 will be appended to self.torrent_hash_delete_list
"""
for canidate in self.tracker_nonprotected_list:
if 'ipt' in canidate['tags']:
if self.use_log:
@ -37,12 +40,15 @@ def torprocessor(self):
pass
def printprocessor(self):
"""Print summary of torrents"""
self.tl.info(f'Protected torrents: {len(self.tracker_protected_list)}')
self.tl.info(f'Non-protected torrents: {len(self.tracker_nonprotected_list)}')
self.tl.info(f'Total torrents set for deletion: {len(self.torrent_hash_delete_list)}')
def tordelete(self):
"""Remove torrents, will also delete files, this keeps the filesystem clean.
Only pass self.torrent_hash_delete_list if you would like to keep the files."""
if self.use_log:
self.tl.debug('Hash list submitted for deletion:')
self.tl.debug(self.torrent_hash_delete_list)
self.tl.debug(self.torrent_hash_delete_list)
self.qbt_client.torrents_delete(True, self.torrent_hash_delete_list)