mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-05-24 02:02:29 -04:00
Add Genre cleanup and fix cleanup filter queries (#13891)
This commit is contained in:
parent
294b2f90d1
commit
cad8de9701
@ -1,6 +1,9 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using System.Globalization;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using Jellyfin.Data.Enums;
|
||||||
|
using MediaBrowser.Controller.Entities;
|
||||||
using MediaBrowser.Controller.Library;
|
using MediaBrowser.Controller.Library;
|
||||||
using MediaBrowser.Controller.Persistence;
|
using MediaBrowser.Controller.Persistence;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
@ -75,6 +78,26 @@ namespace Emby.Server.Implementations.Library.Validators
|
|||||||
progress.Report(percent);
|
progress.Report(percent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var deadEntities = _libraryManager.GetItemList(new InternalItemsQuery
|
||||||
|
{
|
||||||
|
IncludeItemTypes = [BaseItemKind.Genre],
|
||||||
|
IsDeadGenre = true,
|
||||||
|
IsLocked = false
|
||||||
|
});
|
||||||
|
|
||||||
|
foreach (var item in deadEntities)
|
||||||
|
{
|
||||||
|
_logger.LogInformation("Deleting dead {ItemType} {ItemId} {ItemName}", item.GetType().Name, item.Id.ToString("N", CultureInfo.InvariantCulture), item.Name);
|
||||||
|
|
||||||
|
_libraryManager.DeleteItem(
|
||||||
|
item,
|
||||||
|
new DeleteOptions
|
||||||
|
{
|
||||||
|
DeleteFileLocation = false
|
||||||
|
},
|
||||||
|
false);
|
||||||
|
}
|
||||||
|
|
||||||
progress.Report(100);
|
progress.Report(100);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1962,13 +1962,19 @@ public sealed class BaseItemRepository
|
|||||||
if (filter.IsDeadArtist.HasValue && filter.IsDeadArtist.Value)
|
if (filter.IsDeadArtist.HasValue && filter.IsDeadArtist.Value)
|
||||||
{
|
{
|
||||||
baseQuery = baseQuery
|
baseQuery = baseQuery
|
||||||
.Where(e => e.ItemValues!.Count(f => f.ItemValue.Type == ItemValueType.Artist || f.ItemValue.Type == ItemValueType.AlbumArtist) == 1);
|
.Where(e => !context.ItemValues.Where(f => _getAllArtistsValueTypes.Contains(f.Type)).Any(f => f.Value == e.Name));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (filter.IsDeadStudio.HasValue && filter.IsDeadStudio.Value)
|
if (filter.IsDeadStudio.HasValue && filter.IsDeadStudio.Value)
|
||||||
{
|
{
|
||||||
baseQuery = baseQuery
|
baseQuery = baseQuery
|
||||||
.Where(e => e.ItemValues!.Count(f => f.ItemValue.Type == ItemValueType.Studios) == 1);
|
.Where(e => !context.ItemValues.Where(f => _getStudiosValueTypes.Contains(f.Type)).Any(f => f.Value == e.Name));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (filter.IsDeadGenre.HasValue && filter.IsDeadGenre.Value)
|
||||||
|
{
|
||||||
|
baseQuery = baseQuery
|
||||||
|
.Where(e => !context.ItemValues.Where(f => _getGenreValueTypes.Contains(f.Type)).Any(f => f.Value == e.Name));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (filter.IsDeadPerson.HasValue && filter.IsDeadPerson.Value)
|
if (filter.IsDeadPerson.HasValue && filter.IsDeadPerson.Value)
|
||||||
|
@ -306,6 +306,8 @@ namespace MediaBrowser.Controller.Entities
|
|||||||
|
|
||||||
public bool? IsDeadStudio { get; set; }
|
public bool? IsDeadStudio { get; set; }
|
||||||
|
|
||||||
|
public bool? IsDeadGenre { get; set; }
|
||||||
|
|
||||||
public bool? IsDeadPerson { get; set; }
|
public bool? IsDeadPerson { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user