public LocalizedStringWithId CreateName(string val, ContentLanguageSelection language) { var name = new LocalizedStringWithId(val, language); nameManager.Add(name); return(name); }
private LocalizedStringWithIdContract NameOrEmpty(INameManager nameManager, ContentLanguageSelection lang) { if (nameManager.HasNameForLanguage(lang)) return new LocalizedStringWithIdContract(nameManager.FirstNameBase(lang)); return New(lang); }
public ContentLanguageSelection Detect(string str, ContentLanguageSelection def = ContentLanguageSelection.Unspecified) { var factory = new RankedLanguageIdentifierFactory(); var identifier = factory.Load(LanguageFilePath); var res = identifier.Identify(str).FirstOrDefault(); if (res == null) { return(def); } var langCode = res.Item1.Iso639_2T; if (string.Equals(langCode, "jpn", StringComparison.InvariantCultureIgnoreCase)) { return(ContentLanguageSelection.Japanese); } if (string.Equals(langCode, "eng", StringComparison.InvariantCultureIgnoreCase)) { return(ContentLanguageSelection.English); } return(def); }
public TranslatedStringContract(string english, string japanese, string romaji, ContentLanguageSelection defaultLanguage) { English = english; Japanese = japanese; Romaji = romaji; DefaultLanguage = defaultLanguage; }
public TranslatedString(string original, string romaji, string english, ContentLanguageSelection defaultLanguage) { Japanese = original; Romaji = romaji; English = english; DefaultLanguage = defaultLanguage; }
private LocalizedStringWithIdContract NameOrEmpty(INameManager nameManager, ContentLanguageSelection lang) { if (nameManager.HasNameForLanguage(lang)) { return(new LocalizedStringWithIdContract(nameManager.FirstNameBase(lang))); } return(New(lang)); }
private LocalizedStringWithId AddName(string name, ContentLanguageSelection lang = ContentLanguageSelection.English) { var str = new LocalizedStringWithId(name, lang) { Id = id++ }; nameManager.Add(str); return(str); }
public virtual AlbumName CreateName(string val, ContentLanguageSelection language) { ParamIs.NotNullOrEmpty(() => val); var name = new AlbumName(this, new LocalizedString(val, language)); Names.Add(name); return(name); }
public ReleaseEvent(string description, DateTime?date, ContentLanguageSelection defaultNameLanguage) : this() { ParamIs.NotNull(() => names); Description = description; Date = date; TranslatedName.DefaultLanguage = defaultNameLanguage; TranslatedName.Clear(); }
public virtual LyricsForSong CreateLyrics(ContentLanguageSelection language, string val, string source) { ParamIs.NotNullOrEmpty(() => val); ParamIs.NotNull(() => source); var entry = new LyricsForSong(this, language, val, source); Lyrics.Add(entry); return(entry); }
public Venue(ContentLanguageSelection defaultLanguage, ICollection <ILocalizedString> names, string description) : this() { ParamIs.NotNull(() => names); if (!names.Any()) { throw new ArgumentException("Need at least one name", nameof(names)); } TranslatedName.DefaultLanguage = defaultLanguage; Description = description; foreach (var a in names) { CreateName(a); } }
private void SetValueFor(ContentLanguageSelection language) { if (!Names.Any()) { return; } var name = GetFirstName(language); if (name != null) { SortNames[language] = name.Value; } if (string.IsNullOrEmpty(SortNames[language])) { SortNames[language] = Names.First().Value; } }
public ContentLanguageSelection Detect(string str, ContentLanguageSelection def = ContentLanguageSelection.Unspecified) { var factory = new RankedLanguageIdentifierFactory(); var identifier = factory.Load(LanguageFilePath); var res = identifier.Identify(str).FirstOrDefault(); if (res == null) return def; var langCode = res.Item1.Iso639_2T; if (string.Equals(langCode, "jpn", StringComparison.InvariantCultureIgnoreCase)) return ContentLanguageSelection.Japanese; if (string.Equals(langCode, "eng", StringComparison.InvariantCultureIgnoreCase)) return ContentLanguageSelection.English; return def; }
public virtual string this[ContentLanguageSelection language] { get { switch (language) { case ContentLanguageSelection.English: return(English); case ContentLanguageSelection.Japanese: return(Japanese); case ContentLanguageSelection.Romaji: return(Romaji); default: return(Default); } } set { switch (language) { case ContentLanguageSelection.English: English = value; break; case ContentLanguageSelection.Japanese: Japanese = value; break; case ContentLanguageSelection.Romaji: Romaji = value; break; default: Default = value; break; } } }
public ReleaseEvent(string description, DateTime?date, ReleaseEventSeries series, int seriesNumber, string seriesSuffix, ContentLanguageSelection defaultNameLanguage, bool customName) : this() { ParamIs.NotNull(() => series); Description = description; Date = date; Series = series; SeriesNumber = seriesNumber; SeriesSuffix = seriesSuffix; CustomName = customName; TranslatedName.Clear(); if (customName) { TranslatedName.DefaultLanguage = defaultNameLanguage; } else { TranslatedName.DefaultLanguage = Series.TranslatedName.DefaultLanguage; } }
private T GetFirstName(ContentLanguageSelection languageSelection) { if (!Names.Any()) { return(null); } var name = FirstName(languageSelection); // Substitute English with Romaji if (name == null && languageSelection == ContentLanguageSelection.English) { name = FirstName(ContentLanguageSelection.Romaji); } // Substitute Romaji with English if (name == null && languageSelection == ContentLanguageSelection.Romaji) { name = FirstName(ContentLanguageSelection.English); } return(name ?? GetDefaultName()); }
public static string ContentLanguageSelectionName(ContentLanguageSelection languageSelection) { return ContentLanguageSelectionNames.ResourceManager.GetString(languageSelection.ToString()); }
private bool AcceptImportedSong(ISession session, Album album, InspectedTrack inspectedTrack, ContentLanguageSelection languageSelection, int[] selectedSongIds) { Song song = null; var diff = new SongDiff(false); if (NewTrack(inspectedTrack, selectedSongIds, album)) { song = new Song(new LocalizedString(inspectedTrack.ImportedTrack.Title, languageSelection)); session.Save(song); album.AddSong(song, inspectedTrack.ImportedTrack.TrackNum, inspectedTrack.ImportedTrack.DiscNum); diff.Names = true; } else if (selectedSongIds.Contains(inspectedTrack.ExistingSong.Id)) { song = session.Load<Song>(inspectedTrack.ExistingSong.Id); if (!album.HasSong(song)) album.AddSong(song, inspectedTrack.ImportedTrack.TrackNum, inspectedTrack.ImportedTrack.DiscNum); var newName = inspectedTrack.ImportedTrack.Title; if (!song.Names.HasName(newName) && !song.Names.HasNameForLanguage(languageSelection)) { song.CreateName(new LocalizedString(newName, languageSelection)); diff.Names = true; } } if (song != null) { if (inspectedTrack.ImportedTrack != null) { foreach (var artistName in inspectedTrack.ImportedTrack.ArtistNames) { if (CreateArtist(session, song, artistName, ArtistRoles.Composer)) diff.Artists = true; } foreach (var artistName in inspectedTrack.ImportedTrack.VocalistNames) { if (CreateArtist(session, song, artistName, ArtistRoles.Vocalist)) diff.Artists = true; } song.UpdateArtistString(); } Services.Songs.Archive(session, song, diff, SongArchiveReason.AutoImportedFromMikuDb, string.Format("Auto-imported from MikuDB for album '{0}'", album.DefaultName)); session.Update(song); return true; } return false; }
/// <summary> /// Gets the translation matching the selected language, or the first translation if the specified language has no translation. /// </summary> /// <param name="defaultLanguage">Selected language. If this is Unspecified, DefaultLanguage will be used.</param> /// <returns>Translated name for the selected language, or first translation. Cannot be null. Can be empty, but only if there are no translations.</returns> public virtual string GetDefaultOrFirst(ContentLanguageSelection defaultLanguage) { var val = (defaultLanguage != ContentLanguageSelection.Unspecified || DefaultLanguage != ContentLanguageSelection.Unspecified ? this[defaultLanguage] : null); return(!string.IsNullOrEmpty(val) ? val : All.FirstOrDefault(n => !string.IsNullOrEmpty(n)) ?? string.Empty); }
private AlbumContract AcceptImportedAlbum(ISession session, ContentLanguageSelection languageSelection, InspectedAlbum acceptedAlbum, int[] selectedSongIds) { Album album; var diff = new AlbumDiff(false); if (acceptedAlbum.MergedAlbum == null) { album = new Album(new LocalizedString(acceptedAlbum.ImportedAlbum.Title, languageSelection)); if (languageSelection != ContentLanguageSelection.Unspecified) album.Names.SortNames.DefaultLanguage = languageSelection; album.DiscType = DiscType.Unknown; diff.Names = true; session.Save(album); } else { album = session.Load<Album>(acceptedAlbum.MergedAlbum.Id); if (!album.Names.HasName(acceptedAlbum.ImportedAlbum.Title)) { album.CreateName(acceptedAlbum.ImportedAlbum.Title, languageSelection); diff.Names = true; } } foreach (var inspectedArtist in acceptedAlbum.Artists) { if (inspectedArtist.ExistingArtist != null) { var artist = session.Load<Artist>(inspectedArtist.ExistingArtist.Id); if (!artist.HasAlbum(album)) { session.Save(artist.AddAlbum(album)); diff.Artists = true; } } else { album.AddArtist(inspectedArtist.Name, false, ArtistRoles.Default); diff.Artists = true; } } if (acceptedAlbum.MergedAlbum == null || acceptedAlbum.MergeTracks) { foreach (var inspectedTrack in acceptedAlbum.Tracks) { if (AcceptImportedSong(session, album, inspectedTrack, languageSelection, selectedSongIds)) diff.Tracks = true; } } var importedAlbum = session.Load<MikuDbAlbum>(acceptedAlbum.ImportedAlbum.Id); importedAlbum.Status = AlbumStatus.Approved; if (importedAlbum.CoverPicture != null && album.CoverPictureData == null) { album.CoverPictureData = importedAlbum.CoverPicture; using (var stream = new MemoryStream(album.CoverPictureData.Bytes)) { var thumbs = ImageHelper.GenerateThumbs(stream, new[] { 250 }); if (thumbs.Any()) { album.CoverPictureData.Thumb250 = new PictureThumb250(thumbs.First().Bytes); } } diff.Cover = true; } if (acceptedAlbum.ImportedAlbum.Data.ReleaseYear != null && album.OriginalReleaseDate.Year == null) { album.OriginalReleaseDate.Year = acceptedAlbum.ImportedAlbum.Data.ReleaseYear; diff.OriginalRelease = true; } if (!album.WebLinks.Any(w => w.Url.Contains("mikudb.com"))) { album.CreateWebLink("MikuDB", acceptedAlbum.ImportedAlbum.SourceUrl, WebLinkCategory.Reference); diff.WebLinks = true; } album.UpdateArtistString(); AuditLog(string.Format("accepted imported album '{0}'", acceptedAlbum.ImportedAlbum.Title), session); AddEntryEditedEntry(session, album, EntryEditEvent.Created); Services.Albums.Archive(session, album, diff, AlbumArchiveReason.AutoImportedFromMikuDb); session.Update(album); session.Update(importedAlbum); return new AlbumContract(album, PermissionContext.LanguagePreference); }
public LocalizedStringContract(string value, ContentLanguageSelection language) { Value = value; Language = language; }
public ContentLanguageSelection Detect(string str, ContentLanguageSelection def) { return(def); }
private AlbumContract AcceptImportedAlbum(ISession session, IAlbumImporter importer, ContentLanguageSelection languageSelection, InspectedAlbum acceptedAlbum, int[] selectedSongIds) { Album album; var diff = new AlbumDiff(false); var isNew = acceptedAlbum.MergedAlbum == null; if (isNew) { album = new Album(new LocalizedString(acceptedAlbum.ImportedAlbum.Title, languageSelection)); if (languageSelection != ContentLanguageSelection.Unspecified) { album.Names.SortNames.DefaultLanguage = languageSelection; } album.DiscType = DiscType.Unknown; diff.Names.Set(); session.Save(album); } else { album = session.Load <Album>(acceptedAlbum.MergedAlbum.Id); if (!album.Names.HasName(acceptedAlbum.ImportedAlbum.Title)) { album.CreateName(acceptedAlbum.ImportedAlbum.Title, languageSelection); diff.Names.Set(); } } foreach (var inspectedArtist in acceptedAlbum.Artists) { if (inspectedArtist.ExistingArtist != null) { var artist = session.Load <Artist>(inspectedArtist.ExistingArtist.Id); if (!artist.HasAlbum(album)) { session.Save(artist.AddAlbum(album)); diff.Artists.Set(); } } else { album.AddArtist(inspectedArtist.Name, false, ArtistRoles.Default); diff.Artists.Set(); } } if (acceptedAlbum.MergedAlbum == null || acceptedAlbum.MergeTracks) { foreach (var inspectedTrack in acceptedAlbum.Tracks) { if (AcceptImportedSong(session, importer, album, inspectedTrack, languageSelection, selectedSongIds)) { diff.Tracks.Set(); } } } var importedAlbum = session.Load <MikuDbAlbum>(acceptedAlbum.ImportedAlbum.Id); importedAlbum.Status = AlbumStatus.Approved; if (importedAlbum.CoverPicture != null && album.CoverPictureData == null) { album.CoverPictureData = importedAlbum.CoverPicture; album.CoverPictureMime = importedAlbum.CoverPictureMime; // TODO: should generate thumbnail as well diff.Cover.Set(); } if (acceptedAlbum.ImportedAlbum.Data.ReleaseYear != null && album.OriginalReleaseDate.Year == null) { album.OriginalReleaseDate.Year = acceptedAlbum.ImportedAlbum.Data.ReleaseYear; diff.OriginalRelease.Set(); } // Add link if not already added a link to that service var sourceUrl = acceptedAlbum.ImportedAlbum.SourceUrl; if (importer != null && !string.IsNullOrEmpty(sourceUrl)) { if (album.WebLinks.All(w => !string.Equals(w.Url, sourceUrl, StringComparison.InvariantCultureIgnoreCase) && !importer.IsValidFor(w.Url))) { album.CreateWebLink(importer.ServiceName, sourceUrl, WebLinkCategory.Reference, disabled: false); diff.WebLinks.Set(); } } album.UpdateArtistString(); var importerName = importer != null ? importer.ServiceName : "(unknown)"; var archived = _albumService.Archive(session, album, diff, AlbumArchiveReason.AutoImportedFromMikuDb, "Imported from " + importerName); AuditLog($"accepted imported album '{acceptedAlbum.ImportedAlbum.Title}'", session); AddEntryEditedEntry(session, album, isNew ? EntryEditEvent.Created : EntryEditEvent.Updated, archived); session.Update(album); session.Update(importedAlbum); return(new AlbumContract(album, PermissionContext.LanguagePreference)); }
public static string ContentLanguageSelectionName(ContentLanguageSelection languageSelection) { return(ContentLanguageSelectionNames.ResourceManager.GetString(languageSelection.ToString())); }
private void CreateName(Album album, string val, ContentLanguageSelection language) { var name = album.CreateName(val, language); querySource.Add(name); }
public virtual bool HasNameForLanguage(ContentLanguageSelection language) { return(FirstName(language) != null); }
public bool HasNameForLanguage(ContentLanguageSelection language) { return true; }
public PartialViewResult CreateName(string nameVal, ContentLanguageSelection language) { return PartialView("LocalizedStringEditableRow", new LocalizedStringEdit { Language = language, Value = nameVal }); }
public virtual string this[ContentLanguageSelection language] { get { switch (language) { case ContentLanguageSelection.English: return English; case ContentLanguageSelection.Japanese: return Japanese; case ContentLanguageSelection.Romaji: return Romaji; default: return Default; } } set { switch (language) { case ContentLanguageSelection.English: English = value; break; case ContentLanguageSelection.Japanese: Japanese = value; break; case ContentLanguageSelection.Romaji: Romaji = value; break; default: Default = value; break; } } }
private bool AcceptImportedSong(ISession session, IAlbumImporter importer, Album album, InspectedTrack inspectedTrack, ContentLanguageSelection languageSelection, int[] selectedSongIds) { Song song = null; var diff = new SongDiff(false); if (NewTrack(inspectedTrack, selectedSongIds, album)) { song = new Song(new LocalizedString(inspectedTrack.ImportedTrack.Title, languageSelection)); session.Save(song); album.AddSong(song, inspectedTrack.ImportedTrack.TrackNum, inspectedTrack.ImportedTrack.DiscNum); diff.Names.Set(); } else if (selectedSongIds.Contains(inspectedTrack.ExistingSong.Id)) { song = session.Load <Song>(inspectedTrack.ExistingSong.Id); if (!album.HasSong(song)) { album.AddSong(song, inspectedTrack.ImportedTrack.TrackNum, inspectedTrack.ImportedTrack.DiscNum); } var newName = inspectedTrack.ImportedTrack.Title; if (!song.Names.HasName(newName) && !song.Names.HasNameForLanguage(languageSelection)) { song.CreateName(new LocalizedString(newName, languageSelection)); diff.Names.Set(); } } if (song != null) { if (inspectedTrack.ImportedTrack != null) { foreach (var artistName in inspectedTrack.ImportedTrack.ArtistNames) { if (CreateArtist(session, song, artistName, ArtistRoles.Composer)) { diff.Artists.Set(); } } foreach (var artistName in inspectedTrack.ImportedTrack.VocalistNames) { if (CreateArtist(session, song, artistName, ArtistRoles.Vocalist)) { diff.Artists.Set(); } } song.UpdateArtistString(); } if (diff.ChangedFields.Value != SongEditableFields.Nothing) { var importerName = importer != null ? importer.ServiceName : "(unknown)"; _songService.Archive(session, song, diff, SongArchiveReason.AutoImportedFromMikuDb, $"Auto-imported from {importerName} for album '{album.DefaultName}'"); } session.Update(song); return(true); } return(false); }
public virtual string GetBestMatch(ContentLanguagePreference preference, ContentLanguageSelection defaultLanguage) { var val = this[preference == ContentLanguagePreference.Default ? defaultLanguage : (ContentLanguageSelection)preference]; return (!string.IsNullOrEmpty(val) ? val : GetDefaultOrFirst(defaultLanguage)); }
public LocalizedStringWithId FirstNameBase(ContentLanguageSelection languageSelection) { return new LocalizedStringWithId(name, languageSelection); }
public virtual SongName CreateName(string val, ContentLanguageSelection language) { ParamIs.NotNullOrEmpty(() => val); return(CreateName(new LocalizedString(val, language))); }
public LocalizedStringWithId(string val, ContentLanguageSelection language) : base(val, language) { }
private void AddName(string name, ContentLanguageSelection lang) { nameManager.Add(new LocalizedStringWithId(name, lang)); }
private LocalizedStringWithIdContract New(ContentLanguageSelection lang) { return(new LocalizedStringWithIdContract { Language = lang }); }
public LocalizedString(string val, ContentLanguageSelection language) : this() { Value = val; Language = language; }
public virtual string GetBestMatch(ContentLanguagePreference preference, ContentLanguageSelection defaultLanguage) { var val = this[preference == ContentLanguagePreference.Default ? defaultLanguage : (ContentLanguageSelection)preference]; return(!string.IsNullOrEmpty(val) ? val : GetDefaultOrFirst(defaultLanguage)); }
public LocalizedStringWithId FirstNameBase(ContentLanguageSelection languageSelection) { return(new LocalizedStringWithId(name, languageSelection)); }
public ContentLanguageSelection Detect(string str, ContentLanguageSelection def) { return def; }
public bool HasNameForLanguage(ContentLanguageSelection language) { return(true); }
/// <summary> /// Gets the translation matching the selected language, or the first translation if the specified language has no translation. /// </summary> /// <param name="defaultLanguage">Selected language. If this is Unspecified, DefaultLanguage will be used.</param> /// <returns>Translated name for the selected language, or first translation. Cannot be null. Can be empty, but only if there are no translations.</returns> public virtual string GetDefaultOrFirst(ContentLanguageSelection defaultLanguage) { var val = (defaultLanguage != ContentLanguageSelection.Unspecified || DefaultLanguage != ContentLanguageSelection.Unspecified ? this[defaultLanguage] : null); return !string.IsNullOrEmpty(val) ? val : All.FirstOrDefault(n => !string.IsNullOrEmpty(n)) ?? string.Empty; }
private LocalizedStringWithIdContract New(ContentLanguageSelection lang) { return new LocalizedStringWithIdContract { Language = lang }; }
public LocalizedStringWithId(string val, ContentLanguageSelection language) : base(val, language) {}
public override string this[ContentLanguageSelection language] { get => language switch