36 lines
911 B
C#
36 lines
911 B
C#
using Harmonia.Core.Imaging;
|
|
using Harmonia.Core.Models;
|
|
|
|
namespace Harmonia.Core.Caching;
|
|
|
|
public class AudioImageMemoryCache(IAudioImageExtractor audioImageExtractor) : MemoryCache<Song, SongPictureInfo>, IAudioImageCache
|
|
{
|
|
protected override object? GetKey(Song key)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(key.ImageHash) == false)
|
|
{
|
|
return key.ImageHash;
|
|
}
|
|
else if (string.IsNullOrWhiteSpace(key.ImageName) == false)
|
|
{
|
|
return key.ImageName;
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
protected override SongPictureInfo? Fetch(Song key)
|
|
{
|
|
return audioImageExtractor.ExtractImage(key.FileName);
|
|
}
|
|
|
|
protected override void AddToCache(object key, SongPictureInfo entry)
|
|
{
|
|
base.AddToCache(key, entry);
|
|
}
|
|
|
|
protected override long GetEntrySize(SongPictureInfo entry)
|
|
{
|
|
return entry.Size;
|
|
}
|
|
} |