Skip to content

Conversation

@rraymondgh
Copy link
Contributor

Includes graphql mutation integration. webui is not included as that is subject to change, code is available

Implements interfaces and design constraints noted in issue #300

…l mutation integration. webui is not included as that is subject to change, code is available
@rraymondgh
Copy link
Contributor Author

Tested multiple content types - expected restricted categories work as expected in transmission and qbittorrent

@rraymondgh
Copy link
Contributor Author

client:
  enabled: true
  download_client: QBittorrent
  qbittorrent:
    host: qbittorrent.home
    username: admin
    password: redacted
  transmission:
    host: transmission.home

Taskfile.yml Outdated
"uk",
"zh",
]
cmd: npx i18n-auto-translation -k $API_KEY -d webui/src/app/i18n/translations -t {{ .ITEM }}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure how the changes in this file are relevant to the pr

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

oops ;-) leakage of command I use to populate i18n translations. removed.

type Config struct {
Enabled bool
Transmission DownloadClient
Qbittorrent DownloadClient
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think I'd prefer a "send to [target]" model with any number of configurable targets possible instead of just 2 hard coded clients.
The "target" wouldn't even have to be a BT client and would allow for more flexibility especially once plugins are possible.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • I've reworked to "send to [target]" model. Configuration now uses slices config capability then you developed for Torznab profiles
  • clearly there is still some static coding. Notably the qbittorrent and transmission implementations of interface. Plus switch statement to select struct that implements interface.
  • to add another send to target
    • update graphql enum. regen generated go and typescript code
    • implement interface
    • extend switch

@rraymondgh
Copy link
Contributor Author

rraymondgh commented Jun 17, 2025

I realised there was an issue with enums. task gen-qgl-enums would result in enums.graphql missing ClientIDs. Restructured to use go enum code generation and required configuration changes to go and typescript code generators.

Example config section for reference:

client:
  enabled: true
  send_to:
    - host: qbittorrent.home
      username: admin
      password: ***
      id: QBittorrent
    - host: transmission.home
      id: Transmission
    - host: ntfy.home
      port: "80"
      id: Ntfy
  categories:
    ntfy: link
    tv: sonarr
    movie: radarr

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants