从 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");
我有这段代码可以从 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");