Sonarr/src/NzbDrone.Core/Download/Clients/Porla
Wesselinator b9e026aa2b
Porla Download Client
2024-04-13 17:48:04 +02:00
..
Models Porla Download Client 2024-04-13 17:48:04 +02:00
Porla.cs Porla Download Client 2024-04-13 17:48:04 +02:00
PorlaProxy.cs Porla Download Client 2024-04-13 17:48:04 +02:00
PorlaSettings.cs Porla Download Client 2024-04-13 17:48:04 +02:00
README.md Porla Download Client 2024-04-13 17:48:04 +02:00

README.md

Porla Client

Porla! The (Unofficial) Web frontend for LibTorrent!

Details

  • Uses JSONRPC
  • Written in C++
  • Has LUA Plugin Capability
  • Session Capable
  • Has Proxy Support (Looking at you Transmission!)
  • Presets!

Currently (2024-02) still in bleeding-edge active development.

Deving

I coppied large parts of this code from the Hadouken Client, as it was the other JSONRPC client in the collection.

Docs are iffy currently, check out the methods at the source (v0.37.0). They are not too hard to figure out in conjunction with the method docs

GetStatus()

Unsure what this needs to do exactly.
I think it's supposed to introspect the configuration.
IF that is the case. TODO: Figure out extracting the save_path from the prefix

Feature Implementation

Sessions

I DID NOT do anything with sessions.

They could be VERY powerfull to work with Private and Public trackers, but the front end currently doesn't have strong support for it.

Could also be a way to have multiple Sonarrs pointed at the same Porla, or a diffrent way to deal with the other Starr ecosystem.

Presets

Preset ussage are being set on the torrent adds, through a client setting.

So I needed to do something with the save_path on the torrent.add request. Theis field is optional if you set a defualt path on porla BUT required if you didn't.
I wanted this to work "by default", so if you have NO presets set, you NEED to set the save_path BUT if you want to use the presets values you should NOT set the save_path in the RPC request. That is why you see that intersting branch on the AddTorrent functions.

Interesting handling, the chosen preset is overlayed over the values from the default preset if it exists. We need to deal with that, to determine the "effective" settings loaded inside porla

Tags

Would be great to use to filter BIG lists of torrents even more! But Sonarr expects everything. Something to look at in the future if Sonarr ever does granular torrent requests.

The idea is to use the tags on torrents to make listing more efficient, in our case tagging them with series/show/season so we can find what we are looking for.

What I did set tags with the series attributes. I want to be able to come around later and filter torrents outside the context of Sonarr.

You can set a client setting to disable this behavior.

Torrent Metadata

I DID NOT USE this, maybe add something?

It's basically a any-field that we can fill with anything we want.

LibTorrent Torrent Flags

share_mode

Should be very useful for private trackers. Sadly unclear how to implement it without doing some spagetti.

Data / Response Examples

Config Definition can be found at config.hpp

Presets.list

Return should be defined in presets.hpp

Config.toml

[presets.default]
save_path = "/tmp/"

[presets.other]
tags = ["other"]

Response

{
"default":{
    "category":null,"download_limit":null,"max_connections":null,"max_uploads":null,"save_path":"/tmp/","session":null,"tags":null,"upload_limit":null
    },
"other":{
    "category":null,"download_limit":null,"max_connections":null,"max_uploads":null,"save_path":null,"session":null,"tags":["other"],"upload_limit":null
    }
}