Пример #1
0
        private void LoadJson([NotNull] JObject r)
        {
            AirsDay = ((string)r["airsDayOfWeek"])?.Trim();
            string airsTimeString = (string)r["airsTime"];

            AirsTime     = JsonHelper.ParseAirTime(airsTimeString);
            Aliases      = (r["aliases"] ?? throw new SourceConsistencyException($"Can't find aliases in Series JSON: {r}", TVDoc.ProviderType.TheTVDB)).Select(x => x.Value <string>()).ToList();
            BannerString = (string)r["banner"];
            FirstAired   = JsonHelper.ParseFirstAired((string)r["firstAired"]);

            if (r.ContainsKey("genre"))
            {
                Genres = r["genre"]?.Select(x => x.Value <string>().Trim()).Distinct().ToList() ?? new List <string>();
            }

            TvdbCode      = (int)r["id"];
            Imdb          = ((string)r["imdbId"])?.Trim();
            Network       = ((string)r["network"])?.Trim();
            Slug          = ((string)r["slug"])?.Trim();
            Overview      = System.Web.HttpUtility.HtmlDecode((string)r["overview"])?.Trim();
            ContentRating = ((string)r["rating"])?.Trim();
            Runtime       = ((string)r["runtime"])?.Trim();
            SeriesId      = (string)r["seriesId"];
            string s = (string)r["seriesName"];

            if (s != null)
            {
                Name = System.Web.HttpUtility.HtmlDecode(s).Trim();
            }
            Status = (string)r["status"];

            SrvLastUpdated = long.TryParse((string)r["lastUpdated"], out long updateTime) ? updateTime : 0;

            string siteRatingString = (string)r["siteRating"];

            float.TryParse(siteRatingString, NumberStyles.AllowDecimalPoint | NumberStyles.AllowLeadingWhite | NumberStyles.AllowTrailingWhite, CultureInfo.CreateSpecificCulture("en-US"), out SiteRating);

            string siteRatingVotesString = (string)r["siteRatingCount"];

            int.TryParse(siteRatingVotesString, NumberStyles.AllowLeadingWhite | NumberStyles.AllowTrailingWhite, CultureInfo.CreateSpecificCulture("en-US"), out SiteRatingVotes);
        }
Пример #2
0
        public Episode([NotNull] XElement r)
        {
            // <Episode>
            //  <id>...</id>
            //  blah blah
            // </Episode>
            SeriesId = r.ExtractInt("seriesid", -1); // key to the cachedSeries

            EpisodeId          = r.ExtractInt("id", -1);
            SeasonId           = r.ExtractInt("airedSeasonID") ?? r.ExtractInt("seasonid", -1);
            AiredEpNum         = r.ExtractInt("airedEpisodeNumber") ?? r.ExtractInt("EpisodeNumber", -1);
            DvdEpNum           = ExtractAndParse(r, "dvdEpisodeNumber");
            ReadAiredSeasonNum = ExtractAndParse(r, "SeasonNumber");
            ReadDvdSeasonNum   = ExtractAndParse(r, "dvdSeason");
            SrvLastUpdated     = r.ExtractLong("lastupdated", -1);
            Overview           = System.Web.HttpUtility.HtmlDecode(XmlHelper.ReadStringFixQuotesAndSpaces(r.ExtractString("Overview")));
            LinkUrl            = XmlHelper.ReadStringFixQuotesAndSpaces(r.ExtractString("LinkURL"));
            Runtime            = XmlHelper.ReadStringFixQuotesAndSpaces(r.ExtractString("Runtime"));
            EpisodeRating      = XmlHelper.ReadStringFixQuotesAndSpaces(r.ExtractString("Rating"));
            EpisodeGuestStars  = XmlHelper.ReadStringFixQuotesAndSpaces(r.ExtractString("GuestStars"));
            EpisodeDirector    = XmlHelper.ReadStringFixQuotesAndSpaces(r.ExtractString("EpisodeDirector"));
            Writer             = XmlHelper.ReadStringFixQuotesAndSpaces(r.ExtractString("Writer"));
            mName = System.Web.HttpUtility.HtmlDecode(XmlHelper.ReadStringFixQuotesAndSpaces(r.ExtractString("EpisodeName")));

            AirStamp = r.ExtractDateTime("AirStamp");
            AirTime  = JsonHelper.ParseAirTime(r.ExtractString("Airs_Time"));

            DvdDiscId      = r.ExtractString("DvdDiscId");
            Filename       = r.ExtractStringOrNull("Filename") ?? r.ExtractString("filename");
            ShowUrl        = r.ExtractStringOrNull("ShowUrl") ?? r.ExtractString("showUrl");
            ImdbCode       = r.ExtractStringOrNull("ImdbCode") ?? r.ExtractStringOrNull("IMDB_ID") ?? r.ExtractString("imdbId");
            ProductionCode = r.ExtractStringOrNull("ProductionCode") ?? r.ExtractString("productionCode");

            DvdChapter        = r.ExtractInt("DvdChapter") ?? r.ExtractInt("dvdChapter");
            AirsBeforeSeason  = r.ExtractInt("AirsBeforeSeason") ?? r.ExtractInt("airsBeforeSeason") ?? r.ExtractInt("airsbefore_season");
            AirsBeforeEpisode = r.ExtractInt("AirsBeforeEpisode") ?? r.ExtractInt("airsBeforeEpisode") ?? r.ExtractInt("airsbefore_episode");
            AirsAfterSeason   = r.ExtractInt("AirsAfterSeason");
            SiteRatingCount   = r.ExtractInt("SiteRatingCount") ?? r.ExtractInt("siteRatingCount");
            AbsoluteNumber    = r.ExtractInt("AbsoluteNumber");
            FirstAired        = JsonHelper.ParseFirstAired(r.ExtractString("FirstAired"));
        }
Пример #3
0
        private void LoadXml([NotNull] XElement seriesXml)
        {
            //<Data>
            // <Series>
            //  <id>...</id>
            //  etc.
            // </Series>
            // <Episode>
            //  <id>...</id>
            //  blah blah
            // </Episode>
            // <Episode>
            //  <id>...</id>
            //  blah blah
            // </Episode>
            // ...
            //</Data>

            try
            {
                TvdbCode   = seriesXml.ExtractInt("id") ?? throw new SourceConsistencyException("Error Extracting Id for Series", TVDoc.ProviderType.TheTVDB);
                TvMazeCode = seriesXml.ExtractInt("mazeid") ?? -1;
                TmdbCode   = seriesXml.ExtractInt("TMDBCode") ?? -1;

                Name = System.Web.HttpUtility.HtmlDecode(
                    XmlHelper.ReadStringFixQuotesAndSpaces(seriesXml.ExtractStringOrNull("SeriesName") ?? seriesXml.ExtractString("seriesName")));

                SrvLastUpdated = seriesXml.ExtractLong("lastupdated") ?? seriesXml.ExtractLong("lastUpdated", 0);
                LanguageId     = seriesXml.ExtractInt("LanguageId") ?? seriesXml.ExtractInt("languageId") ?? throw new SourceConsistencyException("Error Extracting Language for Series", TVDoc.ProviderType.TheTVDB);

                string airsTimeString = seriesXml.ExtractStringOrNull("Airs_Time") ?? seriesXml.ExtractString("airsTime");
                AirsTime = JsonHelper.ParseAirTime(airsTimeString);

                AirsDay         = seriesXml.ExtractStringOrNull("airsDayOfWeek") ?? seriesXml.ExtractString("Airs_DayOfWeek");
                BannerString    = seriesXml.ExtractStringOrNull("banner") ?? seriesXml.ExtractString("Banner");
                PosterUrl       = seriesXml.ExtractString("posterURL");
                Imdb            = seriesXml.ExtractStringOrNull("imdbId") ?? seriesXml.ExtractString("IMDB_ID");
                WebUrl          = seriesXml.ExtractString("WebURL");
                OfficialUrl     = seriesXml.ExtractString("OfficialUrl");
                Type            = seriesXml.ExtractString("Type");
                ShowLanguage    = seriesXml.ExtractString("ShowLanguage");
                TvRageCode      = seriesXml.ExtractInt("rageid") ?? 0;
                Network         = seriesXml.ExtractStringOrNull("network") ?? seriesXml.ExtractString("Network");
                Overview        = seriesXml.ExtractStringOrNull("overview") ?? seriesXml.ExtractString("Overview");
                ContentRating   = seriesXml.ExtractStringOrNull("rating") ?? seriesXml.ExtractString("Rating");
                Runtime         = seriesXml.ExtractStringOrNull("runtime") ?? seriesXml.ExtractString("Runtime");
                SeriesId        = seriesXml.ExtractStringOrNull("seriesId") ?? seriesXml.ExtractString("SeriesID");
                Status          = seriesXml.ExtractStringOrNull("status") ?? seriesXml.ExtractString("Status");
                SiteRatingVotes = seriesXml.ExtractInt("siteRatingCount") ?? seriesXml.ExtractInt("SiteRatingCount", 0);
                Slug            = seriesXml.ExtractString("slug");

                SiteRating = GetSiteRating(seriesXml);
                FirstAired = JsonHelper.ParseFirstAired(seriesXml.ExtractStringOrNull("FirstAired") ?? seriesXml.ExtractString("firstAired"));

                LoadActors(seriesXml);
                LoadAliases(seriesXml);
                LoadGenres(seriesXml);
                LoadSeasons(seriesXml);
            }
            catch (SourceConsistencyException e)
            {
                LOGGER.Error(e, GenerateErrorMessage());
                // ReSharper disable once PossibleIntendedRethrow
                throw e;
            }
        }