public static async Task <string> GetAlbumImageImageUrlAsync(string album) { var urlToReturn = string.Empty; if (Availability) { if (!string.IsNullOrEmpty(album) && !Banlist.AlbumMetadataRetrieveBanlist.ContainsKey(album)) { try { urlToReturn = await GrooveMusicMetadata.GetAlbumImageLinkAsync(album); if (string.IsNullOrEmpty(urlToReturn)) { urlToReturn = await AppleMusicMetadata.GetAlbumImageImageUrlAsync(album); } } catch (Exception) { // Typically that should not happen. // Investigate if that happens. } } } return(urlToReturn); }
public static async Task <IEntityInfo[]> GetArtistsAsync(string artist) { var artists = (await Task.WhenAll( GrooveMusicMetadata.GetArtistsAsync(artist), LastFmArtistMetadata.GetArtistsAsync(artist))) .SelectMany(x => x) .ToList(); artists.Sort(new ArtistSimilarityComparer(artist)); return(artists.ToArray()); }
public static async Task <IEntityInfo[]> GetAlbumsAsync(string album, string artist) { var albums = (await Task.WhenAll( AppleMusicMetadata.GetAlbumsAsync($"{album} {artist}"), GrooveMusicMetadata.GetAlbumsAsync($"{album} {artist}"))) .SelectMany(x => x) .ToList(); albums.Sort(new AlbumSimilarityComparer(album, artist)); return(albums.ToArray()); }
/// <summary> /// Load artist intro for a specific artist. /// </summary> /// <param name="elem"></param> /// <returns></returns> public static async Task <DbArtist> LoadArtistIntroAsync(this DbArtist elem) { if (InternetConnectivityDetector.HasInternetConnection) { try { var bio = await GrooveMusicMetadata.GetArtistBio(elem.Name); elem.Intro = bio; } catch (Exception ex) { TelemetryHelper.TrackExceptionAsync(ex); } } return(elem); }
/// <summary> /// Load online content for a specific artist. /// </summary> /// <param name="elem"></param> /// <returns></returns> public static async Task <string> LoadArtistOnlineContentAsync(this DbArtist elem) { // Check internet connection if (InternetConnectivityDetector.HasInternetConnection) { // Return Online content try { var modifyFlag = false; if (string.IsNullOrEmpty(elem.Intro)) { var bio = await GrooveMusicMetadata.GetArtistBio(elem.Name); if (!string.IsNullOrEmpty(bio)) { modifyFlag = true; } } if (modifyFlag) { using (var scope = ApplicationServiceBase.App.GetScope()) using (var context = scope.ServiceProvider.GetRequiredService <MedialibraryDbContext>()) { context.Entry(elem).Entity.ImagePath = elem.ImagePath; context.Entry(elem).Entity.Intro = elem.Intro; context.Entry(elem).State = EntityState.Modified; await context.SaveChangesAsync(); } return(elem.ImagePath); } } catch (Exception ex) { TelemetryHelper.TrackExceptionAsync(ex); } } return(string.Empty); }