Exemplo n.º 1
0
        private List <SimpleMedia> ExtractSimpleMedia(Media instagramResults, bool isStory)
        {
            List <SimpleMedia> mediaModels = new List <SimpleMedia>();

            //map from the JSON/DTO returned by DoMediaSearch() to the Domain Entities

            foreach (MediaData mediaData in instagramResults.data)
            {
                InstagramInsight insight = GetMediaImpressionsInsight(mediaData.id, isStory);

                mediaModels.Add(
                    new SimpleMedia
                {
                    id               = mediaData.id,
                    like_count       = mediaData.like_count,
                    comments_count   = mediaData.comments_count,
                    impression_count = insight.data.Find(i => i.name == "impressions").values[0].value,
                    engagement_count = insight.data.Find(i => i.name == "engagement") == null ? 0 : insight.data.Find(i => i.name == "engagement").values[0].value,
                    reach_count      = insight.data.Find(i => i.name == "reach").values[0].value,
                    media_url        = mediaData.media_url,
                    permalink        = mediaData.permalink,
                    //Comments = GetMediaCommentsEntities(mediaData.id),
                    timestamp = mediaData.timestamp
                });
            }

            return(mediaModels);
        }
Exemplo n.º 2
0
        private SimpleMedia GetInsight(string id, bool isStory)
        {
            //url for one media
            string mediaUrl =
                $"{_fbGraphApiBaseUrl}/{id}?access_token={_accessToken}&fields=media_url%2Cmedia_type%2Ccomments_count%2Clike_count%2Ctimestamp%2Cpermalink%2Ccaption";
            //invoke the request
            string jsonResult = this.GetGraphApiUrl(mediaUrl);
            // convert to json annotated object
            MediaData mediaData = JsonConvert.DeserializeObject <MediaData>(jsonResult);

            InstagramInsight insight = GetMediaImpressionsInsight(mediaData.id, isStory);

            var engagementValue  = insight.data.FirstOrDefault(i => i.name == "engagement");
            var impressionsValue = insight.data.FirstOrDefault(i => i.name == "impressions");
            var reachValue       = insight.data.FirstOrDefault(i => i.name == "reach");

            return
                (new SimpleMedia
            {
                id = mediaData.id,
                like_count = mediaData.like_count,
                comments_count = mediaData.comments_count,
                impression_count = impressionsValue?.values[0].value ?? -1,
                engagement_count = engagementValue?.values[0].value ?? -1,
                reach_count = reachValue?.values[0].value ?? -1,
                media_url = mediaData.media_url,
                permalink = mediaData.permalink,
                //Comments = GetMediaCommentsEntities(mediaData.id),
                timestamp = mediaData.timestamp
            });
        }
        private DTO.InstagramInsight GetMediaImpressionsInsight(MediaData mediaData)
        {
            string impressionsUrl = "https://graph.facebook.com/v3.2/" + mediaData.id + "/insights/?metric=impressions&access_token=" + _token;

            InstagramInsight instagramInsight = new InstagramInsight();

            string jsonResult = this.Get(impressionsUrl);

            instagramInsight = JsonConvert.DeserializeObject <InstagramInsight>(jsonResult);

            return(instagramInsight);
        }
 private int GetMediaImpressionValue(InstagramInsight insight)
 {
     return(insight.data.Find(i => i.name == _impressionInsightDescription).values[0].value);
 }