Updated SongPictureInfo use to async copy of picture data stream. Update other classes accordingly.
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -4,6 +4,6 @@ namespace Harmonia.Core.Scanner;
|
||||
|
||||
public interface IAudioFileScanner
|
||||
{
|
||||
Song[] GetSongs(string[] fileNames);
|
||||
Song[] GetSongsFromPath(string path);
|
||||
Task<Song[]> GetSongsAsync(string[] fileNames, CancellationToken cancellationToken);
|
||||
Task<Song[]> GetSongsFromPathAsync(string path, CancellationToken cancellationToken);
|
||||
}
|
||||
Reference in New Issue
Block a user