public Contract_AniDB_Seiyuu ToContract() { Contract_AniDB_Seiyuu contract = new Contract_AniDB_Seiyuu(); contract.AniDB_SeiyuuID = this.AniDB_SeiyuuID; contract.SeiyuuID = this.SeiyuuID; contract.SeiyuuName = this.SeiyuuName; contract.PicName = this.PicName; return(contract); }
private static void FillSerie(Video p, AnimeSeries aser, Dictionary <AnimeEpisode, Contract_AnimeEpisode> eps, AniDB_Anime anidb, Contract_AnimeSeries ser, int userid) { using (ISession session = JMMService.SessionFactory.OpenSession()) { Contract_AniDBAnime anime = ser.AniDBAnime.AniDBAnime; p.Id = ser.AnimeSeriesID.ToString(); p.AnimeType = JMMContracts.PlexAndKodi.AnimeTypes.AnimeSerie.ToString(); if (ser.AniDBAnime.AniDBAnime.Restricted > 0) { p.ContentRating = "R"; } p.Title = aser.GetSeriesName(session); p.Summary = SummaryFromAnimeContract(ser); p.Type = "show"; p.AirDate = DateTime.MinValue; TextInfo textInfo = new CultureInfo("en-US", false).TextInfo; if (anime.AllTags.Count > 0) { p.Genres = new List <Tag>(); anime.AllTags.ToList().ForEach(a => p.Genres.Add(new Tag { Value = textInfo.ToTitleCase(a.Trim()) })); } //p.OriginalTitle if (anime.AirDate.HasValue) { p.AirDate = anime.AirDate.Value; p.OriginallyAvailableAt = anime.AirDate.Value.ToPlexDate(); p.Year = anime.AirDate.Value.Year.ToString(); } p.LeafCount = anime.EpisodeCount.ToString(); //p.ChildCount = p.LeafCount; p.ViewedLeafCount = ser.WatchedEpisodeCount.ToString(); p.Rating = (anime.Rating / 100F).ToString(CultureInfo.InvariantCulture); List <Contract_CrossRef_AniDB_TvDBV2> ls = ser.CrossRefAniDBTvDBV2; if (ls != null && ls.Count > 0) { foreach (Contract_CrossRef_AniDB_TvDBV2 c in ls) { if (c.TvDBSeasonNumber != 0) { p.Season = c.TvDBSeasonNumber.ToString(); p.Index = p.Season; } } } p.Thumb = p.ParentThumb = anime.DefaultImagePoster.GenPoster(); p.Art = anime?.DefaultImageFanart?.GenArt(); if (eps != null) { List <enEpisodeType> types = eps.Keys.Select(a => a.EpisodeTypeEnum).Distinct().ToList(); p.ChildCount = types.Count > 1 ? types.Count.ToString() : eps.Keys.Count.ToString(); } p.Roles = new List <RoleTag>(); //TODO Character implementation is limited in JMM, One Character, could have more than one Seiyuu if (anidb.Contract?.AniDBAnime?.Characters != null) { foreach (Contract_AniDB_Character c in anidb.Contract.AniDBAnime.Characters) { string ch = c?.CharName; Contract_AniDB_Seiyuu seiyuu = c?.Seiyuu; if (!string.IsNullOrEmpty(ch)) { RoleTag t = new RoleTag(); t.Value = seiyuu?.SeiyuuName; if (seiyuu != null) { t.TagPicture = Helper.ConstructSeiyuuImage(seiyuu.AniDB_SeiyuuID); } t.Role = ch; t.RoleDescription = c?.CharDescription; t.RolePicture = Helper.ConstructCharacterImage(c.CharID); p.Roles.Add(t); } } } p.Titles = new List <AnimeTitle>(); foreach (AniDB_Anime_Title title in anidb.GetTitles()) { p.Titles.Add(new AnimeTitle { Language = title.Language, Title = title.Title, Type = title.TitleType }); } } }
public static Video GenerateFromAnimeGroup(ISession session, AnimeGroup grp, int userid, List <AnimeSeries> allSeries) { Contract_AnimeGroup cgrp = grp.GetUserContract(userid); int subgrpcnt = grp.GetAllChildGroups().Count; if ((cgrp.Stat_SeriesCount == 1) && (subgrpcnt == 0)) { AnimeSeries ser = JMMServiceImplementation.GetSeriesForGroup(grp.AnimeGroupID, allSeries); if (ser != null) { Contract_AnimeSeries cserie = ser.GetUserContract(userid); if (cserie != null) { Video v = GenerateFromSeries(cserie, ser, ser.GetAnime(session), userid); v.AirDate = ser.AirDate; v.UpdatedAt = ser.LatestEpisodeAirDate.HasValue ? ser.LatestEpisodeAirDate.Value.ToUnixTime() : null; v.Group = cgrp; return(v); } } } else { AnimeSeries ser = grp.DefaultAnimeSeriesID.HasValue ? allSeries.FirstOrDefault(a => a.AnimeSeriesID == grp.DefaultAnimeSeriesID.Value) : allSeries.Find(a => a.AirDate != DateTime.MinValue); if ((ser == null) && (allSeries != null && allSeries.Count > 0)) { ser = allSeries[0]; } Contract_AnimeSeries cserie = ser?.GetUserContract(userid); Video v = FromGroup(cgrp, cserie, userid, subgrpcnt); v.Group = cgrp; v.AirDate = cgrp.Stat_AirDate_Min ?? DateTime.MinValue; v.UpdatedAt = cgrp.LatestEpisodeAirDate?.ToUnixTime(); v.Rating = "" + Math.Round((grp.AniDBRating / 100), 1); List <Tag> newTags = new List <Tag>(); foreach (AniDB_Tag tag in grp.Tags) { Tag newTag = new Tag(); TextInfo textInfo = new CultureInfo("en-US", false).TextInfo; newTag.Value = textInfo.ToTitleCase(tag.TagName.Trim()); if (!newTags.Contains(newTag)) { newTags.Add(newTag); } } v.Genres = newTags; if (ser != null) { List <AnimeTitle> newTitles = new List <AnimeTitle>(); foreach (AniDB_Anime_Title title in ser.GetAnime(session).GetTitles()) { AnimeTitle newTitle = new AnimeTitle(); newTitle.Title = title.Title; newTitle.Language = title.Language; newTitle.Type = title.TitleType; newTitles.Add(newTitle); } v.Titles = newTitles; v.Roles = new List <RoleTag>(); //TODO Character implementation is limited in JMM, One Character, could have more than one Seiyuu if (ser.GetAnime(session).Contract?.AniDBAnime?.Characters != null) { foreach (Contract_AniDB_Character c in ser.GetAnime(session).Contract.AniDBAnime.Characters) { string ch = c?.CharName; Contract_AniDB_Seiyuu seiyuu = c?.Seiyuu; if (!string.IsNullOrEmpty(ch)) { RoleTag t = new RoleTag(); t.Value = seiyuu?.SeiyuuName; if (seiyuu != null) { t.TagPicture = Helper.ConstructSeiyuuImage(seiyuu.AniDB_SeiyuuID); } t.Role = ch; t.RoleDescription = c?.CharDescription; t.RolePicture = Helper.ConstructCharacterImage(c.CharID); v.Roles.Add(t); } } } } return(v); } return(null); }