Added initial database audio library class logic.
This commit is contained in:
@@ -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];
|
||||
}
|
||||
}
|
||||
@@ -5,4 +5,5 @@ namespace Harmonia.Core.Scanner;
|
||||
public interface IAudioFileScanner
|
||||
{
|
||||
Song[] GetSongs(string[] fileNames);
|
||||
Song[] GetSongsFromPath(string path);
|
||||
}
|
||||
Reference in New Issue
Block a user