private async void CheckCurrentPlayingState() { try { // Download the track list first, so that I can manipulate the data // to be passed to the player. TrackListDownloader downloader = new TrackListDownloader(); var trackList = await downloader.GetTracksForStation(CoreViewModel.Instance.CurrentStation.JSONID); CoreViewModel.Instance.CurrentStation.NowPlaying = trackList.First(); trackList.Remove(trackList.First()); CoreViewModel.Instance.CurrentStation.TrackList = new ObservableCollection<Track>(trackList); // The first track in the collection tells what's playing now. It does not // need to be in the track history // Also make sure that we scrobble the track to Last.fm if necessary. if (CoreViewModel.Instance.CurrentAppSettings.ScrobbleOnLaunch) { ScrobbleCurrentTrack(false); } if (BackgroundAudioPlayer.Instance.Track != null) { if (CoreViewModel.Instance.CurrentStation != null && BackgroundAudioPlayer.Instance.Track.Title != CoreViewModel.Instance.CurrentStation.NowPlaying.FullTrackName) { SetAudioTrack(); } else { SetAppropriateImage(false); } } else { SetAudioTrack(); } } catch { MessageBox.Show("A problem happened, we are really sorry! Start by checking your Internet connection.", "Beem", MessageBoxButton.OK); } }
async void Instance_PlayStateChanged(object sender, EventArgs e) { try { Station station = StationNavigator.GetStationByName(BackgroundAudioPlayer.Instance.Track.Artist, MainPageViewModel.Instance.Stations); if (CoreViewModel.Instance.CurrentStation != station) { // Since the station has switched, it makes sense to stop // the recording and prompt the user to enter a name for the // recorded track. if (PlaybackPageViewModel.Instance.IsRecording) StopRecording(); CoreViewModel.Instance.CurrentStation = station; TrackListDownloader downloader = new TrackListDownloader(); var result = await downloader.GetTracksForStation(station.JSONID); CoreViewModel.Instance.CurrentStation.NowPlaying = result.First(); result.Remove(result.First()); CoreViewModel.Instance.CurrentStation.TrackList = new ObservableCollection<Track>(result); } if (BackgroundAudioPlayer.Instance.PlayerState == PlayState.TrackReady) BackgroundAudioPlayer.Instance.Play(); SetAppropriateImage(false); } catch { Debug.WriteLine("Apparently no internet and track cannot be assigned."); } }
private async Task<AudioTrack> GetNextStation(string name) { try { DISettingsCache cache = Serialize.Open<DISettingsCache>("di.xml"); List<Station> stations = Serialize.Open<List<Station>>("stationcache.xml"); Station nextStation = StationNavigator.GetNextStation(name, stations); if (nextStation != null) { TrackListDownloader downloader = new TrackListDownloader(); List<Track> tracks = await downloader.GetTracksForStation(nextStation.JSONID); string trackName = string.Empty; if (tracks != null) trackName = tracks[0].FullTrackName; Uri location; if (cache != null && cache.IsPremiumEnabled) { location = new Uri(nextStation.PremiumLocation + "?" + cache.PremiumKey); } else { location = new Uri(nextStation.Location); } return new AudioTrack(location, trackName, nextStation.Name, string.Empty, null); } else { return null; } } catch { return null; } }