public static async void StartRadioFromSong(string title, string artistName) { try { var song = await FindSong(title, artistName); if (song != null) { var r = new RadioStation(); r.Title = title; r.Songs = new List<EchoSong>() { song }; PlayRadio(r); } else { var artist = await FindArtist(artistName); if (artist == null) return; var r = new RadioStation(); r.Title = artistName; r.Artists = new List<EchoArtist>() { artist }; PlayRadio(r); } } catch (Exception ex) { LoggingService.Log(ex); } }
public static async void PlayRadio(RadioStation station) { AudioService.Playlist.Clear(); try { _currentRadio = station; if (!string.IsNullOrEmpty(_sessionId)) { //удаляем предыдущую сессию, чтобы не засорять Echonest (и потому что есть ограничение в 1000 сессий) await DeleteSession(_sessionId); } if (station.Songs == null) await CreateArtistsSession(station.Artists.Select(s => s.Name)); else await CreateSongsSession(station.Songs.Select(s => s.Id)); if (_futureSongs != null && _futureSongs.Count > 0) { AudioService.SetCurrentPlaylist(new List<Audio>(), true); PlaySong(_futureSongs.First()); } } catch (Exception ex) { LoggingService.Log(ex); } }
private async void AddStation(IEnumerable<EchoArtist> artists) { var titleArtist = artists.First(); var newStation = new RadioStation() { Artists = artists.ToList(), Title = string.Join(", ", artists.Select(s => s.Name)), }; Stations.Add(newStation); try { var artistImage = await DataService.GetArtistImage(titleArtist.Name, false); if (artistImage != null) newStation.ImageUrl = artistImage.OriginalString; } catch (Exception ex) { LoggingService.Log(ex); } RadioService.SaveStations(Stations); }
public static async void Stop() { if (string.IsNullOrEmpty(_sessionId)) return; _currentRadio = null; await DeleteSession(_sessionId); }
public static void RestoreSession(string sessionId, RadioStation radio) { _sessionId = sessionId; _currentRadio = radio; }