Refactor Various HouseKeepers

pull/94/head
Qstick 7 years ago
parent a956e22ce1
commit 6685644c5c

@ -52,7 +52,7 @@ namespace NzbDrone.Core.Test.MetadataSource.SkyHook
{ {
artist.Should().NotBeNull(); artist.Should().NotBeNull();
artist.Name.Should().NotBeNullOrWhiteSpace(); artist.Name.Should().NotBeNullOrWhiteSpace();
artist.CleanName.Should().Be(Parser.Parser.CleanSeriesTitle(artist.Name)); artist.CleanName.Should().Be(Parser.Parser.CleanArtistName(artist.Name));
artist.SortName.Should().Be(Parser.Parser.NormalizeTitle(artist.Name)); artist.SortName.Should().Be(Parser.Parser.NormalizeTitle(artist.Name));
artist.Overview.Should().NotBeNullOrWhiteSpace(); artist.Overview.Should().NotBeNullOrWhiteSpace();
artist.Images.Should().NotBeEmpty(); artist.Images.Should().NotBeEmpty();

@ -31,7 +31,7 @@ namespace NzbDrone.Core.DecisionEngine.Specifications.Search
return Decision.Accept(); return Decision.Accept();
} }
if (Parser.Parser.CleanArtistTitle(singleAlbumSpec.AlbumTitle) != Parser.Parser.CleanArtistTitle(remoteAlbum.ParsedAlbumInfo.AlbumTitle)) if (Parser.Parser.CleanArtistName(singleAlbumSpec.AlbumTitle) != Parser.Parser.CleanArtistName(remoteAlbum.ParsedAlbumInfo.AlbumTitle))
{ {
_logger.Debug("Album does not match searched album title, skipping."); _logger.Debug("Album does not match searched album title, skipping.");
return Decision.Reject("Wrong album"); return Decision.Reject("Wrong album");

@ -1,4 +1,4 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using Marr.Data; using Marr.Data;
using NzbDrone.Common.Serializer; using NzbDrone.Common.Serializer;
@ -19,7 +19,7 @@ namespace NzbDrone.Core.Housekeeping.Housekeepers
{ {
var mapper = _database.GetDataMapper(); var mapper = _database.GetDataMapper();
var usedTags = new[] { "Series", "Notifications", "DelayProfiles", "Restrictions" } var usedTags = new[] { "Artists", "Notifications", "DelayProfiles", "Restrictions" }
.SelectMany(v => GetUsedTags(v, mapper)) .SelectMany(v => GetUsedTags(v, mapper))
.Distinct() .Distinct()
.ToArray(); .ToArray();

@ -1,30 +1,30 @@
using System; using System;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using NLog; using NLog;
using NzbDrone.Common.Disk; using NzbDrone.Common.Disk;
using NzbDrone.Core.Configuration; using NzbDrone.Core.Configuration;
using NzbDrone.Core.Extras.Metadata.Files; using NzbDrone.Core.Extras.Metadata.Files;
using NzbDrone.Core.Tv; using NzbDrone.Core.Music;
namespace NzbDrone.Core.Housekeeping.Housekeepers namespace NzbDrone.Core.Housekeeping.Housekeepers
{ {
public class DeleteBadMediaCovers : IHousekeepingTask public class DeleteBadMediaCovers : IHousekeepingTask
{ {
private readonly IMetadataFileService _metaFileService; private readonly IMetadataFileService _metaFileService;
private readonly ISeriesService _seriesService; private readonly IArtistService _artistService;
private readonly IDiskProvider _diskProvider; private readonly IDiskProvider _diskProvider;
private readonly IConfigService _configService; private readonly IConfigService _configService;
private readonly Logger _logger; private readonly Logger _logger;
public DeleteBadMediaCovers(IMetadataFileService metaFileService, public DeleteBadMediaCovers(IMetadataFileService metaFileService,
ISeriesService seriesService, IArtistService artistService,
IDiskProvider diskProvider, IDiskProvider diskProvider,
IConfigService configService, IConfigService configService,
Logger logger) Logger logger)
{ {
_metaFileService = metaFileService; _metaFileService = metaFileService;
_seriesService = seriesService; _artistService = artistService;
_diskProvider = diskProvider; _diskProvider = diskProvider;
_configService = configService; _configService = configService;
_logger = logger; _logger = logger;
@ -34,18 +34,18 @@ namespace NzbDrone.Core.Housekeeping.Housekeepers
{ {
if (!_configService.CleanupMetadataImages) return; if (!_configService.CleanupMetadataImages) return;
var series = _seriesService.GetAllSeries(); var artists = _artistService.GetAllArtists();
foreach (var show in series) foreach (var artist in artists)
{ {
var images = _metaFileService.GetFilesBySeries(show.Id) var images = _metaFileService.GetFilesBySeries(artist.Id)
.Where(c => c.LastUpdated > new DateTime(2014, 12, 27) && c.RelativePath.EndsWith(".jpg", StringComparison.InvariantCultureIgnoreCase)); .Where(c => c.LastUpdated > new DateTime(2014, 12, 27) && c.RelativePath.EndsWith(".jpg", StringComparison.InvariantCultureIgnoreCase));
foreach (var image in images) foreach (var image in images)
{ {
try try
{ {
var path = Path.Combine(show.Path, image.RelativePath); var path = Path.Combine(artist.Path, image.RelativePath);
if (!IsValid(path)) if (!IsValid(path))
{ {
_logger.Debug("Deleting invalid image file " + path); _logger.Debug("Deleting invalid image file " + path);

@ -0,0 +1,27 @@
using System.Linq;
using NzbDrone.Core.Parser;
using NzbDrone.Core.Music;
namespace NzbDrone.Core.Housekeeping.Housekeepers
{
public class UpdateCleanTitleForArtist : IHousekeepingTask
{
private readonly IArtistRepository _artistRepository;
public UpdateCleanTitleForArtist(IArtistRepository artistRepository)
{
_artistRepository = artistRepository;
}
public void Clean()
{
var artists = _artistRepository.All().ToList();
artists.ForEach(s =>
{
s.CleanName = s.CleanName.CleanArtistName();
_artistRepository.Update(s);
});
}
}
}

@ -1,27 +0,0 @@
using System.Linq;
using NzbDrone.Core.Parser;
using NzbDrone.Core.Tv;
namespace NzbDrone.Core.Housekeeping.Housekeepers
{
public class UpdateCleanTitleForSeries : IHousekeepingTask
{
private readonly ISeriesRepository _seriesRepository;
public UpdateCleanTitleForSeries(ISeriesRepository seriesRepository)
{
_seriesRepository = seriesRepository;
}
public void Clean()
{
var series = _seriesRepository.All().ToList();
series.ForEach(s =>
{
s.CleanTitle = s.CleanTitle.CleanSeriesTitle();
_seriesRepository.Update(s);
});
}
}
}

@ -44,6 +44,16 @@ namespace NzbDrone.Core.MetadataSource.SkyHook
SetCustomProvider(); SetCustomProvider();
if (primaryAlbumTypes == null)
{
primaryAlbumTypes = new List<string>();
}
if (secondaryAlbumTypes == null)
{
secondaryAlbumTypes = new List<string>();
}
var httpRequest = customerRequestBuilder.Create() var httpRequest = customerRequestBuilder.Create()
.SetSegment("route", "artists/" + foreignArtistId) .SetSegment("route", "artists/" + foreignArtistId)
.AddQueryParam("primTypes", string.Join("|",primaryAlbumTypes)) .AddQueryParam("primTypes", string.Join("|",primaryAlbumTypes))
@ -143,7 +153,7 @@ namespace NzbDrone.Core.MetadataSource.SkyHook
album.Title = resource.Title; album.Title = resource.Title;
album.ForeignAlbumId = resource.Id; album.ForeignAlbumId = resource.Id;
album.ReleaseDate = resource.ReleaseDate; album.ReleaseDate = resource.ReleaseDate;
album.CleanTitle = Parser.Parser.CleanArtistTitle(album.Title); album.CleanTitle = Parser.Parser.CleanArtistName(album.Title);
album.AlbumType = resource.Type; album.AlbumType = resource.Type;
album.Images = resource.Images.Select(MapImage).ToList(); album.Images = resource.Images.Select(MapImage).ToList();
album.Label = resource.Label; album.Label = resource.Label;
@ -174,8 +184,8 @@ namespace NzbDrone.Core.MetadataSource.SkyHook
artist.ForeignArtistId = resource.Id; artist.ForeignArtistId = resource.Id;
artist.Genres = resource.Genres; artist.Genres = resource.Genres;
artist.Overview = resource.Overview; artist.Overview = resource.Overview;
artist.NameSlug = Parser.Parser.CleanArtistTitle(artist.Name); artist.NameSlug = Parser.Parser.CleanArtistName(artist.Name);
artist.CleanName = Parser.Parser.CleanArtistTitle(artist.Name); artist.CleanName = Parser.Parser.CleanArtistName(artist.Name);
artist.SortName = Parser.Parser.NormalizeTitle(artist.Name); artist.SortName = Parser.Parser.NormalizeTitle(artist.Name);
artist.Disambiguation = resource.Disambiguation; artist.Disambiguation = resource.Disambiguation;
artist.ArtistType = resource.Type; artist.ArtistType = resource.Type;

@ -53,7 +53,7 @@ namespace NzbDrone.Core.Music
newArtist.Path = Path.Combine(newArtist.RootFolderPath, folderName); newArtist.Path = Path.Combine(newArtist.RootFolderPath, folderName);
} }
newArtist.CleanName = newArtist.Name.CleanArtistTitle(); newArtist.CleanName = newArtist.Name.CleanArtistName();
newArtist.SortName = ArtistNameNormalizer.Normalize(newArtist.Name, newArtist.ForeignArtistId); // There is no Sort Title newArtist.SortName = ArtistNameNormalizer.Normalize(newArtist.Name, newArtist.ForeignArtistId); // There is no Sort Title
newArtist.Added = DateTime.UtcNow; newArtist.Added = DateTime.UtcNow;

@ -177,7 +177,7 @@ namespace NzbDrone.Core.Music
public Album FindByTitle(int artistId, string title) public Album FindByTitle(int artistId, string title)
{ {
title = Parser.Parser.CleanArtistTitle(title); title = Parser.Parser.CleanArtistName(title);
return Query.Where(s => s.CleanTitle == title) return Query.Where(s => s.CleanTitle == title)
.AndWhere(s => s.ArtistId == artistId) .AndWhere(s => s.ArtistId == artistId)
@ -186,7 +186,7 @@ namespace NzbDrone.Core.Music
public Album FindByArtistAndName(string artistName, string cleanTitle) public Album FindByArtistAndName(string artistName, string cleanTitle)
{ {
var cleanArtistName = Parser.Parser.CleanArtistTitle(artistName); var cleanArtistName = Parser.Parser.CleanArtistName(artistName);
cleanTitle = cleanTitle.ToLowerInvariant(); cleanTitle = cleanTitle.ToLowerInvariant();
var query = Query.Join<Album, Artist>(JoinType.Inner, album => album.Artist, (album, artist) => album.ArtistId == artist.Id) var query = Query.Join<Album, Artist>(JoinType.Inner, album => album.Artist, (album, artist) => album.ArtistId == artist.Id)
.Where<Artist>(artist => artist.CleanName == cleanArtistName) .Where<Artist>(artist => artist.CleanName == cleanArtistName)

@ -77,7 +77,7 @@ namespace NzbDrone.Core.Music
public Artist FindByName(string title) public Artist FindByName(string title)
{ {
return _artistRepository.FindByName(title.CleanArtistTitle()); return _artistRepository.FindByName(title.CleanArtistName());
} }
public Artist FindByTitleInexact(string title) public Artist FindByTitleInexact(string title)

@ -76,7 +76,7 @@ namespace NzbDrone.Core.Music
albumToUpdate.LastInfoSync = DateTime.UtcNow; albumToUpdate.LastInfoSync = DateTime.UtcNow;
albumToUpdate.CleanTitle = album.CleanTitle; albumToUpdate.CleanTitle = album.CleanTitle;
albumToUpdate.Title = album.Title ?? "Unknown"; albumToUpdate.Title = album.Title ?? "Unknown";
albumToUpdate.CleanTitle = Parser.Parser.CleanArtistTitle(albumToUpdate.Title); albumToUpdate.CleanTitle = Parser.Parser.CleanArtistName(albumToUpdate.Title);
albumToUpdate.ArtistId = artist.Id; albumToUpdate.ArtistId = artist.Id;
albumToUpdate.AlbumType = album.AlbumType; albumToUpdate.AlbumType = album.AlbumType;
albumToUpdate.Genres = album.Genres; albumToUpdate.Genres = album.Genres;

@ -608,7 +608,7 @@
<Compile Include="Housekeeping\Housekeepers\DeleteBadMediaCovers.cs" /> <Compile Include="Housekeeping\Housekeepers\DeleteBadMediaCovers.cs" />
<Compile Include="Housekeeping\Housekeepers\FixFutureRunScheduledTasks.cs" /> <Compile Include="Housekeeping\Housekeepers\FixFutureRunScheduledTasks.cs" />
<Compile Include="Housekeeping\Housekeepers\TrimLogDatabase.cs" /> <Compile Include="Housekeeping\Housekeepers\TrimLogDatabase.cs" />
<Compile Include="Housekeeping\Housekeepers\UpdateCleanTitleForSeries.cs" /> <Compile Include="Housekeeping\Housekeepers\UpdateCleanTitleForArtist.cs" />
<Compile Include="Housekeeping\HousekeepingCommand.cs" /> <Compile Include="Housekeeping\HousekeepingCommand.cs" />
<Compile Include="Housekeeping\HousekeepingService.cs" /> <Compile Include="Housekeeping\HousekeepingService.cs" />
<Compile Include="Housekeeping\IHousekeepingTask.cs" /> <Compile Include="Housekeeping\IHousekeepingTask.cs" />

@ -789,15 +789,15 @@ namespace NzbDrone.Core.Parser
return NormalizeRegex.Replace(title, string.Empty).ToLower().RemoveAccent(); return NormalizeRegex.Replace(title, string.Empty).ToLower().RemoveAccent();
} }
public static string CleanArtistTitle(this string title) public static string CleanArtistName(this string name)
{ {
long number = 0; long number = 0;
//If Title only contains numbers return it as is. //If Title only contains numbers return it as is.
if (long.TryParse(title, out number)) if (long.TryParse(name, out number))
return title; return name;
return NormalizeRegex.Replace(title, string.Empty).ToLower().RemoveAccent(); return NormalizeRegex.Replace(name, string.Empty).ToLower().RemoveAccent();
} }
public static string NormalizeEpisodeTitle(string title) public static string NormalizeEpisodeTitle(string title)

Loading…
Cancel
Save