Added initial database audio library class logic.

This commit is contained in:
2025-02-27 21:58:27 -05:00
parent e2af19d9bb
commit e8f61da6f8
3 changed files with 178 additions and 13 deletions

View File

@@ -1,10 +1,11 @@
using Harmonia.Core.Imaging;
using Harmonia.Core.Engine;
using Harmonia.Core.Imaging;
using Harmonia.Core.Models;
using Harmonia.Core.Tags;
namespace Harmonia.Core.Scanner;
public class AudioFileScanner(ITagResolver tagResolver, IAudioImageExtractor audioImageExtractor) : IAudioFileScanner
public class AudioFileScanner(IAudioEngine audioEngine, ITagResolver tagResolver, IAudioImageExtractor audioImageExtractor) : IAudioFileScanner
{
public Song[] GetSongs(string[] fileNames)
{
@@ -54,4 +55,33 @@ public class AudioFileScanner(ITagResolver tagResolver, IAudioImageExtractor aud
return song;
}
public Song[] GetSongsFromPath(string path)
{
FileInfo[] fileInfoList = GetAllFilesFromDirectory(path);
string[] fileNames = [.. fileInfoList.Select(x => x.FullName)];
return GetSongs(fileNames);
}
private FileInfo[] GetAllFilesFromDirectory(string directoryName)
{
DirectoryInfo directoryInfo = new(directoryName);
if (directoryInfo.Exists == false)
return [];
List<FileInfo> fileInfoList = [];
var directories = directoryInfo.GetDirectories().Where(x => x.Attributes.HasFlag(FileAttributes.Hidden) == false);
var extensions = audioEngine.SupportedFormats.Select(x => x.Replace("*.", ".").ToLower()).ToList();
var files = directoryInfo.EnumerateFiles("*.*", SearchOption.AllDirectories).Where(x => x.Attributes.HasFlag(FileAttributes.Hidden) == false);
var songFiles = files.Where(x => extensions.Contains(x.Extension.ToLower())).OrderBy(x => x.Name);
foreach (FileInfo fileInfo in songFiles)
fileInfoList.Add(fileInfo);
return [.. fileInfoList];
}
}