Twitter小工具 - 仅发布不到两天的推文

时间:2010-07-11 18:17:14

标签: javascript twitter widget

我有这个Twitter小部件工作得很好(并且很容易定制),但我有一个问题。我只想发布不到两天的推文,但我无法弄明白该怎么做。所以在HTML中,我有以下内容:

<ul id="twitter_update_list"></ul>

<script src="/assets/script_twitterwidget.js" type="text/javascript"></script>
<script src="http://twitter.com/statuses/user_timeline/YourTwitterProfile.json?callback=twitterCallback2&amp;count=1" type="text/javascript"></script>

然后js有:

function relative_time(time_value) {
 var values = time_value.split(" ");
 time_value = values[1] + " " + values[2] + ", " + values[5] + " " + values[3];
 var parsed_date = Date.parse(time_value);
 var relative_to = (arguments.length > 1) ? arguments[1] : new Date();
 var delta = parseInt((relative_to.getTime() - parsed_date) / 1000);
 delta = delta + (relative_to.getTimezoneOffset() * 60);
 return delta;
}

function absolute_time(created_at) { 
 var date = (created_at).substring(0,11);
 var year = (created_at).substring(26);
 var time = (created_at).substring(10,26);
 var full = date + year + time;
 var full = new Date(Date.parse(full)).toLocaleDateString();
 return full;
}

if (delta < (48*60*60)) {

function twitterCallback2(twitters) {
  var statusHTML = [];
  for (var i=0; i<twitters.length; i++){
    var username = twitters[i].user.screen_name;
    var status = twitters[i].text.replace(/((https?|s?ftp|ssh)\:\/\/[^"\s\<\>]*[^.,;'">\:\s\<\>\)\]\!])/g, function(url) {
      return '<a href="'+url+'">'+url+'</a>';
    }).replace(/\B@([_a-z0-9]+)/ig, function(reply) {
      return  reply.charAt(0)+'<a href="http://twitter.com/'+reply.substring(1)+'">'+reply.substring(1)+'</a>';
    });
    statusHTML.push('<li><a target="_blank" style="font-size:100%" href="http://twitter.com/'+username+'/statuses/'+twitters[i].id+'">'+absolute_time(twitters[i].created_at)+':'+'</a>'+' '+'<span>'+status+'</span></li>');
  }
  document.getElementById('twitter_update_list').innerHTML = statusHTML.join('');
  }

}

我添加了相对时间函数和if语句以尝试仅发布最近的推文(没有该代码它会很好,但显示最后的推文是什么,无论它多大了)。但是,它没有做到这一点。谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

上面的内容实际上非常接近,尽管我花了一整天的时间来弄明白。我只需要改写if语句并将其移到正确的位置。所以前两个函数都很好,但最后一个应该是:

function twitterCallback2(twitters) {
    var statusHTML = [];
    for (var i=0; i<twitters.length; i++) {
        if ((relative_time(twitters[i].created_at)) < (3*24*60*60)) {
            var username = twitters[i].user.screen_name;
            var status = twitters[i].text.replace(/((https?|s?ftp|ssh)\:\/\/[^"\s\<\>]*[^.,;'">\:\s\<\>\)\]\!])/g, function(url) {
                return '<a href="'+url+'">'+url+'</a>';
                }).replace(/\B@([_a-z0-9]+)/ig, function(reply) {
                return  reply.charAt(0)+'<a href="http://twitter.com/'+reply.substring(1)+'">'+reply.substring(1)+'</a>';
                });
                statusHTML.push('<li><a target="_blank" style="font-size:100%" href="http://twitter.com/'+username+'/statuses/'+twitters[i].id+'">'+absolute_time(twitters[i].created_at)+':'+'</a>'+' '+'<span>'+status+'</span></li>');
        }
    }
    document.getElementById('twitter_update_list').innerHTML = statusHTML.join('');
}

正如您所看到的,如果推文时间少于三天,它将发布到我网站上的小部件。