Updated audio image extraction logic. Added caching classes.

This commit is contained in:
2025-02-26 19:07:29 -05:00
parent b38e4dc858
commit dfdf514fe2
11 changed files with 259 additions and 14 deletions

View File

@@ -0,0 +1,36 @@
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;
}
}