public async Task StartDownloadPlaylist(PlaylistFile playlist)
        {
            foreach (var audio in playlist.TracksFiles)
            {
                var track = new DownloadAudioFile()
                {
                    Title     = audio.Title.Replace("*", "").Replace(".", "").Replace("\"", "").Replace("\\", "").Replace("/", "").Replace("[", "").Replace("]", "").Replace(":", "").Replace(";", "").Replace("|", "").Replace("=", "").Replace(",", ""),
                    AlbumName = playlist.Name.Replace("*", "").Replace(".", "").Replace("\"", "").Replace("\\", "").Replace("/", "").Replace("[", "").Replace("]", "").Replace(":", "").Replace(";", "").Replace("|", "").Replace("=", "").Replace(",", ""),
                    AlbumYear = playlist.Year,
                    Artist    = audio.Artist.Replace("*", "").Replace(".", "").Replace("\"", "").Replace("\\", "").Replace("/", "").Replace("[", "").Replace("]", "").Replace(":", "").Replace(";", "").Replace("|", "").Replace("=", "").Replace(",", ""),
                    Cover     = audio.Cover,
                    Url       = audio.SourceString,
                    FromAlbum = true,
                    AudioFile = audio
                };
                AddToQueue(track);
            }

            StorageFolder folder = await KnownFolders.MusicLibrary.TryGetItemAsync("Music X") == null ?
                                   await KnownFolders.MusicLibrary.CreateFolderAsync("Music X")
                : await KnownFolders.MusicLibrary.GetFolderAsync("Music X");

            var           playlistName   = playlist.Name.Replace("*", "").Replace(".", "").Replace("\"", "").Replace("\\", "").Replace("/", "").Replace("[", "").Replace("]", "").Replace(":", "").Replace(";", "").Replace("|", "").Replace("=", "").Replace(",", "");
            StorageFolder playlistFolder = await folder.TryGetItemAsync(playlistName) == null ?
                                           await folder.CreateFolderAsync(playlistName)
                : await folder.GetFolderAsync(playlistName);

            var task = Task.Run(async() =>
            {
                await DownloadAudio(QueueTracks.First());
            });
        }
        private void DonwloadFileComplete(object a, DownloadAudioFile e)
        {
            var settings = ApplicationData.Current.LocalSettings;

            settings.Values["CountDownloads"] = (int)settings.Values["CountDownloads"] + 1;

            QueueTracks.Remove(e);
            if (QueueTracks.Count == 0)
            {
                DispatcherHelper.CheckBeginInvokeOnUI(() =>
                {
                    this.Timer.Stop();
                    DownloadQueueComplete?.Invoke(this, null);
                });
            }
            else
            {
                var task = Task.Run(async() =>
                {
                    await DownloadAudio(QueueTracks.First());
                });
            }

            CurrentDownloadTrack = null;
        }
        private void AddToQueue(DownloadAudioFile track)
        {
            if (QueueTracks == null)
            {
                QueueTracks = new List <DownloadAudioFile>();
            }

            if (QueueTracks.Any(t => t == track))
            {
                return;
            }
            QueueTracks.Add(track);
        }
        private HttpResponse QueueContentsResponse()
        {
            var queue = new QueueTracks();
            var track = Player.CurrentTrack;

            if (track != null)
            {
                var container = Player.ActivePlaylist ?? Player.MediaLibrary;

                var canp = new CanpData
                {
                    DatabaseId      = id,
                    ContainerId     = container.Id,
                    ContainerItemId = track.Id,
                    TrackId         = track.Id
                };

                queue.Add(new QueueTrack()
                {
                    TrackSpecs  = canp.Data,
                    AlbumId     = (track.Album != null) ? track.Album.PersistentId : 0,
                    Album       = track.AlbumName,
                    AlbumArtist = (track.AlbumArtist != null) ? track.AlbumArtist.Id : 0,
                    Artist      = track.ArtistName,
                    Title       = track.Title,
                    Genre       = track.GenreName,
                    MediaKind   = 1,
                    QueueIndex  = 1,
                    Upcoming    = false
                });
            }

            return(new DmapResponse(new
            {
                ceQR = new
                {
                    mstt = 200,
                    muty = (byte)0,
                    ceQu = true, // update???
                    mlcl = queue,
                    apsm = false,
                    aprm = (byte)0
                }
            }));
        }