コード例 #1
0
ファイル: RadioService.cs プロジェクト: justdude/meridian
        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);
            }
        }
コード例 #2
0
ファイル: RadioService.cs プロジェクト: justdude/meridian
        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);
            }
        }
コード例 #3
0
ファイル: RadioViewModel.cs プロジェクト: justdude/meridian
        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);
        }
コード例 #4
0
ファイル: RadioService.cs プロジェクト: justdude/meridian
        public static async void Stop()
        {
            if (string.IsNullOrEmpty(_sessionId))
                return;

            _currentRadio = null;
            await DeleteSession(_sessionId);
        }
コード例 #5
0
ファイル: RadioService.cs プロジェクト: kostyatab/meridian
 public static void RestoreSession(string sessionId, RadioStation radio)
 {
     _sessionId = sessionId;
     _currentRadio = radio;
 }