using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.IO; using Aurora.Models.Media; using Aurora.Services.Settings; using Aurora.Utils; namespace Aurora.Services.Library { public class LibraryService : ILibraryService { #region Fields private string _pathName; private string _extensions = ".wav,.mp3,.aiff,.flac,.m4a,.m4b,.wma"; private Dictionary _library; #endregion Fields public LibraryService(ISettingsService settingsService) { _library = new Dictionary(); this._pathName = settingsService.LibraryLocation; LoadLibrary(); } /// /// Gets the songs. /// /// The songs. public ObservableCollection GetLibrary() { ObservableCollection collection = new ObservableCollection(); foreach (KeyValuePair pair in _library) { collection.Add(pair.Value); } return collection; } public BaseMedia GetSong(string Id) { _library.TryGetValue(Id, out BaseMedia song); return song; } /// /// Loads library from files. /// private void LoadLibrary() { //Get songs List musicFiles = FileSystemUtils.TraverseFoldersAsync(_pathName, _extensions); foreach (FileInfo file in musicFiles) { TagLib.File tagFile = TagLib.File.Create(file.FullName); BaseMedia song = new LocalAudio(file); _library.Add(song.Id, song); } } } }