private Artist[] GetMainArtists(Album album, IEnumerable <IArtistWithSupport> creditableArtists) { if (album.ArtistString.Default == ArtistHelper.VariousArtists) { return(null); } return(ArtistHelper.GetProducers(creditableArtists, AlbumHelper.IsAnimation(album.DiscType)).Select(a => a.Artist).ToArray()); }
private Artist[] GetMainArtists(Album album, IEnumerable <IArtistLinkWithRoles> creditableArtists) { if (album.IsVariousArtists) { return(null); } return(ArtistHelper.GetProducers(creditableArtists, AlbumHelper.GetContentFocus(album.DiscType)).Select(a => a.Artist).ToArray()); }
private Artist[] GetMainArtists(Album album, IList <IArtistWithSupport> creditableArtists) { // "Various artists" albums will be treated as collaboration albums where only the circle/label is searched. if (album.ArtistString.Default == ArtistHelper.VariousArtists) { var circles = creditableArtists.Where(a => a.Artist != null && ArtistHelper.GetCategories(a).HasFlag(ArtistCategories.Circle)).Select(a => a.Artist).ToArray(); // No circles found, try labels if (!circles.Any()) { circles = creditableArtists.Where(a => a.Artist != null && ArtistHelper.GetCategories(a).HasFlag(ArtistCategories.Label)).Select(a => a.Artist).ToArray(); } return(circles); } return(ArtistHelper.GetProducers(creditableArtists, AlbumHelper.IsAnimation(album.DiscType)).Select(a => a.Artist).ToArray()); }
public virtual void UpdateArtistString() { ArtistString = ArtistHelper.GetArtistString(Artists, AlbumHelper.IsAnimation(DiscType)); }
private string GetFieldValue(string fieldName, SongInAlbum track, ContentLanguagePreference languagePreference) { var album = track.Album; switch (fieldName.ToLowerInvariant()) { // Album title case "album": return(album.Names.SortNames[languagePreference]); // Artists for album case "albumartist": return(album.ArtistString[languagePreference]); case "album artist": // foobar style return(album.ArtistString[languagePreference]); case "albummaincircle": var circle = ArtistHelper.GetMainCircle(album.Artists.ToArray(), AlbumHelper.IsAnimation(album.DiscType)); return(circle != null ? circle.TranslatedName[languagePreference] : GetAlbumMainProducersStr(album, languagePreference)); // Artists for song, both producers and vocalists case "artist": return(track.Song != null ? track.Song.ArtistString[languagePreference] : string.Empty); case "track artist": // foobar style return(track.Song != null ? track.Song.ArtistString[languagePreference] : string.Empty); case "catalognum": return(album.OriginalRelease != null ? album.OriginalRelease.CatNum : string.Empty); case "disccount": return((album.Songs.Any() ? album.Songs.Max(s => s.DiscNumber) : 0).ToString()); // Disc number case "discnumber": return(track.DiscNumber.ToString()); // List of vocalists, separated by comma, with "feat." in the beginning if there are any vocalists, otherwise empty. case "featvocalists": var vocalistStr = GetVocalistStr(track, languagePreference); return(vocalistStr.Any() ? " feat. " + vocalistStr : string.Empty); case "genres": return(string.Join(", ", SongHelper.GetGenreTags(track).Select(t => t.NameWithSpaces))); // List of producers case "producers": return(GetProducerStr(track, languagePreference)); // Album release date case "releasedate": return(track.Album.OriginalReleaseDate.ToString()); case "releaseyear": return(track.Album.OriginalReleaseDate.Year.ToString()); case "releaseevent": return(album.OriginalReleaseEventName); // Song title case "title": return(track.Song != null ? track.Song.Names.SortNames[languagePreference] : track.Name); case "totaltrackcount": return(album.Songs.Count().ToString()); // Track number case "track": return(track.TrackNumber.ToString()); case "tracknumber": // foobar style return(track.TrackNumber.ToString()); // List of vocalists, separated by comma. case "vocalists": return(GetVocalistStr(track, languagePreference)); default: return(string.Empty); } }
private string GetAlbumMainProducersStr(Album album, ContentLanguagePreference languagePreference) { bool isAnimation = AlbumHelper.IsAnimation(album.DiscType); return(ArtistHelper.GetArtistString(ArtistHelper.GetProducers(album.Artists.Where(a => !a.IsSupport), isAnimation), isAnimation)[languagePreference]); }
public AlbumDetails(AlbumDetailsContract contract, IUserPermissionContext permissionContext) { ParamIs.NotNull(() => contract); AdditionalNames = contract.AdditionalNames; ArtistString = contract.ArtistString; CanEdit = EntryPermissionManager.CanEdit(permissionContext, contract); CanEditPersonalDescription = contract.CanEditPersonalDescription; CanRemoveTagUsages = contract.CanRemoveTagUsages; CommentCount = contract.CommentCount; CreateDate = contract.CreateDate; Description = contract.Description; Deleted = contract.Deleted; DiscType = contract.DiscType; Draft = contract.Status == EntryStatus.Draft; Hits = contract.Hits; Id = contract.Id; LatestComments = contract.LatestComments; LatestReview = contract.Stats.LatestReview; LatestReviewRatingScore = contract.Stats.LatestReviewRatingScore; MergedTo = contract.MergedTo; Name = contract.Name; OwnedBy = contract.Stats.OwnedCount; PersonalDescriptionText = contract.PersonalDescriptionText; PersonalDescriptionAuthor = contract.PersonalDescriptionAuthor; Pictures = contract.Pictures; PVs = contract.PVs; RatingAverage = contract.RatingAverage; RatingCount = contract.RatingCount; ReviewCount = contract.Stats.ReviewCount; Status = contract.Status; Tags = contract.Tags; TotalLength = contract.TotalLength; UserHasAlbum = contract.AlbumForUser != null; Version = contract.Version; WebLinks = contract.WebLinks; WishlistedBy = contract.Stats.WishlistCount; mime = contract.CoverPictureMime; var songsByDiscs = contract.Songs.GroupBy(s => s.DiscNumber); Discs = (from songsByDisc in songsByDiscs let dn = songsByDisc.Key select new AlbumDisc(dn, songsByDisc, contract.Discs.ContainsKey(dn) ? contract.Discs[dn] : null)) .ToArray(); if (contract.AlbumForUser != null) { AlbumMediaType = contract.AlbumForUser.MediaType; AlbumPurchaseStatus = contract.AlbumForUser.PurchaseStatus; CollectionRating = contract.AlbumForUser.Rating; } if (contract.OriginalRelease != null) { CatNum = contract.OriginalRelease.CatNum; ReleaseEvent = contract.OriginalRelease.ReleaseEvent; ReleaseDate = contract.OriginalRelease.ReleaseDate; FullReleaseDate = ReleaseDate.Year.HasValue && ReleaseDate.Month.HasValue && ReleaseDate.Day.HasValue ? (DateTime?)new DateTime(ReleaseDate.Year.Value, ReleaseDate.Month.Value, ReleaseDate.Day.Value) : null; } var artists = contract.ArtistLinks; ContentFocus = AlbumHelper.GetContentFocus(DiscType); Bands = artists.Where(a => a.Categories.HasFlag(ArtistCategories.Band)).ToArray(); Circles = artists.Where(a => a.Categories.HasFlag(ArtistCategories.Circle)).ToArray(); Illustrators = ContentFocus == ContentFocus.Illustration ? artists.Where(a => a.Categories.HasFlag(ArtistCategories.Illustrator)).ToArray() : null; Labels = artists.Where(a => a.Categories.HasFlag(ArtistCategories.Label)).ToArray(); Producers = artists.Where(a => a.Categories.HasFlag(ArtistCategories.Producer)).ToArray(); Vocalists = artists.Where(a => a.Categories.HasFlag(ArtistCategories.Vocalist)).ToArray(); Subject = artists.Where(a => a.Categories.HasFlag(ArtistCategories.Subject)).ToArray(); OtherArtists = artists.Where(a => a.Categories.HasFlag(ArtistCategories.Other) || a.Categories.HasFlag(ArtistCategories.Animator) || (ContentFocus != ContentFocus.Illustration && a.Categories.HasFlag(ArtistCategories.Illustrator))).ToArray(); PrimaryPV = PVHelper.PrimaryPV(PVs); }
protected override string GetFieldValue(string fieldName, SongInAlbum track, ContentLanguagePreference languagePreference) { var album = track.Album; switch (fieldName) { // Album title case "album": return(album.Names.SortNames[languagePreference]); case "albumid": return(album.Id.ToString()); // Artists for album case "albumartist": return(album.ArtistString[languagePreference]); case "album artist": // foobar style return(album.ArtistString[languagePreference]); case "albummaincircle": var circle = ArtistHelper.GetMainCircle(album.Artists.ToArray(), AlbumHelper.GetContentFocus(album.DiscType)); return(circle != null ? circle.TranslatedName[languagePreference] : GetAlbumMainProducersStr(album, languagePreference)); case "catalognum": return(album.OriginalRelease != null ? album.OriginalRelease.CatNum : string.Empty); case "disccount": return((album.Songs.Any() ? album.Songs.Max(s => s.DiscNumber) : 0).ToString()); // Disc number case "discnumber": return(track.DiscNumber.ToString()); case "genres": return(string.Join(", ", SongHelper.GetGenreTags(track).Select(t => t.Names.SortNames[languagePreference]))); // Album release date case "releasedate": return(track.Album.OriginalReleaseDate.ToString()); case "releaseyear": return(track.Album.OriginalReleaseDate.Year.ToString()); case "releaseevent": return(album.OriginalReleaseEvent?.TranslatedName[languagePreference]); // Song title case "title": return(track.Song != null ? track.Song.Names.SortNames[languagePreference] : track.Name); case "totaltrackcount": return(album.Songs.Count().ToString()); // Track number case "track": return(track.TrackNumber.ToString()); case "tracknumber": // foobar style return(track.TrackNumber.ToString()); default: return(GetFieldValue(fieldName, (ISongLink)track, languagePreference)); } }
private string GetAlbumMainProducersStr(Album album, ContentLanguagePreference languagePreference) { var focus = AlbumHelper.GetContentFocus(album.DiscType); return(ArtistHelper.GetArtistString(ArtistHelper.GetProducers(album.Artists.Where(a => !a.IsSupport), focus), focus)[languagePreference]); }
public virtual void UpdateArtistString() { ArtistString = ArtistHelper.GetArtistString(Artists, AlbumHelper.GetContentFocus(DiscType)); }