apiVersion: v1
kind: ConfigMap
metadata:
  name: qbit-manage
data:
  config.yml: |-
    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: False
      tag_nohardlinks: True
      share_limits: False
      skip_qb_version_check: False
      skip_cleanup: False

    qbt:
      # qBittorrent parameters
      host: "qbittorrent.download:8080"
      user: "admin"
      pass: "adminadmin"

    settings:
      force_auto_tmm: False # 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.
      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
      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.
      # 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.
      cross_seed: "/your/path/here/"
      root_dir: "/storage/Torrents/"
      #remote_dir: "/storage/Torrents/"
      recycle_bin: "/storage/Torrents/.RecycleBin"
      #torrents_dir: "/storage/Torrents/BT_backup"
      #orphaned_dir: "/storage/Torrents/orphaned_data"

    cat:
      # Category & Path Parameters
      # <Category Name> : <save_path>  # Path of your save directory.
      radarr: "/storage/Torrents/radarr"
      sonarr: "/storage/Torrents/sonarr"
      readarr: "/storage/Torrents/readarr"
      readarr-audiobooks: "/storage/Torrents/readarr-audiobooks"
      farming: "/storage/Torrents/farming"

    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

    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:
        tag: [AlphaRatio, Private]
      animetorrents.me:
        tag: [AnimeZ, Private]
      myanonamouse:
        tag: [MaM, Private]
      privatehd:
        tag: [PrivateHD, Private]
      torrentleech|tleechreload:
        tag: [TorrentLeech, Private]
      bakabt.me:
        tag: [BakaBT, Private]
      opsfet.ch:
        tag: [Orpheus, Private]

      # 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 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
      # - movies-completed-4k
      # - series-completed-4k
      - radarr:
          # <OPTIONAL> exclude_tags var: Will exclude torrents with any of the following tags when searching through the category.
          exclude_tags:
            - MaM
            - Orpheus
      # Can have additional categories set with separate ratio/seeding times defined.
      - sonarr:
          # <OPTIONAL> exclude_tags var: Will exclude torrents with any of the following tags when searching through the category.
          exclude_tags:
            - 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:
      #  # <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:
      #    - radarr
      #    - sonarr
      #  # <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: 129600
      #  # <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> last_active <int>: 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.
      #  # Will default to 0 if not specified for the group.
      #  last_active: 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: 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: 10200
      #  cleanup: false

      #PTP:
      #  priority: 3
      #  include_all_tags:
      #    - PassThePopcorn
      #  max_ratio: 2.0
      #  max_seeding_time: 130000
      #  cleanup: false

      private:
        priority: 3
        include_all_tags:
          - Private
        include_any_tags:
          - Private
        max_ratio: -1
        max_seeding_time: -1
        cleanup: false

      farming:
        priority: 4
        categories:
          - farming
        max_ratio: -1
        max_seeding_time: -1
        cleanup: false
      
      default:
        priority: 999
        max_ratio: 1.5
        max_seeding_time: 14400 # 14400 min =  10 days
        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: 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: 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"
        - "/storage/Torrents/incomplete/**"
        - "/storage/Torrents/files/**"
        - "**/*.!qB"
        - "**/*_unpackerred"

    apprise:
      # Apprise integration with webhooks
      # Leave Empty/Blank to disable
      # Mandatory to fill out the url of your apprise API endpoint
      api_url: http://apprise-api:8000
      # Mandatory to fill out the notification url/urls based on the notification services provided by apprise. https://github.com/caronc/apprise/wiki
      notify_url:

    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:

    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
      # Set value to nothing (leave Empty/Blank) to disable
      error: 
      run_start:
      run_end: 
      function:
        cross_seed: # https://mywebhookurl.com/qbt_manage
        recheck: 
        cat_update: 
        tag_update: 
        rem_unregistered: 
        tag_tracker_error: 
        rem_orphaned: 
        tag_nohardlinks: 
        share_limits: 
        cleanup_dirs: 

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