public IEnumerable<Audio> GetInstantMixFromAlbum(MusicAlbum item, User user) { var genres = item .GetRecursiveChildren(user, i => i is Audio) .Cast<Audio>() .SelectMany(i => i.Genres) .Concat(item.Genres) .DistinctNames(); return GetInstantMixFromGenres(genres, user); }
public IEnumerable<Audio> GetInstantMixFromAlbum(MusicAlbum item, User user) { var genres = item .RecursiveChildren .OfType<Audio>() .SelectMany(i => i.Genres) .Concat(item.Genres) .Distinct(StringComparer.OrdinalIgnoreCase); return GetInstantMixFromGenres(genres, user); }
private Task<ReleaseResult> GetReleaseResult(MusicAlbum album, CancellationToken cancellationToken) { var artist = album.Parent; var artistId = artist.GetProviderId(MetadataProviders.Musicbrainz); if (!string.IsNullOrEmpty(artistId)) { return GetReleaseResult(album.Name, artistId, cancellationToken); } return GetReleaseResultByArtistName(album.Name, artist.Name, cancellationToken); }
public IEnumerable<Audio> GetInstantMixFromAlbum(MusicAlbum item, User user) { var genres = item .GetRecursiveChildren(user, new InternalItemsQuery(user) { IncludeItemTypes = new[] { typeof(Audio).Name } }) .Cast<Audio>() .SelectMany(i => i.Genres) .Concat(item.Genres) .DistinctNames(); return GetInstantMixFromGenres(genres, user); }
private void AttachSoundtrackIds(BaseItemDto dto, MusicAlbum item, User user) { var tmdb = item.GetProviderId(MetadataProviders.Tmdb); var tvdb = item.GetProviderId(MetadataProviders.Tvdb); var gamesdb = item.GetProviderId(MetadataProviders.Gamesdb); if (string.IsNullOrEmpty(tmdb) && string.IsNullOrEmpty(tvdb) && string.IsNullOrEmpty(gamesdb)) { return; } var recursiveChildren = user == null ? _libraryManager.RootFolder.RecursiveChildren : user.RootFolder.GetRecursiveChildren(user); dto.SoundtrackIds = recursiveChildren .Where(i => { if (!string.IsNullOrEmpty(tmdb) && string.Equals(tmdb, i.GetProviderId(MetadataProviders.Tmdb), StringComparison.OrdinalIgnoreCase) && i is Movie) { return true; } if (!string.IsNullOrEmpty(tvdb) && string.Equals(tvdb, i.GetProviderId(MetadataProviders.Tvdb), StringComparison.OrdinalIgnoreCase) && i is Series) { return true; } if (!string.IsNullOrEmpty(gamesdb) && string.Equals(gamesdb, i.GetProviderId(MetadataProviders.Gamesdb), StringComparison.OrdinalIgnoreCase) && i is Game) { return true; } return false; }) .Select(GetClientItemId) .ToArray(); }
public List <BaseItem> GetInstantMixFromAlbum(MusicAlbum item, User user, DtoOptions dtoOptions) { return(GetInstantMixFromGenres(item.Genres, user, dtoOptions)); }
/// <summary> /// Gets the data. /// </summary> /// <param name="album">The album.</param> /// <returns>Guid.</returns> private Guid GetComparisonData(MusicAlbum album) { var songs = album.RecursiveChildren.OfType<Audio>().ToList(); var albumArtists = songs.Select(i => i.AlbumArtist) .Where(i => !string.IsNullOrEmpty(i)) .Distinct(StringComparer.OrdinalIgnoreCase) .ToList(); var albumNames = songs.Select(i => i.AlbumArtist) .Where(i => !string.IsNullOrEmpty(i)) .Distinct(StringComparer.OrdinalIgnoreCase) .ToList(); albumArtists.AddRange(albumNames); return string.Join(string.Empty, albumArtists.OrderBy(i => i).ToArray()).GetMD5(); }
private async Task<LastfmGetAlbumResult> GetAlbumResult(MusicAlbum item, CancellationToken cancellationToken) { // Try album release Id if (!string.IsNullOrEmpty(item.GetProviderId(MetadataProviders.Musicbrainz))) { var result = await GetAlbumResult(item.GetProviderId(MetadataProviders.Musicbrainz), cancellationToken).ConfigureAwait(false); if (result != null && result.album != null) { return result; } } // Try album release group Id if (!string.IsNullOrEmpty(item.GetProviderId(MetadataProviders.MusicBrainzReleaseGroup))) { var result = await GetAlbumResult(item.GetProviderId(MetadataProviders.MusicBrainzReleaseGroup), cancellationToken).ConfigureAwait(false); if (result != null && result.album != null) { return result; } } // Get each song, distinct by the combination of AlbumArtist and Album var songs = item.RecursiveChildren.OfType<Audio>().DistinctBy(i => (i.AlbumArtist ?? string.Empty) + (i.Album ?? string.Empty), StringComparer.OrdinalIgnoreCase).ToList(); foreach (var song in songs.Where(song => !string.IsNullOrEmpty(song.Album) && !string.IsNullOrEmpty(song.AlbumArtist))) { var result = await GetAlbumResult(song.AlbumArtist, song.Album, cancellationToken).ConfigureAwait(false); if (result != null && result.album != null) { return result; } } // Try the folder name return await GetAlbumResult(item.Parent.Name, item.Name, cancellationToken); }
/// <summary> /// Gets the data. /// </summary> /// <param name="album">The album.</param> /// <returns>Guid.</returns> private Guid GetComparisonData(MusicAlbum album) { var songs = album.RecursiveChildren.OfType<Audio>().ToList(); return GetComparisonData(songs); }