2015-04-23 2 views
0

У меня есть этот код, который загружает изображения с 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; 
    } 

В настоящее время API Instagram предоставляет мне 20 лучших изображений. Мне нужно загрузить все изображения за последние 30 дней.

Как мы можем это сделать?

ответ

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"); 
+0

Я получаю время в другом формате. Как получить его в формате datetime? – Happy

+0

Чтобы преобразовать его в datetime: http://stackoverflow.com/questions/249760/how-to-convert-unix-timestamp-to-datetime-and-vice-versa –

+0

, так это восстановление instagram в unixtimestamp? не понял, какой пример использовать – Happy

Смежные вопросы