hydralauncher / hydra

Hydra is a game launcher with its own embedded bittorrent client and a self-managed repack scraper.
MIT License
9.52k stars 1.79k forks source link

[REQUEST] Add support an external torrent clients (Transmission Daemon, qBittorrent and etc.) #667

Open Maks1mS opened 1 week ago

Maks1mS commented 1 week ago

Is your feature request related to a problem? Please describe.

In my daily life, I use the Transmission Daemon on my NAS and would like to be able to use external torrent clients as well. One of the main benefits for me would be the ability to download games even when my PC is turned off.

Describe the solution you'd like

I would like to be able to use external torrent clients for downloading. It would be nice to start with Transmission. I also know that qBittorrent has an API.

Describe alternatives you've considered

No response

Additional context

Transmission

Transmission's RPC specification: https://github.com/transmission/transmission/blob/main/docs/rpc-spec.md One of the libraries that implements Transmission's RPC: https://www.npmjs.com/package/transmission-promise

qBittorrent

qBittorrent WebUI API: https://github.com/qbittorrent/qBittorrent/wiki/WebUI-API-(qBittorrent-4.1)

bpavuk commented 1 week ago

you can install the game as usual and then add it to the Hydra library

JackEnx commented 4 days ago

It seems like something very interesting, can you download files via torrent directly to the NAS? I don't think it's possible at the moment because it involves a certain level of research and it seems like something that wouldn't be used soo much (implemented by the core team, nothing prevents someone implementing it), perhaps in the future

Maks1mS commented 4 days ago

It seems like something very interesting, can you download files via torrent directly to the NAS?

Yes, I do download files directly to my NAS and then access them using SMB. In my case, the folder is mounted as a regular file system, so it looks like that it functions similarly to an external client on my local machine with a local file system. However, this is just one option. Other users may prefer to access the files using SMB or HTTP, for example.

it seems like something that wouldn't be used soo much

Of course, I suspected it. But without creating this issue, we really don't know it. :)

(implemented by the core team, nothing prevents someone implementing it)

I tried to implement this, but I abandoned the idea for the following reasons:

  1. There are two download options in one class. I was afraid to break it and there was no way to check the Real Debrid
  2. Started migration from aria2c to libtorrent with code refactoring.
  3. In addition to implementation, this requires support. It may be discontinued in the future due to low usage. Also, if there was a plugin system, maybe it would be a good plugin that core team would not be responsible for.

Maybe in the future, I will return to this.