从 Instagram 加载带有日期标准的图像

Load images with date criteria from 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 天的所有图像。

我们该怎么做?

Tag Endpoint 接受一个 count 参数。如果您将 count 参数设置为大于 33,则每次调用都会 return 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");