private void DataToControls(ALotOrALittle data) { switch (data.Category) { case ALotOrAlittleElements.EducationalValue: lbSectionTitle.Text = "Educational Value"; pbCategory.Image = Properties.Resources.educational_value; break; case ALotOrAlittleElements.PositiveMessages: lbSectionTitle.Text = "Positive Messages"; pbCategory.Image = Properties.Resources.positive_messages; break; case ALotOrAlittleElements.PositiveRoleModelsAndRepresentations: lbSectionTitle.Text = "Positive Role Models && Representations"; pbCategory.Image = Properties.Resources.positive_role_models; break; case ALotOrAlittleElements.ViolenceAndScariness: lbSectionTitle.Text = "Violence && Scariness"; pbCategory.Image = Properties.Resources.violence; break; case ALotOrAlittleElements.SexyStuff: lbSectionTitle.Text = "Sexy Stuff"; pbCategory.Image = Properties.Resources.sexy_stuff; break; case ALotOrAlittleElements.Language: lbSectionTitle.Text = "Language"; pbCategory.Image = Properties.Resources.language; break; case ALotOrAlittleElements.Consumerism: lbSectionTitle.Text = "Consumerism"; pbCategory.Image = Properties.Resources.consumerism; break; case ALotOrAlittleElements.DrinkingDrugsAndSmoking: lbSectionTitle.Text = "Drinking, Drugs && Smoking"; pbCategory.Image = Properties.Resources.drinking_druge_smoking; break; } if (data.Rating > 0) { pbRating.Visible = true; GraphicsHelpers.DrawRating(data.Rating, pbRating, new Font("Microsoft Sans Serif", 20, FontStyle.Regular), "●"); } lbExplanation.Text = data.Description; }
public static OperationResult GetCommonSenseMediaData(string recommendedLink) { var result = new OperationResult(); CSMScrapeResult csmData = null; using (var client = new HttpClient()) { try { //the implementation if forced to run synchronous to avoid ip banning from scrapped sites var request = client.GetAsync(recommendedLink).Result; request.EnsureSuccessStatusCode(); if (request.Content == null) { result.FailWithMessage("No content"); } var response = request.Content.ReadAsStreamAsync().Result; if (response == null || response.Length == 0) { return(result.FailWithMessage("Invalid response!")); } csmData = new CSMScrapeResult(); var parser = new HtmlParser(); var document = parser.ParseDocument(response); var expandableSinopsis = document.GetElementsByClassName("field-name-field-review-recommended-age"); var greenAge = document.GetElementsByClassName("csm-green-age").FirstOrDefault(); csmData.GreenAge = greenAge == null ? null : greenAge.TextContent; var csmRatingL0 = document.GetElementsByClassName("field-name-field-stars-rating").FirstOrDefault(); if (csmRatingL0 != null) { var csmRatingLx = csmRatingL0.QuerySelectorAll("div.field_stars_rating").FirstOrDefault(); if (csmRatingLx != null) { var ratingClass = csmRatingLx.ClassList.FirstOrDefault(_ => _.StartsWith("rating-")); if (ratingClass != null) { if (int.TryParse(ratingClass.Replace("rating-", ""), out int ratingInt)) { csmData.Rating = ratingInt; } } var shortDescriptionObj = csmRatingL0.QuerySelectorAll("meta[property=\"description\"]").FirstOrDefault(); if (shortDescriptionObj != null) { var metaElement = (AngleSharp.Html.Dom.IHtmlMetaElement)shortDescriptionObj; csmData.ShortDescription = metaElement.Content; } var reviewObj = csmRatingL0.QuerySelectorAll("meta[property=\"reviewBody\"]").FirstOrDefault(); if (reviewObj != null) { var metaElement = (AngleSharp.Html.Dom.IHtmlMetaElement)reviewObj; var rx = new System.Text.RegularExpressions.Regex("<[^>]*>"); csmData.Review = rx.Replace(metaElement.Content, ""); } } } var statisticsAdult = document.GetElementsByClassName("user-review-statistics adult").FirstOrDefault(); if (statisticsAdult != null) { var adultAge = statisticsAdult.GetElementsByClassName("stat-wrapper age").FirstOrDefault(); csmData.AdultRecomendedAge = adultAge == null ? null : adultAge.TextContent; var adultRating = statisticsAdult.GetElementsByClassName("field-stars-rating").FirstOrDefault(); if (adultRating != null) { var ratingClass = adultRating.ClassList.FirstOrDefault(_ => _.StartsWith("rating-")); //result.AdultRating = ratingClass.Replace("rating-", ""); if (int.TryParse(ratingClass.Replace("rating-", ""), out int ratingInt)) { csmData.AdultRating = ratingInt; } } } var statisticsChild = document.GetElementsByClassName("user-review-statistics child").FirstOrDefault(); if (statisticsChild != null) { var childAge = statisticsChild.GetElementsByClassName("stat-wrapper age").FirstOrDefault(); csmData.ChildRecomendedAge = childAge == null ? null : childAge.TextContent; var childRating = statisticsChild.GetElementsByClassName("field-stars-rating").FirstOrDefault(); if (childRating != null) { var ratingClass = childRating.ClassList.FirstOrDefault(_ => _.StartsWith("rating-")); //result.ChildRating = ratingClass.Replace("rating-", ""); if (int.TryParse(ratingClass.Replace("rating-", ""), out int ratingInt)) { csmData.ChildRating = ratingInt; } } } var storyParent = document.GetElementsByClassName("pane-node-field-what-is-story").FirstOrDefault(); if (storyParent != null) { var storyEl = storyParent.QuerySelectorAll("p").FirstOrDefault(); csmData.Story = storyEl == null ? null : storyEl.TextContent; } var isItAnyGoodParent = document.GetElementsByClassName("pane-node-field-any-good").FirstOrDefault(); if (isItAnyGoodParent != null) { var isItAnyGoodEl = isItAnyGoodParent.QuerySelectorAll("p").FirstOrDefault(); csmData.IsItAnyGood = isItAnyGoodEl == null ? null : isItAnyGoodEl.TextContent; } var talkWithKidsAboutParent = document.GetElementsByClassName("pane-node-field-family-topics").FirstOrDefault(); if (talkWithKidsAboutParent != null) { var talkWithKidsAboutEl = talkWithKidsAboutParent.QuerySelectorAll("p"); if (talkWithKidsAboutEl.Any()) { csmData.TalkWithKidsAbout = new List <string>(); foreach (var item in talkWithKidsAboutEl) { csmData.TalkWithKidsAbout.Add(item.TextContent); } } } ALotOrALittle tmp = null; tmp = Get_ALotOrALittle(document, "content-grid-item-educational", ALotOrAlittleElements.EducationalValue); if (tmp != null) { csmData.ALotOrALittle.Add(tmp); } tmp = Get_ALotOrALittle(document, "content-grid-item-message", ALotOrAlittleElements.PositiveMessages); if (tmp != null) { csmData.ALotOrALittle.Add(tmp); } tmp = Get_ALotOrALittle(document, "content-grid-item-role_model", ALotOrAlittleElements.PositiveRoleModelsAndRepresentations); if (tmp != null) { csmData.ALotOrALittle.Add(tmp); } tmp = Get_ALotOrALittle(document, "content-grid-item-violence", ALotOrAlittleElements.ViolenceAndScariness); if (tmp != null) { csmData.ALotOrALittle.Add(tmp); } tmp = Get_ALotOrALittle(document, "content-grid-item-sex", ALotOrAlittleElements.SexyStuff); if (tmp != null) { csmData.ALotOrALittle.Add(tmp); } tmp = Get_ALotOrALittle(document, "content-grid-item-language", ALotOrAlittleElements.Language); if (tmp != null) { csmData.ALotOrALittle.Add(tmp); } tmp = Get_ALotOrALittle(document, "content-grid-item-consumerism", ALotOrAlittleElements.Consumerism); if (tmp != null) { csmData.ALotOrALittle.Add(tmp); } tmp = Get_ALotOrALittle(document, "content-grid-item-drugs", ALotOrAlittleElements.DrinkingDrugsAndSmoking); if (tmp != null) { csmData.ALotOrALittle.Add(tmp); } } catch (Exception ex) { return(result.FailWithMessage(ex)); } } result.AdditionalDataReturn = csmData; return(result); ALotOrALittle Get_ALotOrALittle(IHtmlDocument document, string elementId, ALotOrAlittleElements category) { ALotOrALittle result2 = null; var parentElement = document.GetElementById(elementId); if (parentElement != null) { var stars = 0; var description = string.Empty; var ratingEl = parentElement.QuerySelectorAll("div.field_content_grid_rating").FirstOrDefault(); if (ratingEl != null) { var ratingClass = ratingEl.ClassList.FirstOrDefault(_ => _.StartsWith("content-grid-") && char.IsDigit(_[_.Length - 1])); //stars = ratingClass.Replace("content-grid-", ""); if (int.TryParse(ratingClass.Replace("content-grid-", ""), out int ratingInt)) { stars = ratingInt; } } var ratingDescEl = parentElement.QuerySelectorAll("div.field-name-field-content-grid-rating-text").FirstOrDefault(); if (ratingDescEl != null) { var ratingDescEl2 = ratingDescEl.QuerySelectorAll("p").FirstOrDefault(); if (ratingDescEl2 != null) { description = ratingDescEl2.TextContent; } } result2 = new ALotOrALittle() { Rating = stars, Description = description, Category = category }; } return(result2); } }
public FrmALotOrALittle_Explanation(ALotOrALittle data) { InitializeComponent(); DataToControls(data); }