mirror of
https://github.com/lidarr/lidarr.git
synced 2025-07-31 12:10:19 -07:00
Refactor Various HouseKeepers
This commit is contained in:
parent
a956e22ce1
commit
6685644c5c
13 changed files with 65 additions and 55 deletions
|
@ -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);
|
||||||
|
@ -84,4 +84,4 @@ namespace NzbDrone.Core.Housekeeping.Housekeepers
|
||||||
return !text.ToLowerInvariant().Contains("html");
|
return !text.ToLowerInvariant().Contains("html");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -43,7 +43,17 @@ namespace NzbDrone.Core.MetadataSource.SkyHook
|
||||||
_logger.Debug("Getting Artist with LidarrAPI.MetadataID of {0}", foreignArtistId);
|
_logger.Debug("Getting Artist with LidarrAPI.MetadataID of {0}", foreignArtistId);
|
||||||
|
|
||||||
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…
Add table
Add a link
Reference in a new issue