Esempio n. 1
0
 private void PlaySoundExecute(StorySong storySong)
 {
     if (storySong != null)
     {
         _audioManager.Play(storySong);
     }
 }
Esempio n. 2
0
        private MPNowPlayingInfo CreateInfo(StorySong item)
        {
            var newInfo = new MPNowPlayingInfo();

            newInfo.Artwork  = artwork;
            newInfo.Title    = item.Name;
            newInfo.AssetUrl = NSUrl.FromString(item.ImageUri.OriginalString);
            return(newInfo);
        }
        public async Task <List <StorySong> > LoadStoriesAsync()
        {
            const string LIST_STORIES_URL = "https://kazky.suspilne.media/list";
            var          list             = new List <StorySong>();

            try
            {
                var content = await _httpClient.GetStringAsync(LIST_STORIES_URL);

                var parser   = new HtmlParser();
                var document = parser.Parse(content);

                var blocks = document.QuerySelectorAll("a.tales-list__tale").OfType <IHtmlAnchorElement>().ToList();
                foreach (var block in blocks)
                {
                    var storySongItem = new StorySong();
                    storySongItem.DetailsUri = new Uri(BASE_URI, block.PathName);
                    await GetSongUriAsync(storySongItem);

                    var caption = block.QuerySelector("div.tales-list__tale__tale-caption");
                    storySongItem.Name = caption?.TextContent?.Trim() ?? string.Empty;

                    var author = block.QuerySelector("div.tales-list__tale__tale-time");
                    storySongItem.Author = author?.TextContent?.Trim() ?? string.Empty;

                    var image    = block.QuerySelector("img") as IHtmlImageElement;
                    var imageUrl = image?.Source;
                    if (!string.IsNullOrEmpty(imageUrl))
                    {
                        storySongItem.ImageUri = new Uri(imageUrl);
                        if (imageUrl.StartsWith("", StringComparison.OrdinalIgnoreCase))
                        {
                            var relative = imageUrl.Substring("about:///".Length);
                            storySongItem.ImageUri = new Uri(BASE_URI, relative);
                        }
                    }

                    list.Add(storySongItem);
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex);
            }



            return(list);
        }
Esempio n. 4
0
        private void UpdateNowPlaying(StorySong item)
        {
            var newInfo = CreateInfo(item);

            UpdateInfo(newInfo);
            if (artworkUrl != item.ImageUri.OriginalString)
            {
                artworkUrl = item.ImageUri.OriginalString;
                artwork    = null;
                ImageService.Instance.LoadUrl(item.ImageUri.OriginalString).AsUIImageAsync().ContinueWith((task) => {
                    artwork         = new MPMediaItemArtwork(task.Result);
                    newInfo.Artwork = artwork;
                    UpdateInfo(newInfo);
                });
            }
        }
        private async Task GetSongUriAsync(StorySong item)
        {
            var content = await _httpClient.GetStringAsync(item.DetailsUri);

            var parser     = new HtmlParser();
            var document   = parser.Parse(content);
            var audioBlock = document.QuerySelector("div.player_wrapper")?.QuerySelector("source") as IHtmlSourceElement;

            if (audioBlock != null)
            {
                item.SongUri = new Uri(audioBlock.Source);
                if (audioBlock.Source.StartsWith("about:///", StringComparison.OrdinalIgnoreCase))
                {
                    var relative = audioBlock.Source.Substring("about:///".Length);
                    item.SongUri = new Uri(BASE_URI, relative);
                }
            }
        }
Esempio n. 6
0
 public void Play(StorySong song)
 {
     _currentIndex = _items.IndexOf(song);
     Play(_currentIndex);
 }