parent
67943edfbc
commit
4cb38d4896
src/NzbDrone.Core/Tv
|
@ -198,34 +198,11 @@ namespace NzbDrone.Core.Tv
|
|||
|
||||
private void UpdateTags(Series series)
|
||||
{
|
||||
_logger.Trace("Updating tags for {0}", series);
|
||||
var tagsUpdated = _seriesService.UpdateTags(series);
|
||||
|
||||
var tagsAdded = new HashSet<int>();
|
||||
var tagsRemoved = new HashSet<int>();
|
||||
var changes = _autoTaggingService.GetTagChanges(series);
|
||||
|
||||
foreach (var tag in changes.TagsToRemove)
|
||||
{
|
||||
if (series.Tags.Contains(tag))
|
||||
{
|
||||
series.Tags.Remove(tag);
|
||||
tagsRemoved.Add(tag);
|
||||
}
|
||||
}
|
||||
|
||||
foreach (var tag in changes.TagsToAdd)
|
||||
{
|
||||
if (!series.Tags.Contains(tag))
|
||||
{
|
||||
series.Tags.Add(tag);
|
||||
tagsAdded.Add(tag);
|
||||
}
|
||||
}
|
||||
|
||||
if (tagsAdded.Any() || tagsRemoved.Any())
|
||||
if (tagsUpdated)
|
||||
{
|
||||
_seriesService.UpdateSeries(series);
|
||||
_logger.Debug("Updated tags for '{0}'. Added: {1}, Removed: {2}", series.Title, tagsAdded.Count, tagsRemoved.Count);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -2,6 +2,7 @@ using System.Collections.Generic;
|
|||
using System.Linq;
|
||||
using NLog;
|
||||
using NzbDrone.Common.Extensions;
|
||||
using NzbDrone.Core.AutoTagging;
|
||||
using NzbDrone.Core.Messaging.Events;
|
||||
using NzbDrone.Core.Parser;
|
||||
using NzbDrone.Core.Tv.Events;
|
||||
|
@ -30,6 +31,7 @@ namespace NzbDrone.Core.Tv
|
|||
List<Series> UpdateSeries(List<Series> series, bool useExistingRelativeFolder);
|
||||
bool SeriesPathExists(string folder);
|
||||
void RemoveAddOptions(Series series);
|
||||
bool UpdateTags(Series series);
|
||||
}
|
||||
|
||||
public class SeriesService : ISeriesService
|
||||
|
@ -38,18 +40,21 @@ namespace NzbDrone.Core.Tv
|
|||
private readonly IEventAggregator _eventAggregator;
|
||||
private readonly IEpisodeService _episodeService;
|
||||
private readonly IBuildSeriesPaths _seriesPathBuilder;
|
||||
private readonly IAutoTaggingService _autoTaggingService;
|
||||
private readonly Logger _logger;
|
||||
|
||||
public SeriesService(ISeriesRepository seriesRepository,
|
||||
IEventAggregator eventAggregator,
|
||||
IEpisodeService episodeService,
|
||||
IBuildSeriesPaths seriesPathBuilder,
|
||||
IAutoTaggingService autoTaggingService,
|
||||
Logger logger)
|
||||
{
|
||||
_seriesRepository = seriesRepository;
|
||||
_eventAggregator = eventAggregator;
|
||||
_episodeService = episodeService;
|
||||
_seriesPathBuilder = seriesPathBuilder;
|
||||
_autoTaggingService = autoTaggingService;
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
|
@ -205,6 +210,7 @@ namespace NzbDrone.Core.Tv
|
|||
|
||||
// Never update AddOptions when updating a series, keep it the same as the existing stored series.
|
||||
series.AddOptions = storedSeries.AddOptions;
|
||||
UpdateTags(series);
|
||||
|
||||
var updatedSeries = _seriesRepository.Update(series);
|
||||
if (publishUpdatedEvent)
|
||||
|
@ -233,6 +239,8 @@ namespace NzbDrone.Core.Tv
|
|||
{
|
||||
_logger.Trace("Not changing path for: {0}", s.Title);
|
||||
}
|
||||
|
||||
UpdateTags(s);
|
||||
}
|
||||
|
||||
_seriesRepository.UpdateMany(series);
|
||||
|
@ -250,5 +258,41 @@ namespace NzbDrone.Core.Tv
|
|||
{
|
||||
_seriesRepository.SetFields(series, s => s.AddOptions);
|
||||
}
|
||||
|
||||
public bool UpdateTags(Series series)
|
||||
{
|
||||
_logger.Trace("Updating tags for {0}", series);
|
||||
|
||||
var tagsAdded = new HashSet<int>();
|
||||
var tagsRemoved = new HashSet<int>();
|
||||
var changes = _autoTaggingService.GetTagChanges(series);
|
||||
|
||||
foreach (var tag in changes.TagsToRemove)
|
||||
{
|
||||
if (series.Tags.Contains(tag))
|
||||
{
|
||||
series.Tags.Remove(tag);
|
||||
tagsRemoved.Add(tag);
|
||||
}
|
||||
}
|
||||
|
||||
foreach (var tag in changes.TagsToAdd)
|
||||
{
|
||||
if (!series.Tags.Contains(tag))
|
||||
{
|
||||
series.Tags.Add(tag);
|
||||
tagsAdded.Add(tag);
|
||||
}
|
||||
}
|
||||
|
||||
if (tagsAdded.Any() || tagsRemoved.Any())
|
||||
{
|
||||
_logger.Debug("Updated tags for '{0}'. Added: {1}, Removed: {2}", series.Title, tagsAdded.Count, tagsRemoved.Count);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue