通过php拉取推文,通过JQuery / Ajax更新

时间:2011-02-21 20:49:27

标签: php jquery ajax twitter tweets

我目前有一个脚本可以从Twitter上提取推文(在搜索主题上,例如'awesome')并显示它们。该脚本显示最新的20条推文。

我想进一步开发我的脚本。我想查看在页面加载后是否有任何新推文被推文,如果有,然后显示它们,同时仍然只显示每页20(所以它们都向下移动)。

目前我所拥有的是:

<?php

function get_file($uri) {       
    return file_get_contents($uri);
};

$xml = get_file('http://search.twitter.com/search.atom?q=awesome%20-rt&lang=en&rpp=20');
$tweets = new simpleXMLElement($xml);
?>
<div id="entries">
    <?php
    foreach ($tweets->entry as $tweet) {    
        echo '<div class="entry">';
        echo '<img class="tweet-pic" src="'.$tweet->link[1]->attributes()->href.'" />';
        echo '<p class="tweet">'.$tweet->title.'</p>';
        echo '<p class="tweep"><a class="link" href="'.$tweet->link[0]->attributes()->href.'">'.$tweet->author->name.'</a></p>';
        echo '<div class="clear"></div>';
        echo '</div>';
        echo '<hr/>';
    }
    ?>  
</div>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js" language="javascript"></script>

<script>
$(document).ready(function(){
getlatest();
});
function getlatest() { 
$.ajax({
    type: "GET",
    url: "index.php",
    cache: false,
    success: function(html){
            $("div#entries").prepend(html);
            $(".entry").slideDown("1000");
        }
});

setTimeout("getlatest();",10000);
}
</script>

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

好吧,当你获得XML时,每个推文都有一个时间戳关联。从这里开始,在您的AJAX调用中(您可以使用setTimeout每隔X次运行一次),您可以比较列表中的第一条推文和XML中的第一条推文。

如果日期更近,您应该:

  • 查找下一条推文 第一。我的意思是,第一个来自 XML不一定是唯一的新东西 进入电话。
  • 从您刚刚找到的推文开始,获取所有新推文。
  • 将HTML替换为推文中的新HTML。