public MusicListBoxControl(OfflineTrack audio) { InitializeComponent(); Track = audio; if (!Track.IsCached & !StaticFunctions.CheckForInternetConnection()) { Play.IsEnabled = false; } TRACK_NAME.Text = Track.Title; TRACK_AUTHOR.Text = Track.Artist; if (Track.IsHq ?? false) { IsHQ.Visibility = Visibility.Hidden; } var trackDuration = Track.Duration % 60 < 10 ? $"{Track.Duration / 60}:0{Track.Duration % 60}" : $"{Track.Duration / 60}:{Track.Duration % 60}"; TRACK_DURATION.Text = trackDuration; }
public async Task UpdateAudioList() //метод обновления бд с записями { await Task.Run(async() => //Для того, чтобы не задерживать обновление экрана, задача запускается в таске. { await using var db = new TrackDbContext(); if (StaticFunctions.CheckForInternetConnection()) //в случае отсутствия интернет-соединения база данных не обновляется { var tracks = await Api.Audio.GetAsync(new AudioGetParams { OwnerId = Api.Users.Get(new List <long>()).FirstOrDefault()?.Id, //так как мы можем войти через токен VkApi.token может не содержать userid, это обход }); foreach (var track in db.Tracks) { db.Tracks.Remove(track); //очищаем бд перед записью, записываем и созраняем } await db.Tracks.AddRangeAsync(OfflineTrack.ToOffline(tracks).ToList()); await db.SaveChangesAsync(); } }); }
private async Task LoginByToken() { ErrorText.Text = ""; Debug.Print("LoginByToken()"); Debug.Print(File.ReadAllLines("C:\\ProgramData\\ramil2911\\VKAudio\\token", Encoding.Default)[0]); if (string.IsNullOrWhiteSpace(File.ReadAllLines("C:\\ProgramData\\ramil2911\\VKAudio\\token", Encoding.Default)[0])) { return; } if (!StaticFunctions.CheckForInternetConnection()) { MainWindow mainWindowa = Window.GetWindow(this) as MainWindow; mainWindowa?.OpenMainPage_Func(null); ErrorText.Text = ""; return; } try { await _api.AuthorizeAsync( new VkNet.Model.ApiAuthParams { AccessToken = File.ReadAllLines("C:\\ProgramData\\ramil2911\\VKAudio\\token", Encoding.Default)[0], Settings = VkNet.Enums.Filters.Settings.All }); Debug.Print(_api.Token); } catch (Exception ex) { ErrorText.Text = ""; return; } ErrorText.Text = ""; MainWindow mainWindow = Window.GetWindow(this) as MainWindow; mainWindow?.OpenMainPage_Func(_api); }
public async Task PlayMusic(OfflineTrack track) { await Task.Run(() => { Debug.WriteLine($"Starting {track.Title}--{track.Id}"); _waveOut?.Stop(); if (track.IsCached) { Debug.WriteLine("Track already exists"); try { var reader = new Mp3FileReader(track.Cache(Api)); _waveOut = new WaveOutEvent(); _waveOut.Init(reader); _waveOut.Play(); } catch (Exception ex) { Debug.WriteLine($"{track.Title} cannot be loaded"); Debug.WriteLine($"{ex.Message}"); Debug.WriteLine($"{ex.StackTrace}"); return; //TODO: обработчик исключений } } else if (StaticFunctions.CheckForInternetConnection()) { var reader = new Mp3FileReader(track.Cache(Api)); _waveOut = new WaveOutEvent(); _waveOut.Init(reader); _waveOut.Play(); } }); Debug.WriteLine("Starting timer"); CurrentTrack = track; _nextTrackTimer.Interval = track.Duration * 1000 + 1; _nextTrackTimer.Start(); Debug.WriteLine("Timer started"); }