StuffAnThings / qbit_manage

This tool will help manage tedious tasks in qBittorrent and automate them. Tag, categorize, remove Orphaned data, remove unregistered torrents and much much more.
MIT License
639 stars 42 forks source link

[Bug]: Uncaught excpetion in tag_nohardlinks #540

Closed bbtufty closed 2 months ago

bbtufty commented 2 months ago

Describe the Bug

Just updated to the latest develop version, getting the error:

[2024-05-02 07:24:16,906] [my_except_hook:362]        [CRITICAL] | Uncaught Exception                                                                                 |
Traceback (most recent call last):
  File "/app/qbit_manage.py", line 645, in <module>
    start_loop()
  File "/app/qbit_manage.py", line 384, in start_loop
    start()
  File "/app/qbit_manage.py", line 484, in start
    no_hardlinks = TagNoHardLinks(qbit_manager)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/modules/core/tag_nohardlinks.py", line 27, in __init__
    self.tag_nohardlinks()
  File "/app/modules/core/tag_nohardlinks.py", line 109, in tag_nohardlinks
    if any(util.is_tag_in_torrent(tag, torrent.tags) for tag in nohardlinks[category]["exclude_tags"]):
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: 'NoneType' object is not iterable

This was working yesterday, so must be to do with latest changes

Config

No response

Logs

https://gist.github.com/bbtufty/0599a75321b509d43f163daa0253dfd0

Screenshots

No response

Installation

Docker

Version Number

4.1.3-develop9

What branch are you on?

develop

bobokun commented 2 months ago

Please share your config too

bbtufty commented 2 months ago
# This is an example configuration file that documents all the options.
# It will need to be modified for your specific use case.
# Please refer to the link below for more details on how to set up the configuration file
# https://github.com/StuffAnThings/qbit_manage/wiki/Config-Setup

commands:
  # The commands defined below will IGNORE any commands used in command line and docker env variables.
  dry_run: false
  cross_seed: false
  recheck: false
  cat_update: true
  tag_update: true
  rem_unregistered: true
  tag_tracker_error: true
  rem_orphaned: false
  tag_nohardlinks: true
  skip_cleanup: false
  share_limits: true
  skip_qb_version_check: false

qbt:
  # qBittorrent parameters
  host: REDACT
  user: REDACT
  pass: REDACT

settings:
  force_auto_tmm: true  # Will force qBittorrent to enable Automatic Torrent Management for each torrent.
  tracker_error_tag: issue  # Will set the tag of any torrents that do not have a working tracker.
  ignoreTags_OnUpdate: # When running tag-update function, it will update torrent tags for a given torrent even if the torrent has one or more of the tags defined here.
  - noHL
  - issue
  - cross-seed
  nohardlinks_tag: noHL
  share_limits_tag: ~share_limit
  cross_seed_tag: cross-seed
  cat_filter_completed: true
  share_limits_filter_completed: true
  tag_nohardlinks_filter_completed: true
  share_limits_min_seeding_time_tag: MinSeedTimeNotReached
  share_limits_min_num_seeds_tag: MinSeedsNotMet
  share_limits_last_active_tag: LastActiveLimitNotReached
  force_retag_all: false
directory:
  # Do not remove these
  # Cross-seed var: </your/path/here/>  # Output directory of cross-seed
  # root_dir var: </your/path/here/>  # Root downloads directory used to check for orphaned files, noHL, and RecycleBin.
  # <OPTIONAL> remote_dir var: </your/path/here/>  # Path of docker host mapping of root_dir.
  # Must be set if you're running qbit_manage locally and qBittorrent/cross_seed is in a docker
  # <OPTIONAL> recycle_bin var: </your/path/here/>   # Path of the RecycleBin folder. Default location is set to remote_dir/.RecycleBin
  # <OPTIONAL> torrents_dir var: </your/path/here/>  # Path of the your qbittorrent torrents directory. Required for `save_torrents` attribute in recyclebin

  #cross_seed: "/your/path/here/"
  root_dir: /data/torrents
  remote_dir: /data/torrents
  cross_seed:
  orphaned_dir: /data/orphaned_data
  recycle_bin: /data/.RecycleBin
  torrents_dir: /torrents

cat:
  # Category & Path Parameters
  # <Category Name> : <save_path>  # Path of your save directory.

  complete: /data/torrents/complete/

  # mam
  mam_freeleech: /data/torrents/complete/mam_freeleech
  mam_imported_audiobooks: /data/torrents/complete/mam_imported_audiobooks
  mam_imported_comics_marvel: /data/torrents/complete/mam_imported_comics_marvel
  mam_imported_ebooks: /data/torrents/complete/mam_imported_ebooks
  mam_to_import_audiobooks: /data/torrents/complete/mam_to_import_audiobooks
  mam_to_import_comics_marvel: /data/torrents/complete/mam_to_import_comics_marvel
  mam_to_import_ebooks: /data/torrents/complete/mam_to_import_ebooks

  # radarr
  radarr-qbittorrent-vol1: /data/torrents/complete/radarr_qbittorrent
  radarr-qbittorrent-vol1.cross-seed: /data/torrents/complete/radarr_qbittorrent
  radarr-qbittorrent-vol2: /data_vol_2/torrents/complete/radarr_qbittorrent
  radarr-qbittorrent-vol2.cross-seed: /data_vol_2/torrents/complete/radarr_qbittorrent

  # sonarr
  sonarr-qbittorrent-vol1: /data/torrents/complete/sonarr_qbittorrent
  sonarr-qbittorrent-vol1.cross-seed: /data/ctorrents/omplete/sonarr_qbittorrent
  sonarr-qbittorrent-vol2: /data_vol_2/torrents/complete/sonarr_qbittorrent
  sonarr-qbittorrent-vol2.cross-seed: /data_vol_2/torrents/complete/sonarr_qbittorrent

  # readarr
  readarr-audio-qbittorrent-vol1: /data/torrents/complete/readarr_audio_qbittorrent
  readarr-ebooks-qbittorrent-vol1: /data/torrents/complete/readarr_ebooks_qbittorrent

  # prowlarr
  prowlarr-qbittorrent-vol1: /data/torrents/complete/prowlarr_qbittorrent
  prowlarr-qbittorrent-vol1.cross-seed: /data/torrents/complete/prowlarr_qbittorrent

  # lidarr
  lidarr-qbittorrent-vol2: /data_vol_2/torrents/complete/lidarr_qbittorrent

  # FL
  pt-fl-vol1: /data/torrents/complete/pt_fl
  pt-fl-vol1.cross-seed: /data/torrents/complete/pt_fl

cat_change:
  # This moves all the torrents from one category to another category. This executes on --cat-update
  # WARNING: if the paths are different and Default Torrent Management Mode is set to automatic the files could be moved !!!
  # <Old Category Name> : <New Category>

tracker:
  # Tag Parameters
  # <Tracker URL Keyword>:    # <MANDATORY> This is the keyword in the tracker url
  # <MANDATORY> Set tag name. Can be a list of tags or a single tag
  #   tag: <Tag Name>
  # <OPTIONAL> Will set the torrent Maximum share ratio until torrent is stopped from seeding/uploading. -2 means the global limit should be used, -1 means no limit.
  #   max_ratio: 5.0
  # <OPTIONAL> Will set the torrent Maximum seeding time (min) until torrent is stopped from seeding. -2 means the global limit should be used, -1 means no limit.
  #   max_seeding_time: 129600
  # <OPTIONAL> Will limit the upload speed KiB/s (KiloBytes/second) (-1 sets the limit to infinity)
  #   limit_upload_speed: 150
  # <OPTIONAL> Set this to the notifiarr react name. This is used to add indexer reactions to the notifications sent by Notifiarr
  #   notifiarr: <notifiarr indexer>
  tracker:
    tag: tag
    notifiarr: tag

share_limits:
  # Control how torrent share limits are set depending on the priority of your grouping
  # Each torrent will be matched with the share limit group with the highest priority that meets the group filter criteria.
  # Each torrent can only be matched with one share limit group
  # This variable is mandatory and is a text defining the name of your grouping. This can be any string you want
  noHL:
    # <MANDATORY> priority: <int/float> # This is the priority of your grouping. The lower the number the higher the priority
    priority: 99
    # <OPTIONAL> include_all_tags: <list> # Filter the group based on one or more tags. Multiple include_all_tags are checked with an AND condition
    # All tags defined here must be present in the torrent for it to be included in this group
    include_all_tags:
    - noHL
    # <OPTIONAL> include_any_tags: <list> # Filter the group based on one or more tags. Multiple include_any_tags are checked with an OR condition
    # Any tags defined here must be present in the torrent for it to be included in this group
    include_any_tags:
    - noHL
    # <OPTIONAL> exclude_all_tags: <list> # Filter by excluding one or more tags. Multiple exclude_all_tags are checked with an AND condition
    # This is useful to combine with the category filter to exclude one or more tags from an entire category
    # All tags defined here must be present in the torrent for it to be excluded in this group
    exclude_all_tags:
    - Beyond-HD
    # <OPTIONAL> exclude_any_tags: <list> # Filter by excluding one or more tags. Multiple exclude_any_tags are checked with an OR condition
    # This is useful to combine with the category filter to exclude one or more tags from an entire category
    # Any tags defined here must be present in the torrent for it to be excluded in this group
    exclude_any_tags:
    - Beyond-HD
    # <OPTIONAL> categories: <list> # Filter by including one or more categories. Multiple categories are checked with an OR condition
    # Since one torrent can only be associated with a single category, multiple categories are checked with an OR condition
    categories:
    - radarr-qbittorrent-vol1
    - radarr-qbittorrent-vol2
    - radarr-qbittorrent-vol1.cross-seed
    - radarr-qbittorrent-vol2.cross-seed
    - sonarr-qbittorrent-vol1
    - sonarr-qbittorrent-vol2
    - sonarr-qbittorrent-vol1.cross-seed
    - sonarr-qbittorrent-vol2.cross-seed
    - lidarr-qbittorrent-vol2
    - pt-fl-vol1
    - pt-fl-vol1.cross-seed
    # <OPTIONAL> max_ratio <float>: Will set the torrent Maximum share ratio until torrent is stopped from seeding/uploading.
    # Will default to -1 (no limit) if not specified for the group.
    #max_ratio: 5.0
    # <OPTIONAL> max_seeding_time <int>: Will set the torrent Maximum seeding time (minutes) until torrent is stopped from seeding.
    # Will default to -1 (no limit) if not specified for the group.
    #max_seeding_time: 43200
    max_seeding_time: 23040
    # <OPTIONAL> min_seeding_time <int>: Will prevent torrent deletion by cleanup variable if torrent has not yet minimum seeding time (minutes).
    # If the torrent has not yet reached this minimum seeding time, it will change the share limits back to no limits and resume the torrent to continue seeding.
    # Will default to 0 if not specified for the group.
    #min_seeding_time: 43200
    # <OPTIONAL> Limit Upload Speed <int>: Will limit the upload speed KiB/s (KiloBytes/second) (`-1` : No Limit)
    #limit_upload_speed: 0
    # <OPTIONAL> cleanup <bool>: WARNING!! Setting this as true Will remove and delete contents of any torrents that satisfies the share limits
    cleanup: true
    # <OPTIONAL> resume_torrent_after_change <bool>: This variable will resume your torrent after changing share limits. Default is true
    resume_torrent_after_change: true
    # <OPTIONAL> add_group_to_tag <bool>: This adds your grouping as a tag with a prefix defined in settings . Default is true
    # Example: A grouping defined as noHL will have a tag set to ~share_limit.noHL (if using the default prefix)
    add_group_to_tag: false
    # <OPTIONAL> min_num_seeds <int>: This will prevent torrent deletion by cleanup variable if the number of seeds is less than the value set here.
    # If the torrent has less number of seeds than the min_num_seeds, the share limits will be changed back to no limits and resume the torrent to continue seeding.
    # Will default to 0 if not specified for the group.
    #min_num_seeds: 0

  blu:
    # <MANDATORY> priority: <int/float> # This is the priority of your grouping. The lower the number the higher the priority
    priority: 1
    include_all_tags:
    - Blutopia
    - noHL
    exclude_all_tags:
    - Beyond-HD
    exclude_any_tags:
    - Beyond-HD
    categories:
    - radarr-qbittorrent-vol1
    - radarr-qbittorrent-vol2
    - radarr-qbittorrent-vol1.cross-seed
    - radarr-qbittorrent-vol2.cross-seed
    - sonarr-qbittorrent-vol1
    - sonarr-qbittorrent-vol2
    - sonarr-qbittorrent-vol1.cross-seed
    - sonarr-qbittorrent-vol2.cross-seed
    - lidarr-qbittorrent-vol2
    - pt-fl-vol1
    - pt-fl-vol1.cross-seed
    max_seeding_time: 87840 # 61 days, to get at BluCollector
    cleanup: true
    resume_torrent_after_change: true
    add_group_to_tag: false

  default:
    priority: 999
    add_group_to_tag: false
    max_ratio: -1
    max_seeding_time: -1
    cleanup: false

nohardlinks:
  # Tag Movies/Series that are not hard linked
  # Mandatory to fill out directory parameter above to use this function (root_dir/remote_dir)
  # This variable should be set to your category name of your completed movies/completed series in qbit. Acceptable variable can be any category you would like to tag if there are no hardlinks found

  radarr-qbittorrent-vol1:
    # <OPTIONAL> exclude_tags var: Will exclude the following tags when searching through the category.
    #exclude_tags: false
    # <OPTIONAL> cleanup var: WARNING!! Setting this as true Will remove and delete contents of any torrents that are in paused state and has the NoHL tag
    cleanup: false
    # <OPTIONAL> max_ratio var: Will set the torrent Maximum share ratio until torrent is stopped from seeding/uploading
    #max_ratio: 4.0
    # <OPTIONAL> max seeding time var: Will set the torrent Maximum seeding time (min) until torrent is stopped from seeding
    #max_seeding_time: 43200
    max_seeding_time: 23040
    # <OPTIONAL> Limit Upload Speed var: Will limit the upload speed KiB/s (KiloBytes/second) (`-1` : No Limit)
    #limit_upload_speed:
    # <OPTIONAL> min seeding time var: Will prevent torrent deletion by cleanup variable if torrent has not yet minimum seeding time (min).
    # Delete this key from a category's config to use the tracker's configured min_seeding_time. Will default to 0 if not specified for the category or tracker.
    #min_seeding_time: 43200
    # <OPTIONAL> resume_torrent_after_untagging_noHL var: If a torrent was previously tagged as NoHL and now has hardlinks, this variable will resume your torrent after restoring original share limits
    resume_torrent_after_untagging_noHL: false
    #exclude_tags:
    #max_ratio: -1
    #max_seeding_time:
    #min_seeding_time:
    #limit_upload_speed:
    exclude_tags:

  radarr-qbittorrent-vol2:
    # <OPTIONAL> exclude_tags var: Will exclude the following tags when searching through the category.
    #exclude_tags: false
    # <OPTIONAL> cleanup var: WARNING!! Setting this as true Will remove and delete contents of any torrents that are in paused state and has the NoHL tag
    cleanup: false
    # <OPTIONAL> max_ratio var: Will set the torrent Maximum share ratio until torrent is stopped from seeding/uploading
    #max_ratio: 4.0
    # <OPTIONAL> max seeding time var: Will set the torrent Maximum seeding time (min) until torrent is stopped from seeding
    #max_seeding_time: 43200
    max_seeding_time: 23040
    # <OPTIONAL> Limit Upload Speed var: Will limit the upload speed KiB/s (KiloBytes/second) (`-1` : No Limit)
    #limit_upload_speed:
    # <OPTIONAL> min seeding time var: Will prevent torrent deletion by cleanup variable if torrent has not yet minimum seeding time (min).
    # Delete this key from a category's config to use the tracker's configured min_seeding_time. Will default to 0 if not specified for the category or tracker.
    #min_seeding_time: 43200
    # <OPTIONAL> resume_torrent_after_untagging_noHL var: If a torrent was previously tagged as NoHL and now has hardlinks, this variable will resume your torrent after restoring original share limits
    resume_torrent_after_untagging_noHL: false
    #exclude_tags:
    #max_ratio: -1
    #max_seeding_time:
    #min_seeding_time:
    #limit_upload_speed:
    exclude_tags:

  radarr-qbittorrent-vol1.cross-seed:
    # <OPTIONAL> exclude_tags var: Will exclude the following tags when searching through the category.
    #exclude_tags: false
    # <OPTIONAL> cleanup var: WARNING!! Setting this as true Will remove and delete contents of any torrents that are in paused state and has the NoHL tag
    cleanup: false
    # <OPTIONAL> max_ratio var: Will set the torrent Maximum share ratio until torrent is stopped from seeding/uploading
    #max_ratio: 4.0
    # <OPTIONAL> max seeding time var: Will set the torrent Maximum seeding time (min) until torrent is stopped from seeding
    #max_seeding_time: 43200
    max_seeding_time: 23040
    # <OPTIONAL> Limit Upload Speed var: Will limit the upload speed KiB/s (KiloBytes/second) (`-1` : No Limit)
    #limit_upload_speed:
    # <OPTIONAL> min seeding time var: Will prevent torrent deletion by cleanup variable if torrent has not yet minimum seeding time (min).
    # Delete this key from a category's config to use the tracker's configured min_seeding_time. Will default to 0 if not specified for the category or tracker.
    #min_seeding_time: 43200
    # <OPTIONAL> resume_torrent_after_untagging_noHL var: If a torrent was previously tagged as NoHL and now has hardlinks, this variable will resume your torrent after restoring original share limits
    resume_torrent_after_untagging_noHL: false
    #exclude_tags:
    #max_ratio: -1
    #max_seeding_time:
    #min_seeding_time:
    #limit_upload_speed:
    exclude_tags:

  radarr-qbittorrent-vol2.cross-seed:
    # <OPTIONAL> exclude_tags var: Will exclude the following tags when searching through the category.
    #exclude_tags: false
    # <OPTIONAL> cleanup var: WARNING!! Setting this as true Will remove and delete contents of any torrents that are in paused state and has the NoHL tag
    cleanup: false
    # <OPTIONAL> max_ratio var: Will set the torrent Maximum share ratio until torrent is stopped from seeding/uploading
    #max_ratio: 4.0
    # <OPTIONAL> max seeding time var: Will set the torrent Maximum seeding time (min) until torrent is stopped from seeding
    #max_seeding_time: 43200
    max_seeding_time: 23040
    # <OPTIONAL> Limit Upload Speed var: Will limit the upload speed KiB/s (KiloBytes/second) (`-1` : No Limit)
    #limit_upload_speed:
    # <OPTIONAL> min seeding time var: Will prevent torrent deletion by cleanup variable if torrent has not yet minimum seeding time (min).
    # Delete this key from a category's config to use the tracker's configured min_seeding_time. Will default to 0 if not specified for the category or tracker.
    #min_seeding_time: 43200
    # <OPTIONAL> resume_torrent_after_untagging_noHL var: If a torrent was previously tagged as NoHL and now has hardlinks, this variable will resume your torrent after restoring original share limits
    resume_torrent_after_untagging_noHL: false
    #exclude_tags:
    #max_ratio: -1
    #max_seeding_time:
    #min_seeding_time:
    #limit_upload_speed:
    exclude_tags:

  sonarr-qbittorrent-vol1:
    # <OPTIONAL> exclude_tags var: Will exclude the following tags when searching through the category.
    #exclude_tags: false
    # <OPTIONAL> cleanup var: WARNING!! Setting this as true Will remove and delete contents of any torrents that are in paused state and has the NoHL tag
    cleanup: false
    # <OPTIONAL> max_ratio var: Will set the torrent Maximum share ratio until torrent is stopped from seeding/uploading
    #max_ratio: 4.0
    # <OPTIONAL> max seeding time var: Will set the torrent Maximum seeding time (min) until torrent is stopped from seeding
    #max_seeding_time: 43200
    max_seeding_time: 23040
    # <OPTIONAL> Limit Upload Speed var: Will limit the upload speed KiB/s (KiloBytes/second) (`-1` : No Limit)
    #limit_upload_speed:
    # <OPTIONAL> min seeding time var: Will prevent torrent deletion by cleanup variable if torrent has not yet minimum seeding time (min).
    # Delete this key from a category's config to use the tracker's configured min_seeding_time. Will default to 0 if not specified for the category or tracker.
    #min_seeding_time: 43200
    # <OPTIONAL> resume_torrent_after_untagging_noHL var: If a torrent was previously tagged as NoHL and now has hardlinks, this variable will resume your torrent after restoring original share limits
    resume_torrent_after_untagging_noHL: false
    #exclude_tags:
    #max_ratio: -1
    #max_seeding_time:
    #min_seeding_time:
    #limit_upload_speed:
    exclude_tags:

  sonarr-qbittorrent-vol2:
    # <OPTIONAL> exclude_tags var: Will exclude the following tags when searching through the category.
    #exclude_tags: false
    # <OPTIONAL> cleanup var: WARNING!! Setting this as true Will remove and delete contents of any torrents that are in paused state and has the NoHL tag
    cleanup: false
    # <OPTIONAL> max_ratio var: Will set the torrent Maximum share ratio until torrent is stopped from seeding/uploading
    #max_ratio: 4.0
    # <OPTIONAL> max seeding time var: Will set the torrent Maximum seeding time (min) until torrent is stopped from seeding
    #max_seeding_time: 43200
    max_seeding_time: 23040
    # <OPTIONAL> Limit Upload Speed var: Will limit the upload speed KiB/s (KiloBytes/second) (`-1` : No Limit)
    #limit_upload_speed:
    # <OPTIONAL> min seeding time var: Will prevent torrent deletion by cleanup variable if torrent has not yet minimum seeding time (min).
    # Delete this key from a category's config to use the tracker's configured min_seeding_time. Will default to 0 if not specified for the category or tracker.
    #min_seeding_time: 43200
    # <OPTIONAL> resume_torrent_after_untagging_noHL var: If a torrent was previously tagged as NoHL and now has hardlinks, this variable will resume your torrent after restoring original share limits
    resume_torrent_after_untagging_noHL: false
    #exclude_tags:
    #max_ratio: -1
    #max_seeding_time:
    #min_seeding_time:
    #limit_upload_speed:
    exclude_tags:

  sonarr-qbittorrent-vol1.cross-seed:
    # <OPTIONAL> exclude_tags var: Will exclude the following tags when searching through the category.
    #exclude_tags: false
    # <OPTIONAL> cleanup var: WARNING!! Setting this as true Will remove and delete contents of any torrents that are in paused state and has the NoHL tag
    cleanup: false
    # <OPTIONAL> max_ratio var: Will set the torrent Maximum share ratio until torrent is stopped from seeding/uploading
    #max_ratio: 4.0
    # <OPTIONAL> max seeding time var: Will set the torrent Maximum seeding time (min) until torrent is stopped from seeding
    #max_seeding_time: 43200
    max_seeding_time: 23040
    # <OPTIONAL> Limit Upload Speed var: Will limit the upload speed KiB/s (KiloBytes/second) (`-1` : No Limit)
    #limit_upload_speed:
    # <OPTIONAL> min seeding time var: Will prevent torrent deletion by cleanup variable if torrent has not yet minimum seeding time (min).
    # Delete this key from a category's config to use the tracker's configured min_seeding_time. Will default to 0 if not specified for the category or tracker.
    #min_seeding_time: 43200
    # <OPTIONAL> resume_torrent_after_untagging_noHL var: If a torrent was previously tagged as NoHL and now has hardlinks, this variable will resume your torrent after restoring original share limits
    resume_torrent_after_untagging_noHL: false
    #exclude_tags:
    #max_ratio: -1
    #max_seeding_time:
    #min_seeding_time:
    #limit_upload_speed:
    exclude_tags:

  sonarr-qbittorrent-vol2.cross-seed:
    # <OPTIONAL> exclude_tags var: Will exclude the following tags when searching through the category.
    #exclude_tags: false
    # <OPTIONAL> cleanup var: WARNING!! Setting this as true Will remove and delete contents of any torrents that are in paused state and has the NoHL tag
    cleanup: false
    # <OPTIONAL> max_ratio var: Will set the torrent Maximum share ratio until torrent is stopped from seeding/uploading
    #max_ratio: 4.0
    # <OPTIONAL> max seeding time var: Will set the torrent Maximum seeding time (min) until torrent is stopped from seeding
    #max_seeding_time: 43200
    max_seeding_time: 23040
    # <OPTIONAL> Limit Upload Speed var: Will limit the upload speed KiB/s (KiloBytes/second) (`-1` : No Limit)
    #limit_upload_speed:
    # <OPTIONAL> min seeding time var: Will prevent torrent deletion by cleanup variable if torrent has not yet minimum seeding time (min).
    # Delete this key from a category's config to use the tracker's configured min_seeding_time. Will default to 0 if not specified for the category or tracker.
    #min_seeding_time: 43200
    # <OPTIONAL> resume_torrent_after_untagging_noHL var: If a torrent was previously tagged as NoHL and now has hardlinks, this variable will resume your torrent after restoring original share limits
    resume_torrent_after_untagging_noHL: false
    #exclude_tags:
    #max_ratio: -1
    #max_seeding_time:
    #min_seeding_time:
    #limit_upload_speed:
    exclude_tags:

  pt-fl-vol1:
    # <OPTIONAL> exclude_tags var: Will exclude the following tags when searching through the category.
    #exclude_tags: false
    # <OPTIONAL> cleanup var: WARNING!! Setting this as true Will remove and delete contents of any torrents that are in paused state and has the NoHL tag
    cleanup: false
    # <OPTIONAL> max_ratio var: Will set the torrent Maximum share ratio until torrent is stopped from seeding/uploading
    #max_ratio: 4.0
    # <OPTIONAL> max seeding time var: Will set the torrent Maximum seeding time (min) until torrent is stopped from seeding
    #max_seeding_time: 43200
    max_seeding_time: 23040
    # <OPTIONAL> Limit Upload Speed var: Will limit the upload speed KiB/s (KiloBytes/second) (`-1` : No Limit)
    #limit_upload_speed:
    # <OPTIONAL> min seeding time var: Will prevent torrent deletion by cleanup variable if torrent has not yet minimum seeding time (min).
    # Delete this key from a category's config to use the tracker's configured min_seeding_time. Will default to 0 if not specified for the category or tracker.
    #min_seeding_time: 43200
    # <OPTIONAL> resume_torrent_after_untagging_noHL var: If a torrent was previously tagged as NoHL and now has hardlinks, this variable will resume your torrent after restoring original share limits
    resume_torrent_after_untagging_noHL: false
    #exclude_tags:
    #max_ratio: -1
    #max_seeding_time:
    #min_seeding_time:
    #limit_upload_speed:
    exclude_tags:

  pt-fl-vol1.cross-seed:
    # <OPTIONAL> exclude_tags var: Will exclude the following tags when searching through the category.
    #exclude_tags: false
    # <OPTIONAL> cleanup var: WARNING!! Setting this as true Will remove and delete contents of any torrents that are in paused state and has the NoHL tag
    cleanup: false
    # <OPTIONAL> max_ratio var: Will set the torrent Maximum share ratio until torrent is stopped from seeding/uploading
    #max_ratio: 4.0
    # <OPTIONAL> max seeding time var: Will set the torrent Maximum seeding time (min) until torrent is stopped from seeding
    #max_seeding_time: 43200
    max_seeding_time: 23040
    # <OPTIONAL> Limit Upload Speed var: Will limit the upload speed KiB/s (KiloBytes/second) (`-1` : No Limit)
    #limit_upload_speed:
    # <OPTIONAL> min seeding time var: Will prevent torrent deletion by cleanup variable if torrent has not yet minimum seeding time (min).
    # Delete this key from a category's config to use the tracker's configured min_seeding_time. Will default to 0 if not specified for the category or tracker.
    #min_seeding_time: 43200
    # <OPTIONAL> resume_torrent_after_untagging_noHL var: If a torrent was previously tagged as NoHL and now has hardlinks, this variable will resume your torrent after restoring original share limits
    resume_torrent_after_untagging_noHL: false
    #exclude_tags:
    #max_ratio: -1
    #max_seeding_time:
    #min_seeding_time:
    #limit_upload_speed:
    exclude_tags:

  lidarr-qbittorrent-vol2:
    # <OPTIONAL> exclude_tags var: Will exclude the following tags when searching through the category.
    #exclude_tags: false
    # <OPTIONAL> cleanup var: WARNING!! Setting this as true Will remove and delete contents of any torrents that are in paused state and has the NoHL tag
    cleanup: false
    # <OPTIONAL> max_ratio var: Will set the torrent Maximum share ratio until torrent is stopped from seeding/uploading
    #max_ratio: 4.0
    # <OPTIONAL> max seeding time var: Will set the torrent Maximum seeding time (min) until torrent is stopped from seeding
    #max_seeding_time: 43200
    max_seeding_time: 23040
    # <OPTIONAL> Limit Upload Speed var: Will limit the upload speed KiB/s (KiloBytes/second) (`-1` : No Limit)
    #limit_upload_speed:
    # <OPTIONAL> min seeding time var: Will prevent torrent deletion by cleanup variable if torrent has not yet minimum seeding time (min).
    # Delete this key from a category's config to use the tracker's configured min_seeding_time. Will default to 0 if not specified for the category or tracker.
    #min_seeding_time: 43200
    # <OPTIONAL> resume_torrent_after_untagging_noHL var: If a torrent was previously tagged as NoHL and now has hardlinks, this variable will resume your torrent after restoring original share limits
    resume_torrent_after_untagging_noHL: false
    #exclude_tags:
    #max_ratio: -1
    #max_seeding_time:
    #min_seeding_time:
    #limit_upload_speed:
    exclude_tags:

recyclebin:
  # Recycle Bin method of deletion will move files into the recycle bin (Located in /root_dir/.RecycleBin) instead of directly deleting them in qbit
  # By default the Recycle Bin will be emptied on every run of the qbit_manage script if empty_after_x_days is defined.
  enabled: false
  # <OPTIONAL> empty_after_x_days var: 
  # Will automatically remove all files and folders in recycle bin after x days. (Checks every script run)
  # If this variable is not defined it, the RecycleBin will never be emptied.
  # WARNING: Setting this variable to 0 will delete all files immediately upon script run!
  #empty_after_x_days: 
  # <OPTIONAL> save_torrents var:
  # If this option is set to true you MUST fill out the torrents_dir in the directory attribute.
  # This will save a copy of your .torrent and .fastresume file in the recycle bin before deleting it from qbittorrent
  save_torrents: false
  # <OPTIONAL> split_by_category var:
  # This will split the recycle bin folder by the save path defined in the `cat` attribute 
  # and add the base folder name of the recycle bin that was defined in the `recycle_bin` sub-attribute under directory.
  split_by_category: false
  empty_after_x_days:

orphaned:
  # Orphaned files are those in the root_dir download directory that are not referenced by any active torrents.
  # Will automatically remove all files and folders in orphaned data after x days. (Checks every script run)
  # If this variable is not defined it, the orphaned data will never be emptied.
  # WARNING: Setting this variable to 0 will delete all files immediately upon script run!
  empty_after_x_days: 7
  # File patterns that will not be considered orphaned files. Handy for generated files that aren't part of the torrent but belong with the torrent's files
  exclude_patterns:
  - '**/.DS_Store'
  - '**/Thumbs.db'
  - '**/@eaDir'
  - '**/.fuse_hidden*'
  - /data/torrents/temp/**
  - '**/*.!qB'

notifiarr:
  # Notifiarr integration with webhooks
  # Leave Empty/Blank to disable
  # Mandatory to fill out API Key
  apikey: REDACT
  # <OPTIONAL> Set to a unique value (could be your username on notifiarr for example)
  instance: qbit_manage

webhooks:
  # Webhook notifications:
  # Possible values:
  # Set value to notifiarr if using notifiarr integration
  # Set value to apprise if using apprise integration
  # Set value to a valid webhook URL
  # Leave Empty/Blank to disable
  error: notifiarr
  run_start: notifiarr
  run_end: notifiarr
  function:
    cross_seed:
    recheck:
    cat_update:
    tag_update:
    rem_unregistered: notifiarr
    tag_tracker_error:
    rem_orphaned:
    tag_nohardlinks:
    cleanup_dirs:
    share_limits:

#bhd:
#  # BHD Integration used for checking unregistered torrents
#  apikey: apikey