Поиск в Твиттере в user_timeline.json

Я использую jQuery для получения твитов в формате .json. Одна часть моего приложения требует старых твитов, а поиск в твиттере возвращает твиты только за последние 6 дней. Эти старые твиты должны содержать определенный хэштег. Я знаю, что метод API user_timeline может возвращать 3200 твитов, но я не могу понять, как получить 3200 твитов, просмотреть их и найти нужные мне твиты. Вот что у меня есть на данный момент:

function TwitterAPI(){}
TwitterAPI.Statuses = function Statuses(){}

TwitterAPI.Statuses.hashed = function(username, hashtag, count, to, callback){
   requestURL = "http://search.twitter.com/search.json?q=%23" + hashtag + "&rpp=" + count + "&from=" + username + "&to=" + to + "&callback=?";
   //requestURL =  "http://otter.topsy.com/search.json?q=from:" + username + "+" + hashtag + "&perpage=1"
   $.getJSON(requestURL, callback);
  } 

var user_info = ["name", "birthday", "hobby", "homepage"];  
  $("#info ul li.userinfo").append('<img src="images/lilspinner.gif" />');
  $.each(user_info, function() {
   var hashtag = this;
   TwitterAPI.Statuses.hashed("<%= @profile.name %>", hashtag, 1, "twisnt", function(json, status){
    var content = "";
    $.each(json.results, function(i, info){ 
     text = info.text.replace( /(\#)\w+\b/,"").replace( /(\@)\w+\b/,"");
     if (hashtag == "homepage") {
      content = "<a style='display:none' href='"+text+"'>"+text+"</a>"; 
     }
     else {
      content = "<span style='display:none'>"+text+"</span>"; 
     }          
    });  
    $("li#" + hashtag).append(content);
    $("li#" + hashtag + " img").remove();
    $("li#" + hashtag + " *").fadeIn("slow");
   })
});

Он делает все, что мне нужно, но только тогда, когда нужные сообщения были опубликованы в Твиттере за последние 6 дней.


person Kirill Shirinkin    schedule 02.01.2011    source источник


Ответы (1)


Согласно API Twitter, вы можете получить только 100 результатов за раз. Используйте элемент поиска rpp, чтобы запросить 100 и начать на странице 1. Затем вы можете прокручивать страницы, получая 100 элементов за раз. Сделайте это 15 раз, чтобы получить 1500 предметов. Причина этого в том, что твиттер позволяет вам получить только последние 15 страниц с максимальным количеством элементов 1500.

Пример:

var maxRpp = 100;

var i; //pages
for (i = 1;i <= 15; i++) {
     $.getJSON('http://search.twitter.com/search.json?q=pants&result_type=recent&page=' + i + '&rpp=' + maxRpp + '&callback=?',function(data){
          //do thing  
     });    
};

Источник: API Twitter

person MrCrapper    schedule 23.01.2011