[FEATURE] Multiple Download Clients #135

Closed
opened 2025-10-09 16:59:02 -05:00 by giteasync · 4 comments
Owner

Originally created by @n00bz0rs777 on GitHub.

What would you like to see implemented next?

I use multiple download clients so it would be very useful to select more than one. I also use RDT Client which uses the qBittorrent API so adding that or just allowing a 2nd instance of qBittorrent would be useful. Maybe I can just do a 2nd instance of cleanuperr but would that maybe cause issues if the same instance of an Arr program happens to receive a command at the same time from both instances of cleanuperr?

I tried a second instance and it failed pretty quickly as it seems to identify Real-Debrid Torrrent Client instead of the execpted qBittrorrent:

[2025-03-07 02:30:36.842 ERR]    [QueueCleaner] QueueCleaner failed
System.FormatException: The input string '<!doctype html>
<html lang="en" data-critters-container>
  <head>
    <meta charset="utf-8">
    <title>Real-Debrid Torrent Client</title>
    <base href="/">
    <script>
      (function () {
        var baseElement = document.querySelector("base");

        if (baseElement) {
          var hrefValue = baseElement.getAttribute("href");
          window["_app_base"] = hrefValue;
          console.log("setting base href to " + window["_app_base"]);
        }
      })();
    </script>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="icon" type="image/x-icon" href="favicon.ico">
  <style>:root{--fa-style-family-brands:"Font Awesome 6 Brands";--fa-font-brands:normal 400 1em/1 "Font Awesome 6 Brands"}@font-face{font-family:"Font Awesome 6 Brands";font-style:normal;font-weight:400;font-display:block;src:url(fa-brands-400.b6033b540dd66f84.woff2) format("woff2"),url(fa-brands-400.9a905705860d0777.ttf) format("truetype")}:root{--fa-style-family-classic:"Font Awesome 6 Free";--fa-font-regular:normal 400 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:400;font-display:block;src:url(fa-regular-400.3580b4a95c9bb1d5.woff2) format("woff2"),url(fa-regular-400.67a0fb748649533d.ttf) format("truetype")}:root{--fa-style-family-classic:"Font Awesome 6 Free";--fa-font-solid:normal 900 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:900;font-display:block;src:url(fa-solid-900.fd0b155cd663a8fa.woff2) format("woff2"),url(fa-solid-900.6a8db53d80e9da0c.ttf) format("truetype")}@charset "UTF-8";html,body{margin:0;padding:0}html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit}html{background-color:#fff;font-size:16px;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;min-width:300px;overflow-x:hidden;overflow-y:scroll;text-rendering:optimizeLegibility;-webkit-text-size-adjust:100%;text-size-adjust:100%}body{font-family:BlinkMacSystemFont,-apple-system,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,Helvetica,Arial,sans-serif}body{color:#4a4a4a;font-size:1em;font-weight:400;line-height:1.5}</style><link rel="stylesheet" href="styles.e0d9d5dcd8df4190.css" media="print" onload="this.media='all'"><noscript><link rel="stylesheet" href="styles.e0d9d5dcd8df4190.css"></noscript></head>
  <body>
    <app-root></app-root>
  <script src="runtime.52f1d05aa6c3afea.js" type="module"></script><script src="polyfills.bc0070be939c8a90.js" type="module"></script><script src="main.33c9f2b827505a21.js" type="module"></script></body>
</html>
' was not in a correct format.
   at System.Number.ThrowFormatException[TChar](ReadOnlySpan`1 value)
   at System.Convert.ToInt32(String value)
   at QBittorrent.Client.QBittorrentClient.GetLegacyApiVersionPrivateAsync(CancellationToken token)
   at QBittorrent.Client.QBittorrentClient.<>c__DisplayClass7_0.<<-ctor>b__1>d.MoveNext()
--- End of stack trace from previous location ---
   at QBittorrent.Client.QBittorrentClient.PostAsync(Func`2 builder, CancellationToken token, ApiLevel minApiLevel, ApiVersion minApiVersion, Nullable`1 maxApiVersion)
   at Infrastructure.Verticals.DownloadClient.QBittorrent.QBitService.LoginAsync() in /app/Infrastructure/Verticals/DownloadClient/QBittorrent/QBitService.cs:line 57
   at Infrastructure.Verticals.Jobs.GenericHandler.ExecuteAsync() in /app/Infrastructure/Verticals/Jobs/GenericHandler.cs:line 58
   at Executable.Jobs.GenericJob`1.Execute(IJobExecutionContext context) in /app/Executable/Jobs/GenericJob.cs:line 26

Thanks either way. cleanuperr as it is now already fixes so much for me.

Originally created by @n00bz0rs777 on GitHub. ### What would you like to see implemented next? I use multiple download clients so it would be very useful to select more than one. I also use RDT Client which uses the qBittorrent API so adding that ~~or just allowing a 2nd instance of qBittorrent~~ would be useful. ~~Maybe I can just do a 2nd instance of cleanuperr but would that maybe cause issues if the same instance of an Arr program happens to receive a command at the same time from both instances of cleanuperr?~~ I tried a second instance and it failed pretty quickly as it seems to identify Real-Debrid Torrrent Client instead of the execpted qBittrorrent: ``` [2025-03-07 02:30:36.842 ERR] [QueueCleaner] QueueCleaner failed System.FormatException: The input string '<!doctype html> <html lang="en" data-critters-container> <head> <meta charset="utf-8"> <title>Real-Debrid Torrent Client</title> <base href="/"> <script> (function () { var baseElement = document.querySelector("base"); if (baseElement) { var hrefValue = baseElement.getAttribute("href"); window["_app_base"] = hrefValue; console.log("setting base href to " + window["_app_base"]); } })(); </script> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="icon" type="image/x-icon" href="favicon.ico"> <style>:root{--fa-style-family-brands:"Font Awesome 6 Brands";--fa-font-brands:normal 400 1em/1 "Font Awesome 6 Brands"}@font-face{font-family:"Font Awesome 6 Brands";font-style:normal;font-weight:400;font-display:block;src:url(fa-brands-400.b6033b540dd66f84.woff2) format("woff2"),url(fa-brands-400.9a905705860d0777.ttf) format("truetype")}:root{--fa-style-family-classic:"Font Awesome 6 Free";--fa-font-regular:normal 400 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:400;font-display:block;src:url(fa-regular-400.3580b4a95c9bb1d5.woff2) format("woff2"),url(fa-regular-400.67a0fb748649533d.ttf) format("truetype")}:root{--fa-style-family-classic:"Font Awesome 6 Free";--fa-font-solid:normal 900 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:900;font-display:block;src:url(fa-solid-900.fd0b155cd663a8fa.woff2) format("woff2"),url(fa-solid-900.6a8db53d80e9da0c.ttf) format("truetype")}@charset "UTF-8";html,body{margin:0;padding:0}html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit}html{background-color:#fff;font-size:16px;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;min-width:300px;overflow-x:hidden;overflow-y:scroll;text-rendering:optimizeLegibility;-webkit-text-size-adjust:100%;text-size-adjust:100%}body{font-family:BlinkMacSystemFont,-apple-system,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,Helvetica,Arial,sans-serif}body{color:#4a4a4a;font-size:1em;font-weight:400;line-height:1.5}</style><link rel="stylesheet" href="styles.e0d9d5dcd8df4190.css" media="print" onload="this.media='all'"><noscript><link rel="stylesheet" href="styles.e0d9d5dcd8df4190.css"></noscript></head> <body> <app-root></app-root> <script src="runtime.52f1d05aa6c3afea.js" type="module"></script><script src="polyfills.bc0070be939c8a90.js" type="module"></script><script src="main.33c9f2b827505a21.js" type="module"></script></body> </html> ' was not in a correct format. at System.Number.ThrowFormatException[TChar](ReadOnlySpan`1 value) at System.Convert.ToInt32(String value) at QBittorrent.Client.QBittorrentClient.GetLegacyApiVersionPrivateAsync(CancellationToken token) at QBittorrent.Client.QBittorrentClient.<>c__DisplayClass7_0.<<-ctor>b__1>d.MoveNext() --- End of stack trace from previous location --- at QBittorrent.Client.QBittorrentClient.PostAsync(Func`2 builder, CancellationToken token, ApiLevel minApiLevel, ApiVersion minApiVersion, Nullable`1 maxApiVersion) at Infrastructure.Verticals.DownloadClient.QBittorrent.QBitService.LoginAsync() in /app/Infrastructure/Verticals/DownloadClient/QBittorrent/QBitService.cs:line 57 at Infrastructure.Verticals.Jobs.GenericHandler.ExecuteAsync() in /app/Infrastructure/Verticals/Jobs/GenericHandler.cs:line 58 at Executable.Jobs.GenericJob`1.Execute(IJobExecutionContext context) in /app/Executable/Jobs/GenericJob.cs:line 26 ``` Thanks either way. cleanuperr as it is now already fixes so much for me.
giteasync added the
enhancement
planned
labels 2025-10-09 16:59:02 -05:00
Author
Owner

@Flaminel commented on GitHub:

Another thing to mention: RDT is not going to be supported for the time being.

@Flaminel commented on GitHub: Another thing to mention: RDT is not going to be supported for the time being.
Author
Owner

@jsloane commented on GitHub:

Does multiple instances impact the clean-up process at all?
Eg, if I have 2 download clients, Client A for private trackers and Client B for public trackers. Will the cleanuperr instance for Client B remove torrents downloading from Client A, as it cannot see them and assume the download is stalled?

@jsloane commented on GitHub: Does multiple instances impact the clean-up process at all? Eg, if I have 2 download clients, Client A for private trackers and Client B for public trackers. Will the cleanuperr instance for Client B remove torrents downloading from Client A, as it cannot see them and assume the download is stalled?
Author
Owner

@Flaminel commented on GitHub:

@jsloane sorry for the late response, but you should update to v2 which now supports multiple download clients.

@Flaminel commented on GitHub: @jsloane sorry for the late response, but you should update to `v2` which now supports multiple download clients.
Author
Owner

@Flaminel commented on GitHub:

There's no plan to support multiple download clients just yet, but I'll look into RDT Client at some point, as this has been requested multiple times now.

So, at least for now, the workaround would be to have multiple instances of Cleanuperr deployed.

@Flaminel commented on GitHub: There's no plan to support multiple download clients just yet, but I'll look into RDT Client at some point, as this has been requested multiple times now. So, at least for now, the workaround would be to have multiple instances of Cleanuperr deployed.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/Cleanuparr-Cleanuparr#135
No description provided.