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;
        }
Exemple #2
0
        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);
        }