qbit_manage icon indicating copy to clipboard operation
qbit_manage copied to clipboard

[Bug]: Torrents added from watch folder do not get rechecked

Open mat926 opened this issue 4 months ago • 0 comments

Describe the Bug

When adding a torrent to the watch folder that I have already downloaded the content for , qBm won't recheck/resume the torrent.

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

qbt:
  # qBittorrent parameters
  host: http://192.168.0.143:8090
  user: ***
  pass: ***

settings:

  force_auto_tmm: false # Will force qBittorrent to enable Automatic Torrent Management for each torrent.
  force_auto_tmm_ignore_tags: #Torrents with these tags will be ignored when force_auto_tmm is enabled.
    - cross-seed
    - Upload
  tracker_error_tag: issue # Will set the tag of any torrents that do not have a working tracker.
  nohardlinks_tag: noHL # Will set the tag of any torrents with no hardlinks.
  share_limits_tag: ~share_limit # Will add this tag when applying share limits to provide an easy way to filter torrents by share limit group/priority for each torrent
  share_limits_min_seeding_time_tag: MinSeedTimeNotReached # Tag to be added to torrents that have not yet reached the minimum seeding time
  share_limits_min_num_seeds_tag: MinSeedsNotMet # Tag to be added to torrents that have not yet reached the minimum number of seeds
  share_limits_last_active_tag: LastActiveLimitNotReached # Tag to be added to torrents that have not yet reached the last active limit
  cross_seed_tag: cross-seed # Will set the tag of any torrents that are added by cross-seed command
  cat_filter_completed: true # Filters for completed torrents only when running cat_update command
  share_limits_filter_completed: true # Filters for completed torrents only when running share_limits command
  tag_nohardlinks_filter_completed: true # Filters for completed torrents only when running tag_nohardlinks command
  cat_update_all: false # Checks and udpates all torrent categories if set to True when running cat_update command, otherwise only update torrents that are uncategorized
  disable_qbt_default_share_limits: true # Allows QBM to handle share limits by disabling qBittorrents default Share limits. Only active when the share_limits command is set to True

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.
  # remote_dir must be set if you're running qbit_manage locally and qBittorrent/cross_seed is in a docker
  # remote_dir should not be set if qbit_manage is running in a container
  # <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
  # <OPTIONAL> orphaned_dir var: </your/path/here/>  # Path of the the Orphaned Data folder. This is similar to RecycleBin, but only for orphaned data.

  root_dir: /data/torrents/
  torrents_dir: /qbittorrent/data/BT_backup
  orphaned_dir: /data/torrents/orphaned_data
  remote_dir: /data/torrents/
  cross_seed: /data/torrents/cross-seed
  recycle_bin: /data/torrents/.RecycleBin
cat:
  # Category & Path Parameters
  # All save paths in qbittorent must be populated below.
  # If you want to leave a save_path as uncategorized you can use the key 'Uncategorized' as the name of the category.
  # <Category Name> : <save_path>  # Path of your save directory.
  movies: /data/torrents/movies
  tv: /data/torrents/tv
  music: /data/torrents/music
  porn: /data/torrents/porn
  games: /data/torrents/games
  other: /data/torrents/other

#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>
  #Radarr-HD.cross-seed: movies-hd
  #Radarr-UHD.cross-seed: movies-uhd
  #movies-hd.cross-seed: movies-hd
  #movies-uhd.cross-seed: movies-uhd

  torrents: /data/torrents/
tracker:
  # Mandatory
  # Tag Parameters
  # <Tracker URL Keyword>:    # <MANDATORY> This is the keyword in the tracker url. You can define multiple tracker urls by splitting with `|` delimiter
  # <MANDATORY> Set tag name. Can be a list of tags or a single tag
  #   tag: <Tag Name>
  # <OPTIONAL> Set the category based on tracker URL. This category option takes priority over the category defined by save directory
  #   cat: <Category Name>
  # <OPTIONAL> Set this to the notifiarr react name. This is used to add indexer reactions to the notifications sent by Notifiarr
  #   notifiarr: <notifiarr indexer>
  alpharatio.cc:
    tag: AlphaRatio
    notifiarr: AlphaRatio
  eiga.moi:
    tag: AsianCinema
    notifiarr: asiancinema
  asiandvdclub:
    tag: AsianDVDClub
    notifiarr: asiandvdclub
  avistaz:
    tag: AvistaZ
    notifiarr: avistaz
  cinemaz:
    tag: CinemaZ
    notifiarr: cinemaz
  inferno.demonoid.is:
    tag: Demonoid
    notifiarr: demonoid
  exoticaz:
    tag: ExoticaZ
    notifiarr: exoticaz
  fearnopeer:
    tag: FearNoPeer
    notifiarr: feernopeer
  fappaizuri:
    tag: Fappaizuri
    notifiarr: Fappaizuri
  happyfappy:
    tag: HappyFappy
    notifiarr: happyfappy
  hdts-announce:
    tag: HD-Torrents
    notifiarr: hd-torrents
  itatorrents:
    tag: ItaTorrents
    notifiarr: ItaTorrents
  myanonamouse:
    cat: other
    tag: MaM
  opsfet:
    tag: Orpheus
    cat: music
  oldtoons:
    tag: OldToons
    notifiarr: OldToons
  flacsfor.me:
    tag: Redacted
    cat: music
  tracker.gazellegames.net:
    tag: GazelleGames
    notifiarr: GazelleGames
  plab:
    tag: PornoLab
  privatehd:
    tag: PrivateHD
    notifiarr: PrivateHD
  thegeeks:
    tag: TheGeeks
    cat: other
  t-ru:
    tag: RuTracker
  # passthepopcorn:
    # tag: PassThePopcorn
    # notifiarr: passthepopcorn
  # torrentdb:
    # tag: TorrentDB
    # notifiarr: torrentdb
  secret-cinema:
    tag: SecretCinema
    notifiarr: SecretCinema
  torrentleech|tleechreload:
    tag: TorrentLeech
    notifiarr: torrentleech
  upload.cx:
    tag: Upload.cx
    notifiarr: Upload.cx
  uhdbits.org:
    tag: UHDBits
    notifiarr: UHDBits
  # tv-vault:
    # tag: TV-Vault
  # 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-tracker


nohardlinks:
  # Tag Movies/Series that are not hard linked outside the root directory
  # 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

    # <OPTIONAL> exclude_tags var: Will exclude torrents with any of the following tags when searching through the category.
    # exclude_tags:
    # - Beyond-HD
    # - AnimeBytes
    # - MaM
  # Can have additional categories set with separate ratio/seeding times defined.
- tv:
    exclude_tags:
    - todelete
    - cross-seed
- porn:
    exclude_tags:
    - todelete
    - cross-seed
- movies:
    exclude_tags:
    - todelete
    - cross-seed
- movies.seeding: #expirimenting - post import category set by radarr
    exclude_tags:
    - todelete
- tv.seeding: #expirimenting  - post import category set by sonarr
    exclude_tags:
    - todelete

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
  publicTracker:
    priority: 999
    include_all_tags:
    - other-tracker
    categories:
    - movies.seeding
    limit_upload_speed: 100
    max_seeding_time: "1d"
    cleanup: true 
  # noHL:
    # # <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
    # # <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:
    # - RadarrComplete
    # - SonarrComplete
    # # <OPTIONAL> max_ratio <float>: Will set the torrent Maximum share ratio until torrent is stopped from seeding/uploading and may be cleaned up / removed if the minimums have been met.
    # # Will default to -1 (no limit) if not specified for the group.
    # max_ratio: 5.0
    #  # <OPTIONAL> max_seeding_time <str>: Will set the torrent Maximum seeding time until torrent is stopped from seeding/uploading and may be cleaned up / removed if the minimums have been met.
    # See Some examples of valid time expressions (https://github.com/onegreyonewhite/pytimeparse2)
    # 32m, 2h32m, 3d2h32m, 1w3d2h32m
    # Will default to -1 (no limit) if not specified for the group. (Max value of 1 year (525600 minutes))
    #max_seeding_time: 90d
    # <OPTIONAL> min_seeding_time <str>: Will prevent torrent deletion by cleanup variable if torrent has not yet minimum seeding time (minutes).
    # This should only be set if you are using this in conjunction with max_seeding_time and max_ratio. If you are not setting a max_ratio, then use max_seeding_time instead.
    #  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.
    # # See Some examples of valid time expressions (https://github.com/onegreyonewhite/pytimeparse2)
    # 32m, 2h32m, 3d2h32m, 1w3d2h32m
    # # Will default to 0 if not specified for the group.
    # min_seeding_time: 30d
    # # <OPTIONAL> last_active <str>: Will prevent torrent deletion by cleanup variable if torrent has been active within the last x minutes.
    # # If the torrent has been active within the last x minutes, it will change the share limits back to no limits and resume the torrent to continue seeding.
    #     # See Some examples of valid time expressions (https://github.com/onegreyonewhite/pytimeparse2)
    # 32m, 2h32m, 3d2h32m, 1w3d2h32m
    # # Will default to 0 if not specified for the group.
    # last_active: 30d
    # # <OPTIONAL> Limit Upload Speed <int>: Will limit the upload speed KiB/s (KiloBytes/second) (`-1` : No Limit)
    # limit_upload_speed: 0
    #  <OPTIONAL> Enable Group Upload Speed <bool>: Upload speed limits are applied at the group level. This will take limit_upload_speed defined and divide it equally among the number of torrents in the group.
    # enable_group_upload_speed: false
    # <OPTIONAL> cleanup <bool>: WARNING!! Setting this as true Will remove and delete contents of any torrents that satisfies the share limits (max time OR max ratio)
    # 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 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: true
    # # <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
  # cross-seed:
    # priority: 2
    # include_all_tags:
    # - cross-seed
    # max_seeding_time: 7d
    # cleanup: false
  # PTP:
    # priority: 3
    # include_all_tags:
    # - PassThePopcorn
    # max_ratio: 2.0
    # max_seeding_time: 90d
    # cleanup: false
  # default:
    # priority: 999
    # max_ratio: -1
    # max_seeding_time: -1
    # cleanup: false

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

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: 60
  # 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'
  - '**/*.!qB'
  - '**/*_unpackerred'
  - '/data/torrents/cross-seed/**'
  # Set your desired threshold for the maximum number of orphaned files qbm will delete in a single run. (-1 to disable safeguards)
  # This will help reduce the number of accidental large amount orphaned deletions in a single run
  # WARNING: Setting this variable to -1 will not safeguard against any deletions
  max_orphaned_files_to_delete: 50


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


  # 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
  # Set value to nothing (leave Empty/Blank) to disable
webhooks:
  error: notifiarr
  run_start:
  run_end:
  function:
    cross_seed: notifiarr #Payload will be sent when adding a cross-seed torrent to qBittorrent if the original torrent is complete
    recheck: notifiarr #Payload will be sent when rechecking/resuming a torrent that is paused
    cat_update: notifiarr #Payload will be sent when updating torrents with missing category
    tag_update: notifiarr #Payload will be sent when updating torrents with missing tag
    rem_unregistered: notifiarr #Payload will be sent when Unregistered Torrents are found
    tag_tracker_error: notifiarr #Payload will be sent when trackers with errors are tagged/untagged
    rem_orphaned: notifiarr #Payload will be sent when Orphaned Files are found and moved into the orphaned folder
    tag_nohardlinks: notifiarr #Payload will be sent when no hard links are found for any files in a particular torrent/Payload will be sent when hard links are found for any torrents that were previously tagged with noHL
    share_limits: notifiarr #Payload will be sent when Share Limits are updated for a specific group
    cleanup_dirs: notifiarr #Payload will be sent when files are deleted/cleaned up from the various folders

Logs

https://gist.github.com/mat926/5205a5d0fe57897430bdbac63d677dd5

Screenshots

These torrents should've been rechecked image

Installation

Docker

Version Number

4.1.11

What branch are you on?

master

mat926 avatar Oct 20 '24 19:10 mat926