Adds ability to have update multiple tags #95

[FR]: Tag Torrents with Existing Tags #95
This commit is contained in:
bobokun 2022-01-13 14:39:40 -05:00
parent f2db556f90
commit 102a1e083b
No known key found for this signature in database
GPG key ID: 9665BA6CF5DC2671
2 changed files with 14 additions and 12 deletions

View file

@ -271,17 +271,18 @@ class Config:
logger.debug(e)
# If using Format 1 convert to format 2
if isinstance(tag_details, str):
tracker['tag'] = self.util.check_for_attribute(self.data, tag_url, parent="tracker", default=default_tag)
self.util.check_for_attribute(self.data, "tag", parent="tracker", subparent=tag_url, default=tracker['tag'], do_print=False)
tracker['tag'] = self.util.check_for_attribute(self.data, tag_url, parent="tracker", default=default_tag, var_type="list")
self.util.check_for_attribute(self.data, "tag", parent="tracker", subparent=tag_url, default=tracker['tag'], do_print=False, var_type="list")
if tracker['tag'] == default_tag:
try:
self.data['tracker'][tag_url]['tag'] = default_tag
self.data['tracker'][tag_url]['tag'] = [default_tag]
except Exception:
self.data['tracker'][tag_url] = {'tag': default_tag}
self.data['tracker'][tag_url] = {'tag': [default_tag]}
# Using Format 2
else:
tracker['tag'] = self.util.check_for_attribute(self.data, "tag", parent="tracker", subparent=tag_url, default=tag_url)
if tracker['tag'] == tag_url: self.data['tracker'][tag_url]['tag'] = tag_url
tracker['tag'] = self.util.check_for_attribute(self.data, "tag", parent="tracker", subparent=tag_url, default=tag_url, var_type="list")
if tracker['tag'] == [tag_url]: self.data['tracker'][tag_url]['tag'] = [tag_url]
if isinstance(tracker['tag'], str): tracker['tag'] = [tracker['tag']]
tracker['max_ratio'] = self.util.check_for_attribute(self.data, "max_ratio", parent="tracker", subparent=tag_url,
var_type="float", default_int=-2, default_is_none=True, do_print=False, save=False)
tracker['max_seeding_time'] = self.util.check_for_attribute(self.data, "max_seeding_time", parent="tracker", subparent=tag_url,
@ -292,11 +293,12 @@ class Config:
return (tracker)
if tracker['url']:
default_tag = tracker['url'].split('/')[2].split(':')[0]
tracker['tag'] = self.util.check_for_attribute(self.data, "tag", parent="tracker", subparent=default_tag, default=default_tag)
tracker['tag'] = self.util.check_for_attribute(self.data, "tag", parent="tracker", subparent=default_tag, default=default_tag, var_type="list")
if isinstance(tracker['tag'], str): tracker['tag'] = [tracker['tag']]
try:
self.data['tracker'][default_tag]['tag'] = default_tag
self.data['tracker'][default_tag]['tag'] = [default_tag]
except Exception:
self.data['tracker'][default_tag] = {'tag': default_tag}
self.data['tracker'][default_tag] = {'tag': [default_tag]}
e = (f'No tags matched for {tracker["url"]}. Please check your config.yml file. Setting tag to {default_tag}')
self.notify(e, 'Tag', False)
logger.warning(e)

View file

@ -202,10 +202,10 @@ class Qbt:
if torrent.tags == '' or (len([x for x in check_tags if x not in ignore_tags]) == 0):
tracker = self.config.get_tags([x.url for x in torrent.trackers if x.url.startswith('http')])
if tracker["tag"]:
num_tags += 1
num_tags += len(tracker["tag"])
body = []
body += print_line(util.insert_space(f'Torrent Name: {torrent.name}', 3), loglevel)
body += print_line(util.insert_space(f'New Tag: {tracker["tag"]}', 8), loglevel)
body += print_line(util.insert_space(f'New Tag{"s" if len(tracker["tag"]) > 1 else ""}: {", ".join(tracker["tag"])}', 8), loglevel)
body += print_line(util.insert_space(f'Tracker: {tracker["url"]}', 8), loglevel)
body.extend(self.set_tags_and_limits(torrent, tracker["max_ratio"], tracker["max_seeding_time"], tracker["limit_upload_speed"], tracker["tag"]))
category = self.config.get_category(torrent.save_path) if torrent.category == '' else torrent.category
@ -215,7 +215,7 @@ class Qbt:
"body": "\n".join(body),
"torrent_name": torrent.name,
"torrent_category": category,
"torrent_tag": tracker["tag"],
"torrent_tag": ", ".join(tracker["tag"]),
"torrent_tracker": tracker["url"],
"notifiarr_indexer": tracker["notifiarr"],
"torrent_max_ratio": tracker["max_ratio"],