Exemplo n.º 1
0
        public static async Task SavePlaylist(PlaylistFile playlist)
        {
            var pathPlaylists = await ApplicationData.Current.LocalFolder.GetFolderAsync("Playlists");

            StorageFile filePlaylist;

            try
            {
                filePlaylist = await pathPlaylists.GetFileAsync($"Id{playlist.Id}.json");
            }
            catch
            {
                filePlaylist = await pathPlaylists.CreateFileAsync($"Id{playlist.Id}.json");
            }

            var jsonString = JsonConvert.SerializeObject(playlist);

            try
            {
                await FileIO.WriteTextAsync(filePlaylist, jsonString);
            }catch (Exception e)
            {
                await ContentDialogService.Show(new ExceptionDialog("Невозможно сохранить плейлист", "Возможно, этот плейлист уже существует.", e));
            }
        }
Exemplo n.º 2
0
        public static async Task SaveConfig(ConfigApp config)
        {
            try
            {
                var configFile = await StaticContent.LocalFolder.GetFileAsync("ConfigApp.json");

                var configString = JsonConvert.SerializeObject(config);
                await FileIO.WriteTextAsync(configFile, configString);
            }catch (Exception e)
            {
                await ContentDialogService.Show(new ExceptionDialog("Не удалось сохранить настройки приложения", "Возможно, файл занят другим приложением, если ошибка будет повторятся, переустановите приложение", e));
            }
        }
Exemplo n.º 3
0
        public async static Task PurchaseAddOn(string storeId)
        {
            if (context == null)
            {
                context = StoreContext.GetDefault();
            }

            StorePurchaseResult result = await context.RequestPurchaseAsync(storeId);

            string extendedError = string.Empty;

            if (result.ExtendedError != null)
            {
                extendedError = result.ExtendedError.Message;
            }

            switch (result.Status)
            {
            case StorePurchaseStatus.AlreadyPurchased:
                var settings = ApplicationData.Current.LocalSettings;
                settings.Values["IsPro"] = true;
                await ContentDialogService.Show(new ThanksBuyProContentDialog());

                break;

            case StorePurchaseStatus.Succeeded:
                var settings2 = ApplicationData.Current.LocalSettings;
                settings2.Values["IsPro"] = true;
                StaticContent.IsPro       = true;
                await ContentDialogService.Show(new ThanksBuyProContentDialog());

                break;

            case StorePurchaseStatus.NotPurchased:
                await new MessageDialog($"Произошла ошибка при покупке Music X Pro: {extendedError}", "Покупка Music X Pro").ShowAsync();
                break;

            case StorePurchaseStatus.NetworkError:
                await new MessageDialog($"Невозможно купить Music X Pro из-за проблем с интернет-подключением", "Покупка Music X Pro").ShowAsync();
                break;

            case StorePurchaseStatus.ServerError:
                await new MessageDialog($"Произошла ошибка на серере при покупке Music X Pro: {extendedError}", "Покупка Music X Pro").ShowAsync();
                break;

            default:
                await new MessageDialog($"Произошла неизвестная на сервере при покупке Music X Pro: {extendedError}", "Покупка Music X Pro").ShowAsync();
                break;
            }
        }
Exemplo n.º 4
0
 /// <summary>
 /// Перейти на страницу
 /// </summary>
 /// <param name="page">Страница</param>
 /// <param name="data">Данные</param>
 public void Go(Type page, object data = null)
 {
     try
     {
         if (this.Pages.Count > 0)
         {
             if (this.Pages.Peek() == page)
             {
                 return;
             }
         }
         this.Pages.Push(page);
         this.UpdateButtonBack();
         this.RootFrame.CacheSize = 3;
         this.RootFrame.Navigate(page, data);
     }catch (Exception e)
     {
         ContentDialogService.Show(new ExceptionDialog("Невозможно перейти на страницу", "Попробуйте перезапустить приложение", e), 1);
     }
 }
Exemplo n.º 5
0
        public static async Task SetPlaylistLocal()
        {
            try
            {
                var pathPlaylists = await ApplicationData.Current.LocalFolder.GetFolderAsync("Playlists");

                var files = await pathPlaylists.GetFilesAsync();

                foreach (var file in files)
                {
                    var json = await FileIO.ReadTextAsync(file);

                    var playlist = JsonConvert.DeserializeObject <PlaylistFile>(json);
                    StaticContent.Playlists.Add(playlist);
                }
            }catch (Exception e)
            {
                await ContentDialogService.Show(new ExceptionDialog("Невозможно получить список плейлистов", "Вам стоит переустановить приложение, если эта ошибка не изчезнет.", e));
            }
        }
Exemplo n.º 6
0
        public async static Task <PlaylistFile> GetById(long id)
        {
            var pathPlaylists = await ApplicationData.Current.LocalFolder.GetFolderAsync("Playlists");

            StorageFile file;

            try
            {
                file = await pathPlaylists.GetFileAsync($"Id{id}.json");
            } catch (Exception e)
            {
                await ContentDialogService.Show(new ExceptionDialog("Невозможно получить плейлист", "Возможно, этого плейлиста больше не существует.", e));

                return(null);
            }

            var json = await FileIO.ReadTextAsync(file);

            var model = JsonConvert.DeserializeObject <PlaylistFile>(json);

            return(model);
        }
Exemplo n.º 7
0
        public static async Task DeletePlaylist(PlaylistFile playlist)
        {
            try
            {
                if (playlist.Id == 1 || playlist.Id == 1000)
                {
                    var dialog = new MessageDialog("Данный плейлист невозможно удалить.",
                                                   "Невозможно удалить плейлист");
                    await dialog.ShowAsync();

                    return;
                }
                var folder = StaticContent.PlaylistsFolder;
                StaticContent.Playlists.Remove(playlist);
                var file = await folder.GetFileAsync($"Id{playlist.Id}.json");

                await file.DeleteAsync();
            }catch (Exception e)
            {
                await ContentDialogService.Show(new ExceptionDialog("Невозможно удалить плейлист", "Возможно, этот плейлист уже был удален или он поврежден.", e));
            }
        }
Exemplo n.º 8
0
        public static async Task PlayPlaylist(PlaylistFile playlist)
        {
            try
            {
                if (playlist.TracksFiles.Count == 0)
                {
                    var dialog = new MessageDialog("В данном плейлисте отсутсвуют треки. Пожалуйста, добавте в него треки.",
                                                   "Невозможно возпроизвести плейлист");
                    await dialog.ShowAsync();

                    return;
                }
                var folder = StaticContent.PlaylistsFolder;
                if (StaticContent.NowPlayPlaylist == playlist)
                {
                    return;
                }
                await PlayMusicService.PlayMusicForLibrary(playlist.TracksFiles[0], 3, playlist);
            }catch (Exception e)
            {
                await ContentDialogService.Show(new ExceptionDialog("Невозможно воспроизвести плейлист", "Возможно, он поврежден или он не существует", e));
            }
        }
Exemplo n.º 9
0
        public static async Task GetMusicLocal(bool refresh = false)
        {
            try
            {
                var musicLocal = await GetLocalMusicCollection();

                if (musicLocal.DateLastUpdate == "none")
                {
                    refresh = true;
                }

                if (refresh)
                {
                    musicLocal.Music.Clear();
                    StaticContent.Music.Clear();
                    if (StaticContent.Config.FindInMusicLibrary)
                    {
                        var files = await KnownFolders.MusicLibrary.GetFilesAsync(CommonFileQuery.OrderByName);

                        foreach (var f in files)
                        {
                            if (f.FileType == ".mp3" || f.FileType == ".wav" || f.FileType == ".flac")
                            {
                                AudioFile track;
                                track = await FindMetadataService.ConvertToAudioFile(f);

                                musicLocal.Music.Add(track);
                                StaticContent.Music.Add(track);
                            }
                        }
                    }

                    if (StaticContent.Config.FindInDocumentsLibrary)
                    {
                        var folder = KnownFolders.DocumentsLibrary;
                        var files  = (await folder.GetFilesAsync(Windows.Storage.Search.CommonFileQuery.OrderByDate)).ToList();
                        foreach (var f in files)
                        {
                            if (f.FileType == ".mp3" || f.FileType == ".wav" || f.FileType == ".flac")
                            {
                                AudioFile track;
                                track = await FindMetadataService.ConvertToAudioFile(f);

                                musicLocal.Music.Add(track);
                                StaticContent.Music.Add(track);
                            }
                        }
                    }



                    musicLocal.DateLastUpdate = $"{DateTime.Now.Day}.{DateTime.Now.Month} в {DateTime.Now.Hour}: {DateTime.Now.Minute}";
                    var fileMusic = await StaticContent.LocalFolder.GetFileAsync("MusicCollection.json");

                    var json = JsonConvert.SerializeObject(musicLocal);
                    await FileIO.WriteTextAsync(fileMusic, json);
                }
                else
                {
                    foreach (var track in musicLocal.Music)
                    {
                        if (track.Source == null)
                        {
                            track.Source = await StorageFile.GetFileFromPathAsync(track.SourceString);
                        }

                        track.Duration = TimeSpan.FromSeconds(track.DurationSeconds);
                        StaticContent.Music.Add(track);
                    }
                }
            }catch (Exception e)
            {
                await ContentDialogService.Show(new ExceptionDialog("Ошибка при поиске файлов", "Возможно, нет доступа к папке", e));
            }
        }
Exemplo n.º 10
0
        public async static Task PlayMusicForLibrary(AudioFile audioFile, int typePlay, PlaylistFile playlistPlay = null)
        {
            try
            {
                if (audioFile == null)
                {
                    return;
                }
                //type play:
                //1 - проигрования из списка треков
                //2 - проигрование трека по клику на него
                //3 - проигрование трека из плейлиста
                StaticContent.AudioService.Seek(TimeSpan.Zero);

                var lastPlayPlaylist = await PlaylistsService.GetById(1);

                if (audioFile.Source == null)
                {
                    audioFile.Source = await StorageFile.GetFileFromPathAsync(audioFile.SourceString);
                }
                if (!(lastPlayPlaylist.TracksFiles.Any(t => t.SourceString == audioFile.SourceString)))
                {
                    lastPlayPlaylist.TracksFiles.Add(audioFile);
                    await PlaylistsService.SavePlaylist(lastPlayPlaylist);
                }


                var playlistNowPlay = new PlaylistFile()
                {
                    Artist      = "Music X",
                    Cover       = "ms-appx:///Assets/Images/now.png",
                    Id          = 1000,
                    Name        = "Сейчас играет",
                    TracksFiles = new List <AudioFile>(),
                    IsLocal     = true
                };

                if (typePlay == 1)
                {
                    foreach (var trackMusic in StaticContent.Music)
                    {
                        playlistNowPlay.TracksFiles.Add(trackMusic);
                    }
                    StaticContent.NowPlayPlaylist = playlistNowPlay;
                    StaticContent.AudioService.SetCurrentPlaylist(playlistNowPlay.ToAudioPlaylist(), false);
                    StaticContent.AudioService.CurrentPlaylist.CurrentItem = audioFile;
                }
                else if (typePlay == 2)
                {
                    StaticContent.NowPlayPlaylist = playlistNowPlay;
                    StaticContent.NowPlayPlaylist.TracksFiles.Add(audioFile);
                    StaticContent.AudioService.SetCurrentPlaylist(playlistNowPlay.ToAudioPlaylist());
                }
                else if (typePlay == 3)
                {
                    StaticContent.NowPlayPlaylist = playlistPlay;

                    var index = 0;
                    try
                    {
                        index = playlistPlay.Tracks.IndexOf(playlistPlay.Tracks.Single(t => t.Id == audioFile.Id));
                    }catch
                    {
                        index = playlistPlay.TracksFiles.IndexOf(playlistPlay.TracksFiles.Single(t => t.Id == audioFile.Id));
                    }

                    if (index != 0)
                    {
                        StaticContent.AudioService.SetCurrentPlaylist(playlistPlay.ToAudioPlaylist(), false);
                        StaticContent.AudioService.CurrentPlaylist.CurrentItem = audioFile;
                    }
                    else
                    {
                        StaticContent.AudioService.SetCurrentPlaylist(playlistPlay.ToAudioPlaylist(), true);
                    }
                }

                if (!(StaticContent.Playlists.Any(p => p.Id == 1000)))
                {
                    StaticContent.Playlists.Insert(0, StaticContent.NowPlayPlaylist);
                }
            }catch (Exception e)
            {
                await ContentDialogService.Show(new ExceptionDialog("Невозможно возпроизвести трек.", "Возможно, файл не поддерживается или поврежден.", e));
            }
        }
Exemplo n.º 11
0
        public async static Task <AudioFile> ConvertToAudioFile(StorageFile file)
        {
            var mp3FileAbs = new FileMp3Abstraction()
            {
                Name        = file.Name,
                ReadStream  = await file.OpenStreamForReadAsync(),
                WriteStream = await file.OpenStreamForWriteAsync(),
            };

            try
            {
                using (var mp3File = TagLib.File.Create(mp3FileAbs))
                {
                    AudioFile audio = new AudioFile();
                    if (mp3File.Tag.AlbumArtists.Count() != 0)
                    {
                        audio.Artist = mp3File.Tag.AlbumArtists[0];
                    }
                    else
                    {
                        if (mp3File.Tag.Artists.Count() != 0)
                        {
                            audio.Artist = mp3File.Tag.Artists[0];
                        }
                        else
                        {
                            audio.Artist = "Неизвестный исполнитель";
                        }
                    }
                    if (mp3File.Tag.Title != null)
                    {
                        audio.Title = mp3File.Tag.Title;
                    }
                    else
                    {
                        audio.Title = file.DisplayName;
                    }
                    audio.DurationSeconds = mp3File.Properties.Duration.TotalSeconds;
                    audio.DurationMinutes = Converters.AudioTimeConverter.Convert(mp3File.Properties.Duration.TotalSeconds);
                    audio.Duration        = mp3File.Properties.Duration;
                    audio.Id         = (file.Name.GetHashCode() * 1);
                    audio.InternalId = 0;
                    audio.OwnerId    = 0;
                    audio.IsLocal    = true;
                    audio.PlaylistId = 0;
                    if (mp3File.Tag.Pictures.Any())
                    {
                        StorageFolder localFolder = ApplicationData.Current.LocalFolder;
                        var           alah        = StaticContent.CoversFolder.TryGetItemAsync($"{audio.Id}.jpg");
                        System.IO.File.WriteAllBytes($"{localFolder.Path}/Covers/{audio.Id}.jpg", mp3File.Tag.Pictures[0].Data.Data);
                        audio.Cover = $"{localFolder.Path}/Covers/{audio.Id}.jpg";
                    }
                    else
                    {
                        audio.Cover = "ms-appx:///Assets/Images/placeholder.png";
                    }
                    audio.Source       = file;
                    audio.SourceString = file.Path;
                    var playlist = await Services.PlaylistsService.GetById(2);

                    audio.IsFavorite  = playlist.TracksFiles.Any(t => t.SourceString == audio.SourceString);
                    audio.IsInLibrary = true;
                    audio.IsDownload  = true;
                    return(audio);
                }
            }
            catch (CorruptFileException)
            {
                return(null);
            }catch (Exception e)
            {
                AudioFile audio = new AudioFile()
                {
                    Artist          = "Неизвестный исполнитель",
                    Cover           = "ms-appx:///Assets/Images/placeholder.png",
                    Duration        = TimeSpan.Zero,
                    DurationMinutes = "00:00",
                    DurationSeconds = 0,
                    Id           = 0,
                    InternalId   = 0,
                    OwnerId      = 0,
                    PlaylistId   = 0,
                    Source       = file,
                    SourceString = "ms-appx:///Assets/Audio/song.mp3",
                    Title        = file.DisplayName
                };

                await ContentDialogService.Show(new ExceptionDialog("Ошибка при обработке файла", $"Файл {file.Name} не может быть обработан по неизвестной причине", e));

                return(audio);
            }
        }