Updated SongPictureInfo use to async copy of picture data stream. Update other classes accordingly.

This commit is contained in:
2025-03-02 23:28:28 -05:00
parent 1a9c1a5478
commit 0675131195
11 changed files with 178 additions and 149 deletions

View File

@@ -7,7 +7,7 @@ namespace Harmonia.Core.Scanner;
public class AudioFileScanner(IAudioEngine audioEngine, ITagResolver tagResolver, IAudioImageExtractor audioImageExtractor) : IAudioFileScanner
{
public Song[] GetSongs(string[] fileNames)
public async Task<Song[]> GetSongsAsync(string[] fileNames, CancellationToken cancellationToken)
{
List<Song> songs = [];
@@ -16,7 +16,7 @@ public class AudioFileScanner(IAudioEngine audioEngine, ITagResolver tagResolver
if (string.IsNullOrWhiteSpace(fileName) || File.Exists(fileName) == false)
continue;
Song? song = GetSong(fileName);
Song? song = await GetSongAsync(fileName, cancellationToken);
if (song == null)
continue;
@@ -27,11 +27,12 @@ public class AudioFileScanner(IAudioEngine audioEngine, ITagResolver tagResolver
return [.. songs];
}
private Song GetSong(string fileName)
private async Task<Song> GetSongAsync(string fileName, CancellationToken cancellationToken)
{
FileInfo fileInfo = new(fileName);
SongTagInfo songTagInfo = tagResolver.GetSongTagInfo(fileName);
using SongPictureInfo? songPictureInfo = audioImageExtractor.ExtractImage(fileName, songTagInfo);
//using SongPictureInfo? songPictureInfo = audioImageExtractor.ExtractImage(fileName, songTagInfo);
SongPictureInfo? songPictureInfo = await audioImageExtractor.ExtractImageAsync(fileName, songTagInfo, cancellationToken);
Song song = new()
{
@@ -56,12 +57,12 @@ public class AudioFileScanner(IAudioEngine audioEngine, ITagResolver tagResolver
return song;
}
public Song[] GetSongsFromPath(string path)
public async Task<Song[]> GetSongsFromPathAsync(string path, CancellationToken cancellationToken)
{
FileInfo[] fileInfoList = GetAllFilesFromDirectory(path);
string[] fileNames = [.. fileInfoList.Select(x => x.FullName)];
return GetSongs(fileNames);
return await GetSongsAsync(fileNames, cancellationToken);
}
private FileInfo[] GetAllFilesFromDirectory(string directoryName)