From efd5e92ca510ae546362814a03ea12ec7bbbd4a0 Mon Sep 17 00:00:00 2001 From: Bogdan Date: Mon, 17 Jul 2023 19:39:51 +0300 Subject: [PATCH] Support categories with Transmission --- .../Clients/Transmission/Transmission.cs | 2 +- .../Clients/Transmission/TransmissionBase.cs | 16 +++++++++++----- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/NzbDrone.Core/Download/Clients/Transmission/Transmission.cs b/src/NzbDrone.Core/Download/Clients/Transmission/Transmission.cs index a2bd2bf91..c62a1f6ff 100644 --- a/src/NzbDrone.Core/Download/Clients/Transmission/Transmission.cs +++ b/src/NzbDrone.Core/Download/Clients/Transmission/Transmission.cs @@ -38,6 +38,6 @@ protected override ValidationFailure ValidateVersion() } public override string Name => "Transmission"; - public override bool SupportsCategories => false; + public override bool SupportsCategories => true; } } diff --git a/src/NzbDrone.Core/Download/Clients/Transmission/TransmissionBase.cs b/src/NzbDrone.Core/Download/Clients/Transmission/TransmissionBase.cs index 6e723a32a..f5cf1fed9 100644 --- a/src/NzbDrone.Core/Download/Clients/Transmission/TransmissionBase.cs +++ b/src/NzbDrone.Core/Download/Clients/Transmission/TransmissionBase.cs @@ -28,7 +28,10 @@ public TransmissionBase(ITransmissionProxy proxy, protected override string AddFromMagnetLink(TorrentInfo release, string hash, string magnetLink) { - _proxy.AddTorrentFromUrl(magnetLink, GetDownloadDirectory(), Settings); + var category = GetCategoryForRelease(release) ?? Settings.Category; + var downloadDirectory = GetDownloadDirectory(category); + + _proxy.AddTorrentFromUrl(magnetLink, downloadDirectory, Settings); _proxy.SetTorrentSeedingConfiguration(hash, release.SeedConfiguration, Settings); if (Settings.Priority == (int)TransmissionPriority.First) @@ -41,7 +44,10 @@ protected override string AddFromMagnetLink(TorrentInfo release, string hash, st protected override string AddFromTorrentFile(TorrentInfo release, string hash, string filename, byte[] fileContent) { - _proxy.AddTorrentFromData(fileContent, GetDownloadDirectory(), Settings); + var category = GetCategoryForRelease(release) ?? Settings.Category; + var downloadDirectory = GetDownloadDirectory(category); + + _proxy.AddTorrentFromData(fileContent, downloadDirectory, Settings); _proxy.SetTorrentSeedingConfiguration(hash, release.SeedConfiguration, Settings); if (Settings.Priority == (int)TransmissionPriority.First) @@ -73,14 +79,14 @@ protected virtual OsPath GetOutputPath(OsPath outputPath, TransmissionTorrent to return outputPath + torrent.Name.Replace(":", "_"); } - protected string GetDownloadDirectory() + protected string GetDownloadDirectory(string category) { if (Settings.Directory.IsNotNullOrWhiteSpace()) { return Settings.Directory; } - if (!Settings.Category.IsNotNullOrWhiteSpace()) + if (category.IsNullOrWhiteSpace()) { return null; } @@ -88,7 +94,7 @@ protected string GetDownloadDirectory() var config = _proxy.GetConfig(Settings); var destDir = config.DownloadDir; - return $"{destDir.TrimEnd('/')}/{Settings.Category}"; + return $"{destDir.TrimEnd('/')}/{category}"; } protected ValidationFailure TestConnection()