Qbittorrent cleaner that deletes torrents based on age, categories, domains and tags.
Go to file
jblu 65598d97ac
All checks were successful
continuous-integration/drone/push Build is passing
enabled drone
2023-06-06 15:17:31 -05:00
.dockerignore added drone support 2023-06-06 14:33:07 -05:00
.drone.yml enabled drone 2023-06-06 15:17:31 -05:00
.gitignore added docker support 2023-06-04 13:05:26 -05:00
AppriseClient.py added docker support 2023-06-04 13:05:26 -05:00
config.toml.example added docker support 2023-06-04 13:05:26 -05:00
crontab added docker support 2023-06-04 13:05:26 -05:00
Dockerfile added docker support 2023-06-04 13:05:26 -05:00
entrypoint.sh added docker support 2023-06-04 13:05:26 -05:00
LICENSE added docker support 2023-06-04 13:05:26 -05:00
pushover.py added docker support 2023-06-04 13:05:26 -05:00
qbit-maid.py added health check support 2023-06-05 23:51:49 -05:00
qlist.py added docker support 2023-06-04 13:05:26 -05:00
qlogging.py added health check support 2023-06-05 23:51:49 -05:00
qprocess.py added docker support 2023-06-04 13:05:26 -05:00
README.md added docker support 2023-06-04 13:05:26 -05:00
requirements.txt added docker support 2023-06-04 13:05:26 -05:00
test_dragnet.py added docker support 2023-06-04 13:05:26 -05:00
test_qbitmaid.py added docker support 2023-06-04 13:05:26 -05:00

qbit-maid

Warning: This application removes torrents that are over the minimum age and that are not part of the ignored categories, domains or tags. Please use the delete_torrents feature set to false when first testing its functionality.

The objective is to remove torrents based on the following criteria:

  • tracker domain name
  • age
  • ratio
  • state
graph TD;
    qbit-maid.py-->qlogging.py;
    qbit-maid.py-->qlist.py;
    qbit-maid.py-->qprocess.py;
    qlogging.py-->qbit-maid.py;
    qlist.py-->qbit-maid.py;
    qprocess.py-->qbit-maid.py;
File Purpose
qbit-maid.py Client to the qbit api and calls functions from the other files
qlist.py Builds out torrent lists
qlogging.py Logging and push notification communication
qprocess.py Submits qualifying torrents for deletion
test_qbitmaid.py Unit tests
ignored_categories.json whitelist for categorys to ignore
ignored_tags.json whitelist for torrent tags to ignore
ignored_trackers.json whitelist of fqdn names to ignore

You will need a config.json in the root directory.

Key Value
host string, ip or hostname of qbittorrent server
port number, port of admin gui(used for api aswell)
username admin account for qbittorrent
password password for admin account
log_level 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
log_path 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
minimum_age age in seconds torrents should reached before they are removed
use_pushover true or false to enable or disable pushover notification summary
use_log true or false to enable or disable writing to alog file
po_key pushover key
po_token pushover api token
delete_torrents true or false to enable or disable deletion. Useful for dry-runs
enable_dragnet true or false to enable dragnet functionality. Useful for debugging

It should look something like this: Config.json

{
    "host": "192.168.1.1",
    "port": 8080,
    "username": "admin",
    "password": "admin",
    "loglevel": "INFO",
    "logpath": "./qc.log",
    "protected_tag": "ipt",
    "non_protected_tag": "public",
    "age": 2419200,
    "minimum_age": 432000,
    "use_pushover": false,
    "use_log": true,
    "po_key": "",
    "po_token": "",
    "delete_torrents": false
    "enable_dragnet": false,
    "dragnet_outfile": "./orphaned.csv"
}

You will need a ignored_categories.json in the root directory. This will ignore any of the categories found in the values of the entries.

{
    "example": "general",
    "example2": "sonarr"
}

You will need a ignored_domains.json in the root directory. This will ignore any torrents from these trackers.

{
"iptorrents-empirehost": "ssl.empirehost.me",
"iptorrents-stackoverflow": "localhost.stackoverflow.tech",
"iptorrents-bgp": "routing.bgp.technology"
}

You will need a ignored_tags.json in the root directory. This will ignore any torrents with these tags.

{
"first":"first",
"second":"second",
"third":"third"
}