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
767 stars 47 forks source link

[Bug]: Torrents that were hardlinked via cross-seed aren't being tagged as noHL #363

Closed removinggoose closed 1 year ago

removinggoose commented 1 year ago

Describe the Bug

According to FR #291 , hard links that exist inside the root folder are supposed to be ignored and therefore torrents can still be tagged with noHL if there are none outside the root dir. Perhaps my config is wrong but I am still getting torrents that should be tagged not being tagged because of cross-seed.

An example is a torrent for Chicago Fire Season 9. This torrent is no hard-linked to my media folder but individual episodes have been hard-linked by cross-seed to the folder "cross-seed-data" The original full season pack has then not been tagged as noHL.

Config

# 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: false
  tag_update: true
  rem_unregistered: false
  tag_tracker_error: true
  rem_orphaned: true
  tag_nohardlinks: true
  skip_cleanup: false

  skip_qb_version_check: false
  share_limits: true
qbt:
  # qBittorrent parameters
  host: 
  user: 
  pass: 

settings:
  force_auto_tmm: true
  tracker_error_tag: issue
  nohardlinks_tag: noHL
  share_limits_tag: ~share_limit
  ignoreTags_OnUpdate: # When running tag-update function, it will update torrent tags for a given torrent even if the torrent has at least one or more of the tags defined here. Otherwise torrents will not be tagged if tags exist.
  - noHL
  - issue
  - cross-seed
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: /mnt/user/data/torrents/
  recycle_bin: /mnt/user/data/torrents/.RecycleBin
  orphaned_dir: /mnt/user/data/torrents/orphaned

  torrents_dir:
cat:
  # Category & Path Parameters
  # <Category Name> : <save_path>  # Path of your save directory.
  movies: /data/torrents/movies
  tv: /data/torrents/tv
  movies.cross-seed: /data/torrents/movies
  tv.cross-seed: /data/torrents/tv
  all: /data/torrents/
  music (FL): /data/torrents/music (FL)
  music (L): /data/torrents/music (L)
  music to upload: /data/torrents/music to upload
  seed: /data/torrents/seed
  cross-seed-data: /data/torrents/cross-seed-data
  cross-seed-data.cross-seed: /data/torrents/cross-seed-data
  audiobooks: /data/torrents/audiobooks
  books: /data/torrents/books

tracker:
  # Mandatory
  # 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 ensure that noHL torrents from this tracker are not deleted by cleanup variable if torrent has not yet met the minimum seeding time (min).
  #   min_seeding_time: 2000
  # <OPTIONAL> Will limit the upload speed KiB/s (KiloBytes/second) (-1 means no limit)
  #   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>
  animebytes.tv:
    tag: AnimeBytes
    notifiarr: animebytes
  aither:
    tag: aither
  avistaz:
    tag:
    - Avistaz
    - tag2
    - tag3
  beyond-hd:
    tag: [Beyond-HD, tag2, tag3]
    notifiarr: beyondhd
  blutopia:
    tag: Blutopia
    notifiarr: blutopia
  cartoonchaos:
    tag: CartoonChaos
  digitalcore:
    tag: DigitalCore
    max_ratio: 5.0
    notifiarr: digitalcore
  filelist:
    tag: filelist
  flro:
    tag: filelist
  gazellegames:
    tag: GGn
  hdts:
    tag: HDTorrents
  landof.tv:
    tag: BroadcasTheNet
    notifiarr: broadcasthenet
  myanonamouse:
    tag: MaM
  opsfet:
    tag: orpheus
  nebulance:
    tag: nebulance
  passthepopcorn:
    tag: PassThePopcorn
    notifiarr: passthepopcorn
  privatehd:
    tag: PrivateHD
    notifiarr:
  tleechreload:
    tag: TorrentLeech
    notifiarr: torrentleech
  torrentdb:
    tag: TorrentDB
    notifiarr: torrentdb
  torrentleech:
    tag: TorrentLeech
    notifiarr: torrentleech
  tv-vault:
    tag: TV-Vault
  uhdbits:
    tag: uhdbits

  # The "other" key is a special keyword and if defined will tag any other trackers that don't match the above trackers into this tag
  other:
    tag: other

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
  movies:
    # <OPTIONAL> exclude_tags var: Will exclude torrents with any of the following tags when searching through the category.
    exclude_tags:
    - Beyond-HD
    - AnimeBytes
    - MaM
    - orpheus

  tv:
    # <OPTIONAL> exclude_tags var: Will exclude torrents with any of the following tags when searching through the category.
    exclude_tags:
    - Beyond-HD
    - BroadcasTheNet
    - MaM
    - orpheus

  movies.cross-seed:
    # <OPTIONAL> exclude_tags var: Will exclude torrents with any of the following tags when searching through the category.
    exclude_tags:
    - Beyond-HD
    - AnimeBytes
    - MaM
    - orpheus
  tv.cross-seed:
    # <OPTIONAL> exclude_tags var: Will exclude torrents with any of the following tags when searching through the category.
    exclude_tags:
    - Beyond-HD
    - BroadcasTheNet
    - MaM
    - orpheus

  cross-seed-data:
    # <OPTIONAL> exclude_tags var: Will exclude torrents with any of the following tags when searching through the category.
    exclude_tags:
    - Beyond-HD
    - BroadcasTheNet
    - MaM
    - orpheus

  cross-seed-data.cross-seed:
    # <OPTIONAL> exclude_tags var: Will exclude torrents with any of the following tags when searching through the category.
    exclude_tags:
    - Beyond-HD
    - BroadcasTheNet
    - MaM
    - orpheus

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_TorrentLeech:
    # <MANDATORY> priority: <int/float> # This is the priority of your grouping. The lower the number the higher the priority
    priority: 1
    # <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
    - TorrentLeech
    # <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
    # <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:
    # <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:
    # <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:
    - tv
    - movies
    - tv.cross-seed
    - movies.cross-seed
    - cross-seed-data
    - cross-seed-data.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: 1.5
    # <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: 11520
    # <OPTIONAL> min_seeding_time <int>: Will prevent torrent deletion by cleanup variable if torrent has not yet minimum seeding time (minutes).
    # Will default to 0 if not specified for the group.
    min_seeding_time:
    # <OPTIONAL> Limit Upload Speed <int>: Will limit the upload speed KiB/s (KiloBytes/second) (`-1` : No Limit)
    limit_upload_speed:
    # <OPTIONAL> cleanup <bool>: WARNING!! Setting this as true Will remove and delete contents of any torrents that satisfies the share limits
    cleanup: false
    # <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 suffix defined in settings . Default is true
    # Example: A grouping defined as noHL will have a tag set to noHL.share_limit (if using the default suffix)
    add_group_to_tag: true

  noHL_aither:
    # <MANDATORY> priority: <int/float> # This is the priority of your grouping. The lower the number the higher the priority
    priority: 2
    # <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
    - aither
    # <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:
    # <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:
    - tv
    - movies
    - tv.cross-seed
    - movies.cross-seed
    - cross-seed-data
    - cross-seed-data.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:
    # <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: 8640
    # <OPTIONAL> min_seeding_time <int>: Will prevent torrent deletion by cleanup variable if torrent has not yet minimum seeding time (minutes).
    # Will default to 0 if not specified for the group.
    min_seeding_time: 7200
    # <OPTIONAL> Limit Upload Speed <int>: Will limit the upload speed KiB/s (KiloBytes/second) (`-1` : No Limit)
    limit_upload_speed:
    # <OPTIONAL> cleanup <bool>: WARNING!! Setting this as true Will remove and delete contents of any torrents that satisfies the share limits
    cleanup: false
    # <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 suffix defined in settings . Default is true
    # Example: A grouping defined as noHL will have a tag set to noHL.share_limit (if using the default suffix)
    add_group_to_tag: true

  noHL_filelist:
    # <MANDATORY> priority: <int/float> # This is the priority of your grouping. The lower the number the higher the priority
    priority: 3
    # <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
    - filelist
    # <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:
    # <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:
    - tv
    - movies
    - tv.cross-seed
    - movies.cross-seed
    - cross-seed-data
    - cross-seed-data.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:
    # <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: 4320
    # <OPTIONAL> min_seeding_time <int>: Will prevent torrent deletion by cleanup variable if torrent has not yet minimum seeding time (minutes).
    # Will default to 0 if not specified for the group.
    min_seeding_time: 240
    # <OPTIONAL> Limit Upload Speed <int>: Will limit the upload speed KiB/s (KiloBytes/second) (`-1` : No Limit)
    limit_upload_speed:
    # <OPTIONAL> cleanup <bool>: WARNING!! Setting this as true Will remove and delete contents of any torrents that satisfies the share limits
    cleanup: false
    # <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 suffix defined in settings . Default is true
    # Example: A grouping defined as noHL will have a tag set to noHL.share_limit (if using the default suffix)
    add_group_to_tag: true

  noHL_Blu:
    # <MANDATORY> priority: <int/float> # This is the priority of your grouping. The lower the number the higher the priority
    priority: 4
    # <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
    - Blutopia
    # <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
    # <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:
    - tv
    - movies
    - tv.cross-seed
    - movies.cross-seed
    - cross-seed-data
    - cross-seed-data.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:
    # <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: 11000
    # <OPTIONAL> min_seeding_time <int>: Will prevent torrent deletion by cleanup variable if torrent has not yet minimum seeding time (minutes).
    # Will default to 0 if not specified for the group.
    min_seeding_time: 11000
    # <OPTIONAL> Limit Upload Speed <int>: Will limit the upload speed KiB/s (KiloBytes/second) (`-1` : No Limit)
    limit_upload_speed:
    # <OPTIONAL> cleanup <bool>: WARNING!! Setting this as true Will remove and delete contents of any torrents that satisfies the share limits
    cleanup: false
    # <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 suffix defined in settings . Default is true
    # Example: A grouping defined as noHL will have a tag set to noHL.share_limit (if using the default suffix)
    add_group_to_tag: true

  noHL_UHDBits:
    # <MANDATORY> priority: <int/float> # This is the priority of your grouping. The lower the number the higher the priority
    priority: 5
    # <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
    - uhdbits
    # <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
    # <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:
    - tv
    - movies
    - tv.cross-seed
    - movies.cross-seed
    - cross-seed-data
    - cross-seed-data.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:
    # <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: 11000
    # <OPTIONAL> min_seeding_time <int>: Will prevent torrent deletion by cleanup variable if torrent has not yet minimum seeding time (minutes).
    # Will default to 0 if not specified for the group.
    min_seeding_time: 11000
    # <OPTIONAL> Limit Upload Speed <int>: Will limit the upload speed KiB/s (KiloBytes/second) (`-1` : No Limit)
    limit_upload_speed:
    # <OPTIONAL> cleanup <bool>: WARNING!! Setting this as true Will remove and delete contents of any torrents that satisfies the share limits
    cleanup: false
    # <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 suffix defined in settings . Default is true
    # Example: A grouping defined as noHL will have a tag set to noHL.share_limit (if using the default suffix)
    add_group_to_tag: true

  noHL_nebulance:
    # <MANDATORY> priority: <int/float> # This is the priority of your grouping. The lower the number the higher the priority
    priority: 6
    # <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
    - nebulance
    # <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
    # <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:
    - tv
    - movies
    - tv.cross-seed
    - movies.cross-seed
    - cross-seed-data
    - cross-seed-data.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:
    # <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: 11000
    # <OPTIONAL> min_seeding_time <int>: Will prevent torrent deletion by cleanup variable if torrent has not yet minimum seeding time (minutes).
    # Will default to 0 if not specified for the group.
    min_seeding_time: 11000
    # <OPTIONAL> Limit Upload Speed <int>: Will limit the upload speed KiB/s (KiloBytes/second) (`-1` : No Limit)
    limit_upload_speed:
    # <OPTIONAL> cleanup <bool>: WARNING!! Setting this as true Will remove and delete contents of any torrents that satisfies the share limits
    cleanup: false
    # <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 suffix defined in settings . Default is true
    # Example: A grouping defined as noHL will have a tag set to noHL.share_limit (if using the default suffix)
    add_group_to_tag: true

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: true
  # <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: 14
  # <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

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'
  - /data/torrents/books/**
  - /data/torrents/audiobooks/**
  - '**/*.!qB'
  - /data/torrents/temp/**
  - '**/_unpackerred'

webhooks:
  error:
  run_start:
  run_end:
  function:
    cross_seed:
    recheck:
    cat_update:
    tag_update:
    rem_unregistered:
    tag_tracker_error:
    rem_orphaned:
    tag_nohardlinks:
    cleanup_dirs:
    share_limits:

Logs

https://gist.github.com/removinggoose/43f9b91800fbc96b916d598a57e5bf54

Screenshots

image

Installation

Unraid

Version Number

4.0.2

What branch are you on?

master

bakerboy448 commented 1 year ago

ls -lha showing that the files are not hard linked?

cross seed data would symlink or hardlink them and only hardlink is supported with QBm. It's expected for cross-seed data hardlinked episodes to well, be hardlinked

removinggoose commented 1 year ago

Yes there are hard links but according to FR #291 i was of the understanding that if there are no hard links outside of the root dir, which there aren’t, then it should be marked as noHL

bakerboy448 commented 1 year ago

Again please provide the information requested.

stat with the ionodes from the individual episodes in client, the season pack in client, and the library episodes would confirm.

it is 100% possible and likely that the season pack and individual episodes are both hardlinked to the to the library.

removinggoose commented 1 year ago

Thank you for your reply. I appreciate your help. Would you please be able to tell me step by step on how to do this? I know that the episodes are not in library and nor is the season but would like to check and make sure by doing the thing you said to do

yammes08 commented 1 year ago

I've encountered a similar issue to this today, and wondered if you can check something. The torrents you're having the issue with, are they all ones where the torrent content is in a subfolder? I've found today that torrents where the content is in a subfolder (or subfolders) do not get flagged as noHL. I discovered this when manually adding a torrent to a new category (correctly added to qbm too), which then got data-match cross-seeded, and the noHL wasn't picked up.

yammes08 commented 1 year ago

Screenshots to confim file list with inodes, showing both locations are outside of the media folder: putty_x8kPxhiF0n putty_rvvHkD3lM9

bobokun commented 1 year ago

Hello! Running with trace logging would help identify the root cause of why the torrent was not selected as NoHL. It provides a lot more details so please try that and post the results for the torrent. Since the logs can be quite excessive make sure to post the log only for the specific torrent hash.

yammes08 commented 1 year ago

Trace logs: https://privatebin.net/?e2efb1107898c945#BR6v5SkrJBDzH8Q5nfhpof7nhorg1A5SvXHyQDvegV3M (let me know if that's not the right section)

removinggoose commented 1 year ago

I've encountered a similar issue to this today, and wondered if you can check something. The torrents you're having the issue with, are they all ones where the torrent content is in a subfolder? I've found today that torrents where the content is in a subfolder (or subfolders) do not get flagged as noHL. I discovered this when manually adding a torrent to a new category (correctly added to qbm too), which then got data-match cross-seeded, and the noHL wasn't picked up.

Unfortunately I’m unable to give the trace logs and inode info due to lack of knowledge on how to do so. I can however tell you that it was a season folder that was then data matched as single episodes and placed into the cross-seed-data folder. All of this folders are in the main directory for downloads that qbitmanage sees. They don’t appear elsewhere

appreciate your logs and such and hopefully we can get to the bottom of it. It’s not such a massive problem because for me the main series folder is marked as noHL and then when that is removed, the single episodes are then marked noHL

yammes08 commented 1 year ago

Unfortunately I’m unable to give the trace logs and inode info due to lack of knowledge on how to do so. I can however tell you that it was a season folder that was then data matched as single episodes and placed into the cross-seed-data folder. All of this folders are in the main directory for downloads that qbitmanage sees. They don’t appear elsewhere

appreciate your logs and such and hopefully we can get to the bottom of it. It’s not such a massive problem because for me the main series folder is marked as noHL and then when that is removed, the single episodes are then marked noHL

For trace logs, you can set the container variable QBIT_LOG_LEVEL: debugQBIT_LOG_LEVEL: trace. For inodes, you can navigate to the directory containing the files you want to check and run ls -lhia.

removinggoose commented 1 year ago

Thanks for the help. Here are the inode screenshots. Not entirely sure how to interpret this but hope it helps. I will follow up with trace logs

image

image

removinggoose commented 1 year ago

ok i have enabled trace logging but not sure what part you would like out of it. Do i need to delete and re add the torrents so they are scanned?

yammes08 commented 1 year ago

ok i have enabled trace logging but not sure what part you would like out of it. Do i need to delete and re add the torrents so they are scanned?

No - just re-run qbitmanage with trace logging, then have a look at the output and just share the section(s) relating to a torrent you'd expect to be marked noHL but isn't.

removinggoose commented 1 year ago

ok so i can only apologise for how dumb i might be but I went into the container setup with unraid and set the log level to debug. Then restarted the container and check the log files in /qbit_manage/logs/activity.log and there doesn't seem to be anything different or anywhere i can find the specific torrent file so either i've done it wrong or i'm looking in the wrong place for the logs

yammes08 commented 1 year ago

ok so i can only apologise for how dumb i might be but I went into the container setup with unraid and set the log level to debug. Then restarted the container and check the log files in /qbit_manage/logs/activity.log and there doesn't seem to be anything different or anywhere i can find the specific torrent file so either i've done it wrong or i'm looking in the wrong place for the logs

You'll know it's worked as you'll see lines like this:

[2023-07-28 12:57:36,620] [nohardlink:507] [TRACE] | Checking no of hard links: 1

...i.e., they have [TRACE] in the line.

You can get the torrent hash by clicking the torrent in qbit, then under the General tab you'll see it. Search your trace logs for that hash, and you'll find the relevant sections.

yammes08 commented 1 year ago

New logs (with longer expiry) here: https://privatebin.net/?8169c634f976c536#KSGvG85R8YzjptsAMyzJmPh1PtRLKV3TpuzRtNaVMdL

bobokun commented 1 year ago

Hi @yammes08 , I notice in the trace logs Checking inode_count dict: None which is most likely the cause of the issue. Do you see in the trace logs something that looks like "has permission issues. Skipping..." or "not found. Skipping..." ?

bobokun commented 1 year ago

@yammes08 can you also share your config? Is /data/torrents/cross-seed-data also found in your root_dir?

bobokun commented 1 year ago

@yammes08 , can you update to the latest develop and rerun with trace logs? I think I might have fixed the issue

yammes08 commented 1 year ago

Hey @bobokun

...I notice in the trace logs Checking inode_count dict: None which is most likely the cause of the issue. Do you see in the trace logs something that looks like "has permission issues. Skipping..." or "not found. Skipping..." ?

I couldn't find either of those things in the logs

can you also share your config? Is /data/torrents/cross-seed-data also found in your root_dir?

Config here: https://privatebin.net/?aa6eb8491ed36e4b#G3ZVhLctGuttrMFshk9kAN3t8Ku9PtQghK3MHf7cUCyw

can you update to the latest develop and rerun with trace logs? I think I might have fixed the issue

Updated to latest develop, still seems to be the same issue. New logs: https://privatebin.net/?cbc816f4fc1c50af#54aYKnM6Ybb9BdsbJ2UEJqmRCjhxdh4nq5TZv5kSezEi

yammes08 commented 1 year ago

Hold on, I don't think my container updated properly. Re-running.

yammes08 commented 1 year ago

OK, I'm seeing this is now fixed! 🤘

yammes08 commented 1 year ago

@removinggoose - perhaps you could update to develop and re-run - see if this is fixed for you too?

removinggoose commented 1 year ago

Seems to have done the trick. Thanks

removinggoose commented 1 year ago

How often do you have qbit manage run? I'm noticing torrents be given share limits prior to them being hard linked and therefore the share limits stay after the torrent is hard linked. Is there a way around this other than reducing time to minimise likelihood of occurring?

bobokun commented 1 year ago

Share limits should adjust on the next run if they were applied prior to being hard linked. If not it's probably a config issue where the priority needs to be adjusted.

removinggoose commented 1 year ago

Sorry to sort of change the subject of the thread. I can start a new discussion if needed.

Here is the part of the config that describes the hard links. I'm not sure what priorities do exactly and how to configure it so that it doesn't tag until complete.

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_TorrentLeech:
    # <MANDATORY> priority: <int/float> # This is the priority of your grouping. The lower the number the higher the priority
    priority: 1
    # <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
    - TorrentLeech
    # <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
    # <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:
    # <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:
    # <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:
    - tv
    - movies
    - tv.cross-seed
    - movies.cross-seed
    - cross-seed-data
    - cross-seed-data.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: 1.5
    # <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: 11520
    # <OPTIONAL> min_seeding_time <int>: Will prevent torrent deletion by cleanup variable if torrent has not yet minimum seeding time (minutes).
    # Will default to 0 if not specified for the group.
    min_seeding_time:
    # <OPTIONAL> Limit Upload Speed <int>: Will limit the upload speed KiB/s (KiloBytes/second) (`-1` : No Limit)
    limit_upload_speed:
    # <OPTIONAL> cleanup <bool>: WARNING!! Setting this as true Will remove and delete contents of any torrents that satisfies the share limits
    cleanup: false
    # <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 suffix defined in settings . Default is true
    # Example: A grouping defined as noHL will have a tag set to noHL.share_limit (if using the default suffix)
    add_group_to_tag: true

  noHL_aither:
    # <MANDATORY> priority: <int/float> # This is the priority of your grouping. The lower the number the higher the priority
    priority: 2
    # <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
    - aither
    # <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:
    # <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:
    - tv
    - movies
    - tv.cross-seed
    - movies.cross-seed
    - cross-seed-data
    - cross-seed-data.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:
    # <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: 8640
    # <OPTIONAL> min_seeding_time <int>: Will prevent torrent deletion by cleanup variable if torrent has not yet minimum seeding time (minutes).
    # Will default to 0 if not specified for the group.
    min_seeding_time: 7200
    # <OPTIONAL> Limit Upload Speed <int>: Will limit the upload speed KiB/s (KiloBytes/second) (`-1` : No Limit)
    limit_upload_speed:
    # <OPTIONAL> cleanup <bool>: WARNING!! Setting this as true Will remove and delete contents of any torrents that satisfies the share limits
    cleanup: false
    # <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 suffix defined in settings . Default is true
    # Example: A grouping defined as noHL will have a tag set to noHL.share_limit (if using the default suffix)
    add_group_to_tag: true

  noHL_filelist:
    # <MANDATORY> priority: <int/float> # This is the priority of your grouping. The lower the number the higher the priority
    priority: 3
    # <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
    - filelist
    # <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:
    # <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:
    - tv
    - movies
    - tv.cross-seed
    - movies.cross-seed
    - cross-seed-data
    - cross-seed-data.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:
    # <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: 4320
    # <OPTIONAL> min_seeding_time <int>: Will prevent torrent deletion by cleanup variable if torrent has not yet minimum seeding time (minutes).
    # Will default to 0 if not specified for the group.
    min_seeding_time: 240
    # <OPTIONAL> Limit Upload Speed <int>: Will limit the upload speed KiB/s (KiloBytes/second) (`-1` : No Limit)
    limit_upload_speed:
    # <OPTIONAL> cleanup <bool>: WARNING!! Setting this as true Will remove and delete contents of any torrents that satisfies the share limits
    cleanup: false
    # <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 suffix defined in settings . Default is true
    # Example: A grouping defined as noHL will have a tag set to noHL.share_limit (if using the default suffix)
    add_group_to_tag: true

  noHL_Blu:
    # <MANDATORY> priority: <int/float> # This is the priority of your grouping. The lower the number the higher the priority
    priority: 4
    # <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
    - Blutopia
    # <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
    # <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:
    - tv
    - movies
    - tv.cross-seed
    - movies.cross-seed
    - cross-seed-data
    - cross-seed-data.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:
    # <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: 11000
    # <OPTIONAL> min_seeding_time <int>: Will prevent torrent deletion by cleanup variable if torrent has not yet minimum seeding time (minutes).
    # Will default to 0 if not specified for the group.
    min_seeding_time: 11000
    # <OPTIONAL> Limit Upload Speed <int>: Will limit the upload speed KiB/s (KiloBytes/second) (`-1` : No Limit)
    limit_upload_speed:
    # <OPTIONAL> cleanup <bool>: WARNING!! Setting this as true Will remove and delete contents of any torrents that satisfies the share limits
    cleanup: false
    # <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 suffix defined in settings . Default is true
    # Example: A grouping defined as noHL will have a tag set to noHL.share_limit (if using the default suffix)
    add_group_to_tag: true

  noHL_UHDBits:
    # <MANDATORY> priority: <int/float> # This is the priority of your grouping. The lower the number the higher the priority
    priority: 5
    # <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
    - uhdbits
    # <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
    # <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:
    - tv
    - movies
    - tv.cross-seed
    - movies.cross-seed
    - cross-seed-data
    - cross-seed-data.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:
    # <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: 11000
    # <OPTIONAL> min_seeding_time <int>: Will prevent torrent deletion by cleanup variable if torrent has not yet minimum seeding time (minutes).
    # Will default to 0 if not specified for the group.
    min_seeding_time: 11000
    # <OPTIONAL> Limit Upload Speed <int>: Will limit the upload speed KiB/s (KiloBytes/second) (`-1` : No Limit)
    limit_upload_speed:
    # <OPTIONAL> cleanup <bool>: WARNING!! Setting this as true Will remove and delete contents of any torrents that satisfies the share limits
    cleanup: false
    # <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 suffix defined in settings . Default is true
    # Example: A grouping defined as noHL will have a tag set to noHL.share_limit (if using the default suffix)
    add_group_to_tag: true

  noHL_nebulance:
    # <MANDATORY> priority: <int/float> # This is the priority of your grouping. The lower the number the higher the priority
    priority: 6
    # <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
    - nebulance
    # <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
    # <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:
    - tv
    - movies
    - tv.cross-seed
    - movies.cross-seed
    - cross-seed-data
    - cross-seed-data.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:
    # <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: 11000
    # <OPTIONAL> min_seeding_time <int>: Will prevent torrent deletion by cleanup variable if torrent has not yet minimum seeding time (minutes).
    # Will default to 0 if not specified for the group.
    min_seeding_time: 11000
    # <OPTIONAL> Limit Upload Speed <int>: Will limit the upload speed KiB/s (KiloBytes/second) (`-1` : No Limit)
    limit_upload_speed:
    # <OPTIONAL> cleanup <bool>: WARNING!! Setting this as true Will remove and delete contents of any torrents that satisfies the share limits
    cleanup: false
    # <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 suffix defined in settings . Default is true
    # Example: A grouping defined as noHL will have a tag set to noHL.share_limit (if using the default suffix)
    add_group_to_tag: true

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: true
  # <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: 7
  # <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

orphaned:
bakerboy448 commented 1 year ago

Priority is clear

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

you also do not have a default share limit as the docs and config say is needed thus as soon as any share limit group is added for noHL they can and will never have any other groups applied as they match nothing else.

your share one tagged noHL your share limits will never ever be replaced because you haven't told QBm to do so

removinggoose commented 1 year ago

That solves it. Silly me. Thanks for the help