private void ReplaceField( string tokenName, string tokenStr, StringBuilder sb, SongInAlbum track, ContentLanguagePreference languagePreference) { var val = GetField(GetFieldValue(tokenName, track, languagePreference)); sb.Replace(tokenStr, val); }
public void SetUp() { _album = new Album(new LocalizedString("Synthesis", ContentLanguageSelection.English)); _producer = new Artist(TranslatedString.Create("Tripshots")) { Id = 1, ArtistType = ArtistType.Producer }; _vocalist = new Artist(TranslatedString.Create("Hatsune Miku")) { Id = 39, ArtistType = ArtistType.Vocaloid }; _producerContract = new ArtistContract(_producer, ContentLanguagePreference.Default); _vocalistContract = new ArtistContract(_vocalist, ContentLanguagePreference.Default); _song1 = new Song(new LocalizedString("Nebula", ContentLanguageSelection.English)) { Id = 2 }; _song1.AddArtist(_producer); _album.AddArtist(_producer); _album.AddArtist(_vocalist); var songInAlbum = new SongInAlbum(_song1, _album, 1, 1); _songInAlbumContract = new SongInAlbumEditContract(songInAlbum, ContentLanguagePreference.Default); _songInAlbumContract.Artists = new[] { _producerContract }; }
public SongInAlbumEditContract(SongInAlbum songInAlbum, ContentLanguagePreference languagePreference) { ParamIs.NotNull(() => songInAlbum); DiscNumber = songInAlbum.DiscNumber; SongInAlbumId = songInAlbum.Id; TrackNumber = songInAlbum.TrackNumber; ArtistString = string.Empty; SongAdditionalNames = string.Empty; SongId = 0; var song = songInAlbum.Song; if (song != null) { Artists = song.ArtistList.Select(a => new ArtistContract(a, languagePreference)).ToArray(); ArtistString = song.ArtistString[languagePreference]; SongName = song.TranslatedName[languagePreference]; SongAdditionalNames = string.Join(", ", song.AllNames.Where(n => n != SongName)); SongId = song.Id; } else { Artists = new ArtistContract[0]; SongName = songInAlbum.Name; } IsCustomTrack = song == null; }
private string GetProducerStr(SongInAlbum track, ContentLanguagePreference languagePreference) { if (track.Song == null) { return(string.Empty); } return(string.Join(", ", ArtistHelper.GetProducerNames(track.Song.Artists, SongHelper.IsAnimation(track.Song.SongType), languagePreference))); }
private string GetVocalistStr(SongInAlbum track, ContentLanguagePreference languagePreference) { if (track.Song == null) { return(string.Empty); } return(string.Join(", ", ArtistHelper.GetVocalistNames(track.Song.Artists, languagePreference))); }
public SongInAlbumContract(SongInAlbum songInAlbum, ContentLanguagePreference languagePreference) { ParamIs.NotNull(() => songInAlbum); DiscNumber = songInAlbum.DiscNumber; Id = songInAlbum.Id; Song = new SongWithAdditionalNamesContract(songInAlbum.Song, languagePreference); TrackNumber = songInAlbum.TrackNumber; }
public AlbumForSongRefContract(SongInAlbum songInAlbum) { DiscNumber = songInAlbum.DiscNumber; TrackNumber = songInAlbum.TrackNumber; var album = songInAlbum.Album; Id = album.Id; NameHint = album.DefaultName; }
public virtual SongInAlbum AddSong(string songName, int trackNum, int discNum) { ParamIs.NotNullOrEmpty(() => songName); var track = new SongInAlbum(songName, this, trackNum, discNum); AllSongs.Add(track); return(track); }
private string ApplyFormat(SongInAlbum track, string format, ContentLanguagePreference languagePreference, MatchCollection fieldMatches) { var sb = new StringBuilder(format); foreach (Match match in fieldMatches) { ReplaceField(match.Groups[1].Value, match.Value, sb, track, languagePreference); } return(sb.ToString()); }
public virtual SongInAlbum AddSong(Song song, int trackNum, int discNum) { ParamIs.NotNull(() => song); var track = new SongInAlbum(song, this, trackNum, discNum); AllSongs.Add(track); song.AllAlbums.Add(track); return(track); }
public SongInAlbumEditContract(SongInAlbum songInAlbum, ContentLanguagePreference languagePreference) { ParamIs.NotNull(() => songInAlbum); ArtistString = songInAlbum.Song.ArtistString[languagePreference]; DiscNumber = songInAlbum.DiscNumber; SongName = songInAlbum.Song.TranslatedName[languagePreference]; SongAdditionalNames = string.Join(", ", songInAlbum.Song.AllNames.Where(n => n != SongName)); SongId = songInAlbum.Song.Id; SongInAlbumId = songInAlbum.Id; TrackNumber = songInAlbum.TrackNumber; }
public SongInAlbumForApiContract(SongInAlbum songInAlbum, ContentLanguagePreference languagePreference, SongOptionalFields fields) { ParamIs.NotNull(() => songInAlbum); DiscNumber = songInAlbum.DiscNumber; Id = songInAlbum.Id; TrackNumber = songInAlbum.TrackNumber; var song = songInAlbum.Song; Song = song != null ? new SongForApiContract(song, null, languagePreference, fields) : null; Name = Song != null ? Song.Name : songInAlbum.Name; }
public SongInAlbumContract(SongInAlbum songInAlbum, ContentLanguagePreference languagePreference, bool getThumbUrl = true) { ParamIs.NotNull(() => songInAlbum); DiscNumber = songInAlbum.DiscNumber; Id = songInAlbum.Id; TrackNumber = songInAlbum.TrackNumber; var song = songInAlbum.Song; Song = song != null ? new SongContract(song, languagePreference, getThumbUrl) : null; Name = Song != null ? Song.Name : songInAlbum.Name; }
private string ApplyFormat(SongInAlbum track, string format, ContentLanguagePreference languagePreference) { var album = track.Album; var sb = new StringBuilder(format); sb.Replace("%album%", GetField(album.Names.SortNames[languagePreference])); sb.Replace("%artists%", GetField(track.Song.ArtistString[languagePreference])); sb.Replace("%discnumber%", track.DiscNumber.ToString()); sb.Replace("%producers%", GetField(string.Join(", ", ArtistHelper.GetProducerNames(track.Song.Artists, SongHelper.IsAnimation(track.Song.SongType), languagePreference)))); sb.Replace("%title%", GetField(track.Song.Names.SortNames[languagePreference])); sb.Replace("%track%", track.TrackNumber.ToString()); sb.Replace("%vocalists%", GetField(string.Join(", ", ArtistHelper.GetVocalistNames(track.Song.Artists, languagePreference)))); return(sb.ToString()); }
public virtual void OnSongDeleting(SongInAlbum songInAlbum) { ParamIs.NotNull(() => songInAlbum); if (!songInAlbum.Album.Equals(this)) { throw new ArgumentException("Song is not in album"); } foreach (var song in Songs.Where(song => song.TrackNumber > songInAlbum.TrackNumber)) { song.TrackNumber--; } AllSongs.Remove(songInAlbum); }
public SongInAlbumRefContract(SongInAlbum songInAlbum) { DiscNumber = songInAlbum.DiscNumber; TrackNumber = songInAlbum.TrackNumber; var song = songInAlbum.Song; if (song != null) { Id = song.Id; NameHint = song.DefaultName; } else { NameHint = songInAlbum.Name; } }
public static Tag[] GetGenreTags(SongInAlbum songInAlbum) { Tag[] genres; if (songInAlbum.Song != null) { genres = songInAlbum.Song.Tags.TagsByVotes.Where(t => t.CategoryName == TagCommonCategoryNames.Genres).ToArray(); if (genres.Any()) { return(genres.ToArray()); } } genres = songInAlbum.Album.Tags.TagsByVotes.Where(t => t.CategoryName == TagCommonCategoryNames.Genres).ToArray(); return(genres.ToArray()); }
public SongInAlbumRefContract(SongInAlbum songInAlbum) : base(songInAlbum.Song) { DiscNumber = songInAlbum.DiscNumber; TrackNumber = songInAlbum.TrackNumber; }
public static bool TrackPropertiesEqual(SongInAlbum first, SongInAlbumEditContract second) { return(first.DiscNumber == second.DiscNumber && first.TrackNumber == second.TrackNumber); }
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 void AssertEquals(SongInAlbum first, SongInAlbumEditContract second, string message) { Assert.IsTrue(Album.TrackPropertiesEqual(first, second), message); Assert.IsTrue(Album.TrackArtistsEqual(first.Song, second), message); }
private void AssertEquals(SongInAlbum first, SongInAlbumEditContract second, string message) { Album.TrackPropertiesEqual(first, second).Should().BeTrue(message); Album.TrackArtistsEqual(first.Song, second).Should().BeTrue(message); }