private static void processSeriesDescriptionsResponses() { // process request response foreach (KeyValuePair <string, sdGenericDescriptions> response in seriesDescriptionResponses) { ++processedObjects; reportProgress(); string series_id = response.Key.Replace("EP", "SH"); sdGenericDescriptions description = response.Value; // determine which seriesInfo this belongs to MxfSeriesInfo mxfSeriesInfo = sdMxf.With[0].getSeriesInfo(series_id.Substring(2, 8)); // populate descriptions mxfSeriesInfo.ShortDescription = description.Description100; mxfSeriesInfo.Description = description.Description1000; // serialize JSON directly to a file string filepath = string.Format("{0}\\{1}", Helper.Epg123CacheFolder, series_id); using (StreamWriter writer = File.CreateText(filepath)) { try { JsonSerializer serializer = new JsonSerializer(); serializer.Serialize(writer, description); } catch { } } } }
private static void processSeriesImageResponses() { // process request response foreach (sdArtworkResponse response in seriesImageResponses) { ++processedObjects; reportProgress(); if (response.Data != null) { MxfSeriesInfo mxfSeriesInfo = null; if (response.ProgramID.StartsWith("SP")) { foreach (string key in sportsSeries.AllKeys) { if (sportsSeries.Get(key).Contains(response.ProgramID.Substring(0, 10))) { mxfSeriesInfo = sdMxf.With[0].getSeriesInfo(key); } } } else { mxfSeriesInfo = sdMxf.With[0].getSeriesInfo(response.ProgramID.Substring(2, 8)); } if (mxfSeriesInfo == null || !string.IsNullOrEmpty(mxfSeriesInfo.GuideImage)) { return; } // get series images mxfSeriesInfo.seriesImages = getSeriesImages(response.Data); if (mxfSeriesInfo.seriesImages.Count > 0) { string mxfAspect = config.SeriesPosterArt ? "2x3" : "4x3"; var image = mxfSeriesInfo.seriesImages.Where(arg => arg.Aspect.ToLower().Equals(mxfAspect)).SingleOrDefault(); if (image != null) { mxfSeriesInfo.GuideImage = sdMxf.With[0].getGuideImage(image.Uri).Id; // add to archive for no other reason than to see it newImageLibrary.Images.Add(new archiveImage() { Title = mxfSeriesInfo.Title, Url = image.Uri, Zap2itId = mxfSeriesInfo.tmsSeriesId, Height = image.Height, Width = image.Width }); } } } } }
private static void ProcessSeriesImageResponses() { // process request response foreach (var response in imageResponses) { ++processedObjects; ReportProgress(); var uid = response.ProgramId; if (response.Data == null) { continue; } MxfSeriesInfo series = null; if (response.ProgramId.StartsWith("SP")) { foreach (var key in sportsSeries.AllKeys) { if (!sportsSeries.Get(key).Contains(response.ProgramId)) { continue; } series = SdMxf.GetSeriesInfo(key); uid = key; } } else { series = SdMxf.GetSeriesInfo(response.ProgramId.Substring(2, 8)); } if (series == null || !string.IsNullOrEmpty(series.GuideImage) || series.extras.ContainsKey("artwork")) { continue; } // get series images var artwork = GetTieredImages(response.Data, new List <string> { "series", "sport", "episode" }); if (response.ProgramId.StartsWith("SP") && artwork.Count <= 0) { continue; } series.extras.Add("artwork", artwork); series.mxfGuideImage = GetGuideImageAndUpdateCache(artwork, ImageType.Series, uid); } }
// Icons private static List <XmltvIcon> buildProgramIcons(MxfProgram mxfProgram) { // a movie will have a guide image from the program if (mxfProgram.programImages != null) { List <XmltvIcon> ret = new List <XmltvIcon>(); foreach (sdImage image in mxfProgram.programImages) { ret.Add(new XmltvIcon() { src = image.Uri, height = image.Height, width = image.Width }); } return(ret); } // get the series info class from the program if it is a series if (!string.IsNullOrEmpty(mxfProgram.Series)) { MxfSeriesInfo mxfSeriesInfo = sdMxf.With[0].SeriesInfos[int.Parse(mxfProgram.Series.Substring(2)) - 1]; if (!mxfSeriesInfo.Id.Equals(mxfProgram.Series)) { mxfSeriesInfo = sdMxf.With[0].SeriesInfos.Where(arg => arg.Id.Equals(mxfProgram.Series)).SingleOrDefault(); } if (mxfSeriesInfo != null && mxfSeriesInfo.seriesImages != null) { List <XmltvIcon> ret = new List <XmltvIcon>(); foreach (sdImage image in mxfSeriesInfo.seriesImages) { ret.Add(new XmltvIcon() { src = image.Uri, height = image.Height, width = image.Width }); } return(ret); } } return(null); }
private static bool BuildProgram(string tmsId, XmltvProgramme program) { MxfProgram mxfProgram = Common.mxf.With[0].getProgram(tmsId); if (!string.IsNullOrEmpty(mxfProgram.Title)) { return(true); } mxfProgram.Title = program.Titles[0].Text; if (mxfProgram.episodeInfo.NumberOfParts > 1) { string partofparts = string.Format(" ({0}/{1})", mxfProgram.episodeInfo.PartNumber, mxfProgram.episodeInfo.NumberOfParts); mxfProgram.Title = mxfProgram.Title.Replace(partofparts, "") + partofparts; } mxfProgram.EpisodeTitle = (program.SubTitles.Count > 0) ? program.SubTitles[0].Text : null; mxfProgram.Description = (program.Descriptions.Count > 0) ? program.Descriptions[0].Text : null; mxfProgram.Language = program.Language?.Text ?? program.Titles[0].Language; mxfProgram.SeasonNumber = (mxfProgram.episodeInfo.SeasonNumber > 0) ? mxfProgram.episodeInfo.SeasonNumber.ToString() : null; mxfProgram.EpisodeNumber = (mxfProgram.episodeInfo.EpisodeNumber > 0) ? mxfProgram.episodeInfo.EpisodeNumber.ToString() : null; mxfProgram.IsAction = Common.ListContains(program.Categories, "Action"); mxfProgram.IsComedy = Common.ListContains(program.Categories, "Comedy"); mxfProgram.IsDocumentary = Common.ListContains(program.Categories, "Documentary"); mxfProgram.IsDrama = Common.ListContains(program.Categories, "Drama"); mxfProgram.IsEducational = Common.ListContains(program.Categories, "Educational"); mxfProgram.IsHorror = Common.ListContains(program.Categories, "Horror"); //mxfProgram.IsIndy = null; mxfProgram.IsKids = Common.ListContains(program.Categories, "Children") ?? Common.ListContains(program.Categories, "Family"); mxfProgram.IsMusic = Common.ListContains(program.Categories, "Music"); mxfProgram.IsNews = Common.ListContains(program.Categories, "News"); mxfProgram.IsReality = Common.ListContains(program.Categories, "Reality"); mxfProgram.IsRomance = Common.ListContains(program.Categories, "Romance"); mxfProgram.IsScienceFiction = Common.ListContains(program.Categories, "Science Fiction"); mxfProgram.IsSoap = Common.ListContains(program.Categories, "Soap"); mxfProgram.IsThriller = Common.ListContains(program.Categories, "Suspense") ?? Common.ListContains(program.Categories, "Thriller"); //mxfProgram.IsPremiere = ; //mxfProgram.IsSeasonFinale = ; //mxfProgram.IsSeasonPremiere = ; //mxfProgram.IsSeriesFinale = ; //mxfProgram.IsSeriesPremiere = ; //mxfProgram.IsLimitedSeries = null; mxfProgram.IsMiniseries = Common.ListContains(program.Categories, "Miniseries"); mxfProgram.IsMovie = mxfProgram.episodeInfo.Type.Equals("MV") ? "true" : Common.ListContains(program.Categories, "Movie"); mxfProgram.IsPaidProgramming = Common.ListContains(program.Categories, "Paid Programming"); //mxfProgram.IsProgramEpisodic = null; //mxfProgram.IsSerial = null; mxfProgram.IsSeries = Common.ListContains(program.Categories, "Series") ?? Common.ListContains(program.Categories, "Sports non-event"); mxfProgram.IsShortFilm = Common.ListContains(program.Categories, "Short Film"); mxfProgram.IsSpecial = Common.ListContains(program.Categories, "Special"); mxfProgram.IsSports = Common.ListContains(program.Categories, "Sports event"); if (string.IsNullOrEmpty(mxfProgram.IsSeries + mxfProgram.IsMiniseries + mxfProgram.IsMovie + mxfProgram.IsPaidProgramming + mxfProgram.IsShortFilm + mxfProgram.IsSpecial + mxfProgram.IsSports)) { mxfProgram.IsSeries = "true"; } // determine if generic if (mxfProgram.episodeInfo.Type.Equals("SH") && (!string.IsNullOrEmpty(mxfProgram.IsSeries) || !string.IsNullOrEmpty(mxfProgram.IsSports)) && string.IsNullOrEmpty(mxfProgram.IsMiniseries) && string.IsNullOrEmpty(mxfProgram.IsPaidProgramming)) { mxfProgram.IsGeneric = "true"; } // determine keywords Common.determineProgramKeywords(ref mxfProgram, program.Categories); // take care of episode original air date or movie year if (!string.IsNullOrEmpty(mxfProgram.IsMovie) && !string.IsNullOrEmpty(program.Date)) { mxfProgram.Year = program.Date.Substring(0, 4); } else if (!string.IsNullOrEmpty(program.Date) && program.Date.Length >= 8) { mxfProgram.OriginalAirdate = program.Date.Substring(0, 4) + "-" + program.Date.Substring(4, 2) + "-" + program.Date.Substring(6, 2); } else if (program.PreviouslyShown != null) { mxfProgram.OriginalAirdate = "1970-01-01"; } // handle series specific info if (string.IsNullOrEmpty(mxfProgram.IsMovie)) { MxfSeriesInfo mxfSeriesInfo = Common.mxf.With[0].getSeriesInfo(mxfProgram.episodeInfo.SeriesID); if (string.IsNullOrEmpty(mxfSeriesInfo.Title)) { mxfSeriesInfo.Title = mxfProgram.Title; if (program.Icons.Count > 0) { mxfSeriesInfo.GuideImage = Common.mxf.With[0].getGuideImage(program.Icons[0].src)?.Id; } } if (mxfProgram.episodeInfo.Type.Equals("SH")) { if (string.IsNullOrEmpty(mxfSeriesInfo.Description)) { mxfSeriesInfo.Description = mxfProgram.Description; } } mxfProgram.Series = mxfSeriesInfo.Id; // if there is a season number, create as seasonInfo entry if (!string.IsNullOrEmpty(mxfProgram.SeasonNumber)) { mxfProgram.Season = Common.mxf.With[0].getSeasonId(mxfProgram.episodeInfo.SeriesID, mxfProgram.SeasonNumber); } } // handle movie specific info else { // grab the movie poster var icon = program.Icons.Where(arg => arg.src.Contains("/posters/")).SingleOrDefault(); if (icon != null) { mxfProgram.GuideImage = Common.mxf.With[0].getGuideImage(icon.src).Id; } else if (program.Icons.Count > 0) { mxfProgram.GuideImage = Common.mxf.With[0].getGuideImage(program.Icons[0].src).Id; } // get the star ratings if (program.StarRating.Count > 0) { mxfProgram.HalfStars = GetStarRating(program.StarRating); } else if (program.Descriptions.Count > 0) { Match m = Regex.Match(program.Descriptions[0].Text, @"\d\.\d/\d\.\d"); if (m != null) { string[] nums = m.Value.Split('/'); if (nums.Length == 2) { if (double.TryParse(nums[0], out double numerator) && double.TryParse(nums[1], out double denominator)) { int halfstars = (int)((numerator / denominator) * 8); mxfProgram.HalfStars = halfstars.ToString(); mxfProgram.Description = mxfProgram.Description.Replace(string.Format(" ({0})", m.Value), ""); } } } } // handle movie ratings and advisories GetUsMovieRatings(program.Rating, mxfProgram); } // handle cast and crew if (program.Credits != null) { foreach (string person in program.Credits.Directors) { mxfProgram.DirectorRole.Add(new MxfPersonRank() { Person = Common.mxf.With[0].getPersonId(person), }); } foreach (XmltvActor person in program.Credits.Actors) { mxfProgram.ActorRole.Add(new MxfPersonRank() { Person = Common.mxf.With[0].getPersonId(person.Actor), Character = person.Role, }); } foreach (string person in program.Credits.Writers) { mxfProgram.WriterRole.Add(new MxfPersonRank() { Person = Common.mxf.With[0].getPersonId(person), }); } foreach (string person in program.Credits.Adapters) { mxfProgram.WriterRole.Add(new MxfPersonRank() { Person = Common.mxf.With[0].getPersonId(person), }); } foreach (string person in program.Credits.Producers) { mxfProgram.ProducerRole.Add(new MxfPersonRank() { Person = Common.mxf.With[0].getPersonId(person), }); } foreach (string person in program.Credits.Composers) { mxfProgram.ProducerRole.Add(new MxfPersonRank() { Person = Common.mxf.With[0].getPersonId(person), }); } foreach (string person in program.Credits.Editors) { mxfProgram.HostRole.Add(new MxfPersonRank() { Person = Common.mxf.With[0].getPersonId(person), }); } foreach (string person in program.Credits.Presenters) { mxfProgram.HostRole.Add(new MxfPersonRank() { Person = Common.mxf.With[0].getPersonId(person), }); } foreach (string person in program.Credits.Commentators) { mxfProgram.HostRole.Add(new MxfPersonRank() { Person = Common.mxf.With[0].getPersonId(person), }); } foreach (string person in program.Credits.Guests) { mxfProgram.GuestActorRole.Add(new MxfPersonRank() { Person = Common.mxf.With[0].getPersonId(person), }); } } return(true); }
private static void BuildProgram(string id, HDHRProgram program) { MxfProgram mxfProgram = Common.mxf.With[0].getProgram(id); if (!string.IsNullOrEmpty(mxfProgram.Title)) { return; } mxfProgram.Title = program.Title; mxfProgram.EpisodeTitle = program.EpisodeTitle; mxfProgram.Description = program.Synopsis; mxfProgram.IsAction = Common.ListContains(program.Filters, "Action"); mxfProgram.IsComedy = Common.ListContains(program.Filters, "Comedy"); mxfProgram.IsDocumentary = Common.ListContains(program.Filters, "Documentary"); mxfProgram.IsDrama = Common.ListContains(program.Filters, "Drama"); mxfProgram.IsEducational = Common.ListContains(program.Filters, "Educational"); mxfProgram.IsHorror = Common.ListContains(program.Filters, "Horror"); //mxfProgram.IsIndy = null; mxfProgram.IsKids = Common.ListContains(program.Filters, "Children") ?? Common.ListContains(program.Filters, "Kids") ?? Common.ListContains(program.Filters, "Family"); mxfProgram.IsMusic = Common.ListContains(program.Filters, "Music"); mxfProgram.IsNews = Common.ListContains(program.Filters, "News"); mxfProgram.IsReality = Common.ListContains(program.Filters, "Reality"); mxfProgram.IsRomance = Common.ListContains(program.Filters, "Romance"); mxfProgram.IsScienceFiction = Common.ListContains(program.Filters, "Science Fiction"); mxfProgram.IsSoap = Common.ListContains(program.Filters, "Soap"); mxfProgram.IsThriller = Common.ListContains(program.Filters, "Suspense") ?? Common.ListContains(program.Filters, "Thriller"); //mxfProgram.IsPremiere = ; //mxfProgram.IsSeasonFinale = ; //mxfProgram.IsSeasonPremiere = ; //mxfProgram.IsSeriesFinale = ; //mxfProgram.IsSeriesPremiere = ; //mxfProgram.IsLimitedSeries = null; mxfProgram.IsMiniseries = Common.ListContains(program.Filters, "Miniseries"); mxfProgram.IsMovie = program.SeriesID.StartsWith("MV") ? "true" : Common.ListContains(program.Filters, "Movie"); mxfProgram.IsPaidProgramming = Common.ListContains(program.Filters, "Paid Programming") ?? Common.ListContains(program.Filters, "Shopping") ?? Common.ListContains(program.Filters, "Consumer"); //mxfProgram.IsProgramEpisodic = null; //mxfProgram.IsSerial = null; mxfProgram.IsSeries = Common.ListContains(program.Filters, "Series") ?? Common.ListContains(program.Filters, "Sports non-event"); mxfProgram.IsShortFilm = Common.ListContains(program.Filters, "Short Film"); mxfProgram.IsSpecial = Common.ListContains(program.Filters, "Special"); mxfProgram.IsSports = Common.ListContains(program.Filters, "Sports event") ?? Common.ListContains(program.Filters, "Sports", true); if (string.IsNullOrEmpty(mxfProgram.IsSeries + mxfProgram.IsMiniseries + mxfProgram.IsMovie + mxfProgram.IsPaidProgramming + mxfProgram.IsShortFilm + mxfProgram.IsSpecial + mxfProgram.IsSports)) { mxfProgram.IsSeries = "true"; } // determine keywords Common.determineProgramKeywords(ref mxfProgram, program.Filters); if (!program.SeriesID.StartsWith("MV")) { // write the language mxfProgram.Language = program.SeriesID.Substring(program.SeriesID.Length - 6, 2).ToLower(); // add the series MxfSeriesInfo mxfSeriesInfo = Common.mxf.With[0].getSeriesInfo(program.SeriesID); mxfSeriesInfo.Title = program.Title; mxfProgram.Series = mxfSeriesInfo.Id; // add the image if (!string.IsNullOrEmpty(program.ImageURL)) { mxfSeriesInfo.GuideImage = Common.mxf.With[0].getGuideImage(program.ImageURL).Id; } // handle any season and episode numbers along with season entries if (!string.IsNullOrEmpty(program.EpisodeNumber)) { string[] se = program.EpisodeNumber.Substring(1).Split('E'); mxfProgram.SeasonNumber = int.Parse(se[0]).ToString(); mxfProgram.EpisodeNumber = int.Parse(se[1]).ToString(); mxfProgram.Season = Common.mxf.With[0].getSeasonId(program.SeriesID, mxfProgram.SeasonNumber); } else if (string.IsNullOrEmpty(mxfProgram.EpisodeTitle)) { mxfProgram.IsGeneric = "true"; } if (string.IsNullOrEmpty(mxfProgram.IsGeneric)) { mxfProgram.OriginalAirdate = program.OriginalAirDateTime.ToString("yyyy-MM-dd"); } } else { if (!string.IsNullOrEmpty(program.PosterURL)) { mxfProgram.GuideImage = Common.mxf.With[0].getGuideImage(program.PosterURL).Id; } if (!string.IsNullOrEmpty(program.Synopsis)) { Match m = Regex.Match(program.Synopsis, @"\d\.\d/\d\.\d"); if (m != null) { string[] nums = m.Value.Split('/'); if (double.TryParse(nums[0], out double numerator) && double.TryParse(nums[1], out double denominator)) { int halfstars = (int)((numerator / denominator) * 8); mxfProgram.HalfStars = halfstars.ToString(); mxfProgram.Description = mxfProgram.Description.Replace(string.Format(" ({0})", m.Value), ""); } } } } }