Beispiel #1
0
    static InstagramImage[] GetLatestImages(string userid, int count)
    {
        var url    = $"https://www.instagram.com/{userid}/media/";
        var images = new InstagramImage[count];
        var json   = GetJson(url);

        if (json == null)
        {
            return(images);
        }

        for (var i = 0; i < count; i++)
        {
            images[i] = GetImage(ref json, i) ?? default(InstagramImage);
        }

        return(images);
    }
        public static InstagramImage[] GetInstagramFeed()
        {
            //declare the variables we need to get this Instagram feed working.
            List<InstagramImage> feed = new List<InstagramImage>();
            HttpWebRequest request = null;
            Stream responseStream = null;
            String nextPageUrl = null;
            JToken pagination = null;
            JToken token = null;

            do
            {
                //see if we already have a "nextPageUrl" from Instragram's API
                if (string.IsNullOrEmpty(nextPageUrl))
                    request = (HttpWebRequest)HttpWebRequest.Create("https://api.instagram.com/v1/users/188067182/media/recent?count=33&access_token=" + ConfigurationManager.AppSettings["instagramAccessToken"]);
                else
                    request = (HttpWebRequest)HttpWebRequest.Create(nextPageUrl);

                //get Instagram's response to our request
                responseStream = request.GetResponse().GetResponseStream();
                Encoding encode = System.Text.Encoding.Default;

                using (StreamReader reader = new StreamReader(responseStream, encode))
                {
                    token = JObject.Parse(reader.ReadToEnd());
                    pagination = token.SelectToken("pagination");

                    //get the URL for our next request, for the next set of images!
                    if (pagination != null && pagination.SelectToken("next_url") != null)
                    {
                        nextPageUrl = pagination.SelectToken("next_url").ToString();
                    }
                    else
                    {
                        nextPageUrl = null; //no more images, we got them all already! well done, bravo!
                    }

                    //get JSON results from the response and parse them
                    dynamic results = Newtonsoft.Json.JsonConvert.DeserializeObject(token.ToString());

                    //iterate through the results and aggregate them to our feed object
                    foreach (var data in results.data)
                    {
                        InstagramImage image = new InstagramImage();

                        try
                        {
                            image.Caption = data.caption.text;
                            image.URL = data.images.thumbnail.url;
                            image.Tags = data.tags ?? null;
                            image.Link = data.link;
                            image.isPublic = true;

                            //Debug.WriteLine("Tags found: " + image.Tags.Count.ToString());

                            //inspect the Instagram image tags
                            foreach (String tag in image.Tags)
                            {
                                //filter out "beer" pictures
                                if (tag.Equals("beer") || tag.Equals("sourbeer"))
                                {
                                    image.isPublic = false;
                                }
                            }

                            //add the Instagram image to the output feed
                            if (image.isPublic)
                            {
                                feed.Add(image);
                            }
                        }
                        catch
                        {
                            image.Caption = String.Empty;
                            image.URL = String.Empty;
                            image.Tags = null;
                            image.isPublic = false;
                        }

                    }
                }
            }
            while (!String.IsNullOrEmpty(nextPageUrl));

            return feed.ToArray();
        }