Merge pull request #10 from jonbranan/category-whitelist

Category whitelist
This commit is contained in:
jonbranan 2022-07-23 01:10:24 -05:00 committed by GitHub
commit e02978507e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 27 additions and 10 deletions

2
.gitignore vendored
View File

@ -1,5 +1,5 @@
config.json
*.log *.log
*.json
# Byte-compiled / optimized / DLL files # Byte-compiled / optimized / DLL files
__pycache__/ __pycache__/

View File

@ -44,6 +44,16 @@ Config.json
"po_token": "" "po_token": ""
} }
``` ```
You will need a category-whitelist.json in the root directory. This will ignore any of the categories found in the values of the entries.
```
{
"example": "general",
"example2": "sonarr"
}
```
| Key | Value | | Key | Value |
| --- | --- | | --- | --- |
| host | string, ip or hostname of qbittorrent server | | host | string, ip or hostname of qbittorrent server |
@ -51,6 +61,8 @@ Config.json
| username | admin account for qbittorrent | | username | admin account for qbittorrent |
| password | password for admin account | | password | password for admin account |
| loglevel | is what log messages are written to the log file. INFO or DEBUG are valid entries(case sensitive) | | loglevel | is what log messages are written to the log file. INFO or DEBUG are valid entries(case sensitive) |
| protected_tag | used to mark torrents to handle with care |
| non_protected_tag | we don't care about these torrents |
| logpath | will write a log in root directory if left as is other wise specify other path using forward slashes | | logpath | will write a log in root directory if left as is other wise specify other path using forward slashes |
| age | number, seconds for how long we keep torrents from IPTORRENTS | | age | number, seconds for how long we keep torrents from IPTORRENTS |
| use_pushover | true or false to enable or disable pushover notification summary | | use_pushover | true or false to enable or disable pushover notification summary |

View File

@ -0,0 +1,3 @@
{
"example": "general"
}

View File

@ -14,6 +14,8 @@ class Qbt:
# Open the config. Needs a json file with the data in config.json.example # Open the config. Needs a json file with the data in config.json.example
c = open('./config.json') c = open('./config.json')
self.config = load(c) self.config = load(c)
w = open('./category-whitelist.json')
self.cat_whitelist = load(w)
# Create the api object # Create the api object
self.qbt_client = qbittorrentapi.Client( self.qbt_client = qbittorrentapi.Client(
host=self.config["host"], host=self.config["host"],
@ -69,7 +71,7 @@ class Qbt:
printprocessor(self) printprocessor(self)
if self.use_pushover: if self.use_pushover:
tornotifysummary(self) tornotifysummary(self)
#tordelete(self) tordelete(self)
# Run # Run
if __name__== "__main__": if __name__== "__main__":

View File

@ -4,13 +4,12 @@ def buildtorlist(self):
V2 will certainly be more performant. The reason two lists were used was so that torrents 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. 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: while self.torrentlist:
torrent = self.torrentlist.pop() torrent = self.torrentlist.pop()
if self.use_log: if self.use_log:
self.tl.debug(f'["{torrent["name"][0:20]}..."] {torrent["infohash_v1"]}') self.tl.debug(f'["{torrent["name"][0:20]}..."] {torrent["infohash_v1"]}')
if torrent['category'] == 'tech': if torrent['category'] in self.cat_whitelist.values():
self.tl.info(f'Ignored torrent:["{torrent["name"][0:20]}..."]')
continue continue
if torrent['tracker'] == '': if torrent['tracker'] == '':
if self.use_log: if self.use_log:
@ -19,13 +18,11 @@ def buildtorlist(self):
if torrent['tracker'].split('/')[2] in self.tracker_whitelist.values(): if torrent['tracker'].split('/')[2] in self.tracker_whitelist.values():
if self.use_log: if self.use_log:
self.tl.debug(f'Protected torrent: {torrent["tracker"]}hash: {torrent["hash"]}') self.tl.debug(f'Protected torrent: {torrent["tracker"]}hash: {torrent["hash"]}')
self.protected_count += 1
self.qbt_client.torrents_add_tags(self.tracker_protected_tag,torrent['hash']) self.qbt_client.torrents_add_tags(self.tracker_protected_tag,torrent['hash'])
self.tracker_protected_list.append(torrent) self.tracker_protected_list.append(torrent)
elif torrent['tracker'].split('/')[2] not in self.tracker_whitelist.values(): if torrent['tracker'].split('/')[2] not in self.tracker_whitelist.values():
if self.use_log: if self.use_log:
self.tl.debug(f'Non-protected torrent: {torrent["tracker"]}hash: {torrent["hash"]}') self.tl.debug(f'Non-protected torrent: {torrent["tracker"]}hash: {torrent["hash"]}')
self.nonprotected_count += 1
self.qbt_client.torrents_add_tags(self.tracker_non_protected_tag,torrent['hash']) self.qbt_client.torrents_add_tags(self.tracker_non_protected_tag,torrent['hash'])
self.tracker_nonprotected_list.append(torrent) self.tracker_nonprotected_list.append(torrent)
@ -56,4 +53,7 @@ def torrentcount(self):
def tordeletetags(self): def tordeletetags(self):
tag_list = ['ipt','public','iptorrents'] tag_list = ['ipt','public','iptorrents']
self.qbt_client.torrents_delete_tags(tag_list) self.qbt_client.torrents_delete_tags(tag_list)
def torlisttags(self):
pass

View File

@ -3,7 +3,7 @@ def torprocessor(self):
If torrent meets criteria for deletion, its infohash_v1 will be appended to self.torrent_hash_delete_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: for canidate in self.tracker_nonprotected_list:
if 'ipt' in canidate['tags']: if self.config["protected_tag"] in canidate['tags']:
if self.use_log: if self.use_log:
self.tl.warning(f'["{canidate["name"][0:20]}..."] was in non-protected list.') self.tl.warning(f'["{canidate["name"][0:20]}..."] was in non-protected list.')
continue continue