Поиск в Твиттере в user_timeline.json - PullRequest
0 голосов
/ 02 января 2011

Я использую jQuery для получения твитов в .json.Одна часть моего приложения требует старых твитов, а поиск в Твиттере возвращает твиты только за последние 6 дней.Это старые твиты должны содержать определенный хэштег.Я знаю, что метод user_timeline API может возвращать 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 дней,

1 Ответ

0 голосов
/ 23 января 2011

Согласно Twitter API вы можете получить только 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

...