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); }
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); }