You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Lidarr/src/NzbDrone.Core/Housekeeping/Housekeepers/UpdateAnimeCategories.cs

64 lines
2.2 KiB

using System.Collections.Generic;
using System.Linq;
using NLog;
using NzbDrone.Common.Extensions;
using NzbDrone.Core.Indexers;
using NzbDrone.Core.Indexers.Newznab;
namespace NzbDrone.Core.Housekeeping.Housekeepers
{
public class UpdateAnimeCategories : IHousekeepingTask
{
private readonly IIndexerFactory _indexerFactory;
private readonly Logger _logger;
private const int NZBS_ORG_ANIME_ID = 7040;
private const int NEWZNAB_ANIME_ID = 5070;
public UpdateAnimeCategories(IIndexerFactory indexerFactory, Logger logger)
{
_indexerFactory = indexerFactory;
_logger = logger;
}
public void Clean()
{
//TODO: We should remove this before merging it into develop
_logger.Debug("Updating Anime Categories for newznab indexers");
var indexers = _indexerFactory.All().Where(i => i.Implementation == typeof (Newznab).Name);
foreach (var indexer in indexers)
{
var settings = indexer.Settings as NewznabSettings;
if (settings.Url.ContainsIgnoreCase("nzbs.org") && settings.Categories.Contains(NZBS_ORG_ANIME_ID))
{
var animeCategories = new List<int>(settings.AnimeCategories);
animeCategories.Add(NZBS_ORG_ANIME_ID);
settings.AnimeCategories = animeCategories;
settings.Categories = settings.Categories.Where(c => c != NZBS_ORG_ANIME_ID);
indexer.Settings = settings;
_indexerFactory.Update(indexer);
}
else if (settings.Categories.Contains(NEWZNAB_ANIME_ID))
{
var animeCategories = new List<int>(settings.AnimeCategories);
animeCategories.Add(NEWZNAB_ANIME_ID);
settings.AnimeCategories = animeCategories;
settings.Categories = settings.Categories.Where(c => c != NEWZNAB_ANIME_ID);
indexer.Settings = settings;
_indexerFactory.Update(indexer);
}
}
}
}
}