93be6dc100
Added PageContainer to dynamically load pages within the main content. Added player component to control music playback(Half functional). Added playback changed event not the player service.
65 lines
1.8 KiB
C#
65 lines
1.8 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Collections.ObjectModel;
|
|
using System.IO;
|
|
using Aurora.Backend.Models;
|
|
using Aurora.Backend.Utils;
|
|
|
|
namespace Aurora.Backend.Services
|
|
{
|
|
public class LibraryService : BaseService<LibraryService>
|
|
{
|
|
#region Fields
|
|
private string _pathName = "/Users/brandonwatson/Music/iTunes/iTunes Media/Music";
|
|
private string _extensions = ".wav,.mp3,.aiff,.flac,.m4a,.m4b,.wma";
|
|
private Dictionary<string, BaseMedia> _library;
|
|
|
|
|
|
#endregion Fields
|
|
|
|
public LibraryService()
|
|
{
|
|
_library = new Dictionary<string, BaseMedia>();
|
|
LoadLibrary();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets the songs.
|
|
/// </summary>
|
|
/// <returns>The songs.</returns>
|
|
public ObservableCollection<BaseMedia> GetLibrary()
|
|
{
|
|
ObservableCollection<BaseMedia> collection = new ObservableCollection<BaseMedia>();
|
|
foreach (KeyValuePair<string, BaseMedia> pair in _library)
|
|
{
|
|
collection.Add(pair.Value);
|
|
}
|
|
|
|
return collection;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Loads library from files.
|
|
/// </summary>
|
|
private void LoadLibrary()
|
|
{
|
|
//Get songs
|
|
List<FileInfo> musicFiles = FileSystemUtils.TraverseFoldersAsync(_pathName, _extensions);
|
|
|
|
foreach (FileInfo file in musicFiles)
|
|
{
|
|
TagLib.File tagFile = TagLib.File.Create(file.FullName);
|
|
|
|
BaseMedia song = new LocalAudio(file)
|
|
{
|
|
Title = tagFile.Tag.Title,
|
|
Album = tagFile.Tag.Album,
|
|
Artist = tagFile.Tag.FirstAlbumArtist
|
|
};
|
|
|
|
_library.Add(song.Id, song);
|
|
}
|
|
}
|
|
}
|
|
}
|