在网页上显示Twitter流?

时间:2009-10-04 16:16:26

标签: twitter

我想在我的网站上显示用户的推特供稿。最简单的方法是什么?我猜Javascript。我特别想要的是最后5条推文加载&然后,当另一条推文发出时,它会自动出现在推文的顶部。它需要覆盖几乎整个网站,除了标题和&页脚。有任何建议/代码吗?

干杯,非常感谢!

4 个答案:

答案 0 :(得分:4)

在不刷新的情况下加载新数据需要是AJAX。要获取数据,请查看Twitter API http://apiwiki.twitter.com/。 API将允许您以选择的格式(xml,json,ect ...)获取数据,然后您可以解析并将数据或HTML返回到提交AJAX调用的页面。这应该会让你朝着正确的方向前进。

答案 1 :(得分:2)

最简单的方法是添加Twitter小部件:http://twitter.com/goodies/widget_profile并自动更新新推文(我认为使用AJAX)。您也可以设置尺寸。

答案 2 :(得分:0)

使用任何twitter包装器calss,例如此http://emmense.com/php-twitter/来获取状态并显示它。在函数内部使用javascript时间函数对php脚本进行ajax调用,并在容器上添加最新的推文。

你可以使用jquery进行dom更新

  

$('#dividhere')。prepend('

Bla bla bla');

答案 3 :(得分:0)

使用jQuery,sry用于我的编程语言,但我喜欢我们的捷克语

  <script type="text/javascript">
   jQuery(document).ready(function($){
    $.getJSON('http://api.twitter.com/1/statuses/user_timeline/##USERNAME##.json?count=2&callback=?', function(zpravicky){
     $("#twitter").html(formatujExtSocialniProfil(zpravicky));
      });
        });
   </script>

在像这样的外部javascript文件代码中

   function formatujExtSocialniProfil(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><span>'+status+'</span> <br/><b><a href="http://twitter.com/'+username+'/statuses/'+twitters[i].id_str+'">'+relative_time(twitters[i].created_at)+'</a></b></li>');
      }
      return statusHTML.join('');
    }

    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);

      if (delta < 60) {
        return 'seconds ago';
      } else if(delta < 120) {
        return 'minute ago';
      } else if(delta < (60*60)) {
        return (parseInt(delta / 60)).toString() + ' minutes';
      } else if(delta < (120*60)) {
        return 'hours ago';
      } else if(delta < (24*60*60)) {
        return 'ago ' + (parseInt(delta / 3600)).toString() + ' hours';
      } else if(delta < (48*60*60)) {
        return 'yesterday';
      } else {
        return 'since ago' + (parseInt(delta / 86400)).toString() + ' days';
      }
    }