public async Task <DetailedAlbumInfo[]> GetAllAlbums(
            ShortBandInfo bandInfo,
            CancellationToken token = default
            )
        {
            var detailedInfo = await this.GetDetailedBandInfo(bandInfo);

            return(await this.GetAllAlbums(detailedInfo, token));
        }
Ejemplo n.º 2
0
        public static DetailedBandInfo BandInfoFromDetailsPage(string html, ShortBandInfo shortInfo)
        {
            var documentNode = GetDocumentNode(html);

            var imageStr = documentNode.QuerySelector("div.artist-header__bg > img.artist-header__bg__img")
                           .GetAttributeValue("src", null);
            var imageUrl = imageStr == null ? null : new Uri(imageStr);

            var topTracks = GetTracks(documentNode.QuerySelector(TracksTableBodySelector), true);
            var albums    =
                GetAlbums(documentNode.QuerySelector("div.albumCollection__albums.js-grid"));

            return(new DetailedBandInfo(shortInfo, imageUrl, albums, topTracks));
        }
        public async Task <DetailedBandInfo> GetDetailedBandInfo(ShortBandInfo info)
        {
            var cached = WimpCache.ReadDetailedBandInfo(info.Id);

            if (cached != null)
            {
                return(cached);
            }

            var parsed = await Utils.WithRetry(async() => {
                var html = await SeleniumRequests.GetHtml(info.Uri, CancellationToken.None);
                return(WimpHtmlParsing.BandInfoFromDetailsPage(html, info));
            });

            WimpCache.SaveDetailedBandInfo(parsed);

            return(parsed);
        }
Ejemplo n.º 4
0
        public async void Init(ShortBandInfo info)
        {
            this.ShortInfo = info;
            var detailedInfo = await App.InfoProvider.GetDetailedBandInfo(info);

            this.DetailedInfo = detailedInfo;

            this.TopTracks.Clear();
            foreach (var topTrack in detailedInfo.TopTracks)
            {
                this.TopTracks.Add(topTrack);
            }

            this.Albums.Clear();
            foreach (var album in detailedInfo.AlbumInfos)
            {
                this.Albums.Add(album);
            }
        }
Ejemplo n.º 5
0
 public static void SaveShortBandInfo(ShortBandInfo info)
 {
     JsonCacheUtils.SaveIntoJsonCache(info, ShortBandClz, info.Id);
 }
Ejemplo n.º 6
0
 public static void SaveSearchBandExact(string query, ShortBandInfo info)
 {
     JsonCacheUtils.SaveIntoJsonCache(info, SearchBandExact, query);
 }