使用Instagram

时间:2015-04-23 09:14:51

标签: c# instagram

我有这个代码从Instagram加载图像。

public string giveInstagramImage()
    {
        string strtagName = "Snowy";
        string strAccessToken = "<<REDACTED>>";
        string nextPageUrl = null;
        string imageUrl = null;
        do
        {
            WebRequest webRequest = null;
            if (webRequest == null && string.IsNullOrEmpty(nextPageUrl))
                webRequest = HttpWebRequest.Create(String.Format("https://api.instagram.com/v1/tags/{0}/media/recent?access_token={1}", strtagName, strAccessToken));
            else
                webRequest = HttpWebRequest.Create(nextPageUrl);

            var responseStream = webRequest.GetResponse().GetResponseStream();
            Encoding encode = System.Text.Encoding.Default;
            using (StreamReader reader = new StreamReader(responseStream, encode))
            {
                JToken token = JObject.Parse(reader.ReadToEnd());
                var pagination = token.SelectToken("pagination");
                if (pagination != null && pagination.SelectToken("next_url") != null)
                {
                    nextPageUrl = pagination.SelectToken("next_url").ToString();
                }
                else
                {
                    nextPageUrl = null;
                }
                var images = token.SelectToken("data").ToArray();
                foreach (var image in images)
                {
                    imageUrl = image.SelectToken("images").SelectToken("standard_resolution").SelectToken("url").ToString();
                    if (String.IsNullOrEmpty(imageUrl))
                        Console.WriteLine("broken image URL");

                    var imageResponse = HttpWebRequest.Create(imageUrl).GetResponse().GetResponseStream();

                    var imageId = image.SelectToken("id");
                    return imageUrl;
                }
            }
        }
        while (!String.IsNullOrEmpty(nextPageUrl));
        return imageUrl;
    }

目前Instagram API为我提供了前20个图片。我需要做的是加载过去30天内的所有图像。

我们怎么做?

1 个答案:

答案 0 :(得分:1)

Tag Endpoint接受count参数。如果您将count参数设置为大于33,则每次调用时都会返回33张图片,并使用分页继续获取其余图片。

webRequest = HttpWebRequest.Create(String.Format("https://api.instagram.com/v1/tags/{0}/media/recent?access_token={1}&count=100000", strtagName, strAccessToken));

要加载过去30天内的所有图片,请将count设置为一个非常高的值,并检查每张图片的created_time属性,以便停在任何您喜欢的位置。

var imageCreatedTime = image.SelectToken("created_time");