我有这个代码从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天内的所有图像。
我们怎么做?
答案 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");