mirror of
https://github.com/Prowlarr/Prowlarr.git
synced 2025-09-17 17:14:18 +02:00
Fixed: Remove Indexer if categories were changed to not include in sync
Applies to Full Sync Update Fixes #912
This commit is contained in:
@@ -0,0 +1,87 @@
|
|||||||
|
using System.Linq;
|
||||||
|
using FluentAssertions;
|
||||||
|
using NUnit.Framework;
|
||||||
|
using NzbDrone.Core.Indexers;
|
||||||
|
using NzbDrone.Core.Test.Framework;
|
||||||
|
|
||||||
|
namespace NzbDrone.Core.Test.IndexerTests
|
||||||
|
{
|
||||||
|
[TestFixture]
|
||||||
|
public class IndexerCapabilitiesCategoriesFixture : CoreTest<IndexerCapabilitiesCategories>
|
||||||
|
{
|
||||||
|
[Test]
|
||||||
|
public void should_support_parent_if_child_mapping()
|
||||||
|
{
|
||||||
|
Subject.AddCategoryMapping(1, NewznabStandardCategory.MoviesSD, "Filme SD");
|
||||||
|
|
||||||
|
var categories = new int[] { 2000 };
|
||||||
|
|
||||||
|
var supported = Subject.SupportedCategories(categories);
|
||||||
|
|
||||||
|
supported.Should().HaveCount(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void should_support_category_if_mapped()
|
||||||
|
{
|
||||||
|
Subject.AddCategoryMapping(1, NewznabStandardCategory.MoviesSD, "Filme SD");
|
||||||
|
|
||||||
|
var categories = new int[] { 2030 };
|
||||||
|
|
||||||
|
var supported = Subject.SupportedCategories(categories);
|
||||||
|
|
||||||
|
supported.Should().HaveCount(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void should_not_support_category_if_not_mapped()
|
||||||
|
{
|
||||||
|
Subject.AddCategoryMapping(1, NewznabStandardCategory.MoviesSD, "Filme SD");
|
||||||
|
|
||||||
|
var categories = new int[] { 2040 };
|
||||||
|
|
||||||
|
var supported = Subject.SupportedCategories(categories);
|
||||||
|
|
||||||
|
supported.Should().HaveCount(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void should_get_tracker_category_list()
|
||||||
|
{
|
||||||
|
Subject.AddCategoryMapping(1, NewznabStandardCategory.MoviesSD, "Filme SD");
|
||||||
|
Subject.AddCategoryMapping(2, NewznabStandardCategory.MoviesHD, "Filme HD");
|
||||||
|
|
||||||
|
var supported = Subject.GetTrackerCategories();
|
||||||
|
|
||||||
|
supported.Should().HaveCount(2);
|
||||||
|
supported.First().Should().NotBeNull();
|
||||||
|
supported.First().Should().Be("1");
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void should_get_category_by_tracker_id()
|
||||||
|
{
|
||||||
|
Subject.AddCategoryMapping(1, NewznabStandardCategory.MoviesSD, "Filme SD");
|
||||||
|
Subject.AddCategoryMapping(2, NewznabStandardCategory.MoviesHD, "Filme HD");
|
||||||
|
|
||||||
|
var supported = Subject.MapTrackerCatToNewznab(2.ToString());
|
||||||
|
|
||||||
|
supported.Should().HaveCount(2);
|
||||||
|
supported.First().Should().NotBeNull();
|
||||||
|
supported.First().Id.Should().Be(NewznabStandardCategory.MoviesHD.Id);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void should_get_category_by_tracker_desc()
|
||||||
|
{
|
||||||
|
Subject.AddCategoryMapping(1, NewznabStandardCategory.MoviesSD, "Filme SD");
|
||||||
|
Subject.AddCategoryMapping(2, NewznabStandardCategory.MoviesHD, "Filme HD");
|
||||||
|
|
||||||
|
var supported = Subject.MapTrackerCatDescToNewznab("Filme HD");
|
||||||
|
|
||||||
|
supported.Should().HaveCount(2);
|
||||||
|
supported.First().Should().NotBeNull();
|
||||||
|
supported.First().Id.Should().Be(NewznabStandardCategory.MoviesHD.Id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@@ -124,8 +124,18 @@ namespace NzbDrone.Core.Applications.Lidarr
|
|||||||
|
|
||||||
if (!lidarrIndexer.Equals(remoteIndexer))
|
if (!lidarrIndexer.Equals(remoteIndexer))
|
||||||
{
|
{
|
||||||
|
if (indexer.Capabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Any())
|
||||||
|
{
|
||||||
|
// Update the indexer if it still has categories that match
|
||||||
_lidarrV1Proxy.UpdateIndexer(lidarrIndexer, Settings);
|
_lidarrV1Proxy.UpdateIndexer(lidarrIndexer, Settings);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Else remove it, it no longer should be used
|
||||||
|
_lidarrV1Proxy.RemoveIndexer(remoteIndexer.Id, Settings);
|
||||||
|
_appIndexerMapService.Delete(indexerMapping.Id);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@@ -124,8 +124,18 @@ namespace NzbDrone.Core.Applications.Radarr
|
|||||||
|
|
||||||
if (!radarrIndexer.Equals(remoteIndexer))
|
if (!radarrIndexer.Equals(remoteIndexer))
|
||||||
{
|
{
|
||||||
|
if (indexer.Capabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Any())
|
||||||
|
{
|
||||||
|
// Update the indexer if it still has categories that match
|
||||||
_radarrV3Proxy.UpdateIndexer(radarrIndexer, Settings);
|
_radarrV3Proxy.UpdateIndexer(radarrIndexer, Settings);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Else remove it, it no longer should be used
|
||||||
|
_radarrV3Proxy.RemoveIndexer(remoteIndexer.Id, Settings);
|
||||||
|
_appIndexerMapService.Delete(indexerMapping.Id);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@@ -124,8 +124,18 @@ namespace NzbDrone.Core.Applications.Readarr
|
|||||||
|
|
||||||
if (!readarrIndexer.Equals(remoteIndexer))
|
if (!readarrIndexer.Equals(remoteIndexer))
|
||||||
{
|
{
|
||||||
|
if (indexer.Capabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Any())
|
||||||
|
{
|
||||||
|
// Update the indexer if it still has categories that match
|
||||||
_readarrV1Proxy.UpdateIndexer(readarrIndexer, Settings);
|
_readarrV1Proxy.UpdateIndexer(readarrIndexer, Settings);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Else remove it, it no longer should be used
|
||||||
|
_readarrV1Proxy.RemoveIndexer(remoteIndexer.Id, Settings);
|
||||||
|
_appIndexerMapService.Delete(indexerMapping.Id);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@@ -124,8 +124,18 @@ namespace NzbDrone.Core.Applications.Sonarr
|
|||||||
|
|
||||||
if (!sonarrIndexer.Equals(remoteIndexer))
|
if (!sonarrIndexer.Equals(remoteIndexer))
|
||||||
{
|
{
|
||||||
|
if (indexer.Capabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Any() || indexer.Capabilities.Categories.SupportedCategories(Settings.AnimeSyncCategories.ToArray()).Any())
|
||||||
|
{
|
||||||
|
// Update the indexer if it still has categories that match
|
||||||
_sonarrV3Proxy.UpdateIndexer(sonarrIndexer, Settings);
|
_sonarrV3Proxy.UpdateIndexer(sonarrIndexer, Settings);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Else remove it, it no longer should be used
|
||||||
|
_sonarrV3Proxy.RemoveIndexer(remoteIndexer.Id, Settings);
|
||||||
|
_appIndexerMapService.Delete(indexerMapping.Id);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@@ -114,7 +114,7 @@ namespace NzbDrone.Core.Applications.Whisparr
|
|||||||
var appMappings = _appIndexerMapService.GetMappingsForApp(Definition.Id);
|
var appMappings = _appIndexerMapService.GetMappingsForApp(Definition.Id);
|
||||||
var indexerMapping = appMappings.FirstOrDefault(m => m.IndexerId == indexer.Id);
|
var indexerMapping = appMappings.FirstOrDefault(m => m.IndexerId == indexer.Id);
|
||||||
|
|
||||||
var radarrIndexer = BuildWhisparrIndexer(indexer, indexer.Protocol, indexerMapping?.RemoteIndexerId ?? 0);
|
var whisparrIndexer = BuildWhisparrIndexer(indexer, indexer.Protocol, indexerMapping?.RemoteIndexerId ?? 0);
|
||||||
|
|
||||||
var remoteIndexer = _whisparrV3Proxy.GetIndexer(indexerMapping.RemoteIndexerId, Settings);
|
var remoteIndexer = _whisparrV3Proxy.GetIndexer(indexerMapping.RemoteIndexerId, Settings);
|
||||||
|
|
||||||
@@ -122,9 +122,19 @@ namespace NzbDrone.Core.Applications.Whisparr
|
|||||||
{
|
{
|
||||||
_logger.Debug("Remote indexer found, syncing with current settings");
|
_logger.Debug("Remote indexer found, syncing with current settings");
|
||||||
|
|
||||||
if (!radarrIndexer.Equals(remoteIndexer))
|
if (!whisparrIndexer.Equals(remoteIndexer))
|
||||||
{
|
{
|
||||||
_whisparrV3Proxy.UpdateIndexer(radarrIndexer, Settings);
|
if (indexer.Capabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Any())
|
||||||
|
{
|
||||||
|
// Update the indexer if it still has categories that match
|
||||||
|
_whisparrV3Proxy.UpdateIndexer(whisparrIndexer, Settings);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Else remove it, it no longer should be used
|
||||||
|
_whisparrV3Proxy.RemoveIndexer(remoteIndexer.Id, Settings);
|
||||||
|
_appIndexerMapService.Delete(indexerMapping.Id);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -134,8 +144,8 @@ namespace NzbDrone.Core.Applications.Whisparr
|
|||||||
if (indexer.Capabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Any())
|
if (indexer.Capabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Any())
|
||||||
{
|
{
|
||||||
_logger.Debug("Remote indexer not found, re-adding {0} to Whisparr", indexer.Name);
|
_logger.Debug("Remote indexer not found, re-adding {0} to Whisparr", indexer.Name);
|
||||||
radarrIndexer.Id = 0;
|
whisparrIndexer.Id = 0;
|
||||||
var newRemoteIndexer = _whisparrV3Proxy.AddIndexer(radarrIndexer, Settings);
|
var newRemoteIndexer = _whisparrV3Proxy.AddIndexer(whisparrIndexer, Settings);
|
||||||
_appIndexerMapService.Insert(new AppIndexerMap { AppId = Definition.Id, IndexerId = indexer.Id, RemoteIndexerId = newRemoteIndexer.Id });
|
_appIndexerMapService.Insert(new AppIndexerMap { AppId = Definition.Id, IndexerId = indexer.Id, RemoteIndexerId = newRemoteIndexer.Id });
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
Reference in New Issue
Block a user