0

我在网站上有一个 PHP 脚本,它可以提取 Twitter 提要并显示它。奇怪的是,大多数时候它似乎工作得很好,但有时(实际上很多)它根本不起作用,只是显示跟随按钮。

代码如下,明显USERNAME有实际的twitter账号用户名在:

$widget = true;
$twitterid = "@USERNAME";

$doc = new DOMDocument();

# load the RSS document, edit this line to include your username or user id
if($doc->load('http://twitter.com/statuses/user_timeline/USERNAME.rss')) {

    # specify the number of tweets to display, max is 20
    $max_tweets = 4;    

    $i = 1;
    foreach ($doc->getElementsByTagName('item') as $node) {
        # fetch the title from the RSS feed. 
        # Note: 'pubDate' and 'link' are also useful (I use them in the sidebar of this blog)
        $tweet = $node->getElementsByTagName('title')->item(0)->nodeValue;

        # the title of each tweet starts with "username: " which I want to remove
        $tweet = substr($tweet, stripos($tweet, ':') + 1);   

        # OPTIONAL: turn URLs into links
        $tweet = preg_replace('@(https?://([-\w\.]+)+(:\d+)?(/([\w/_\.]*(\?\S+)?)?)?)@', '<a href="$1">$1</a>', $tweet);

        # OPTIONAL: turn @replies into links
        $tweet = preg_replace("/@([0-9a-zA-Z]+)/", "<a href=\"http://twitter.com/$1\">@$1</a>", $tweet);

        echo "<p> <p>".$tweet."</p></p><hr />\n";

        if ($i++ >= $max_tweets)
            break;
    }
    echo "</ul>\n";
} 

// Here's the Twitter Follow Button Widget
if($widget){
    echo "<a href=\"https://twitter.com/" .$twitterid. "\" class=\"twitter-follow-button\" data-show-count=\"true\">Follow @" .$twitterid. "</a><script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=\"//platform.twitter.com/widgets.js\";fjs.parentNode.insertBefore(js,fjs);}}(document,\"script\",\"twitter-wjs\");</script>";
}
4

3 回答 3

0

遗憾的是,Twitter 已经删除了 URL https://twitter.com/statuses/user_timeline/USERNAME.rss,它现在返回对不起,该页面在 2012 年 10 月 12 日不存在。有一个 json 等价物,但是这也可能在之后失败2013 年 3 月。暂时尝试https://api.twitter.com/1/statuses/user_timeline.json?screen_name=USERNAME&count=4 。

高温高压

于 2012-10-13T11:58:58.250 回答
0

Twitter 对未经身份验证的调用(对未使用 OAuth 进行身份验证的 API 进行的调用)实施速率限制。

“未经身份验证的呼叫每小时允许 150 个请求。未经身份验证的呼叫是根据发出请求的服务器或设备的面向公众的 IP 来衡量的。”

如果您使用的是共享主机,则您更有可能受到速率限制,因为在主机上使用相同 IP 的其他人也可能会查询 Twitter API(因此,计入该 IP 的每小时限制)。

您可以在Twitter 的速率限制限制网站以及速率限制常见问题解答网站上阅读有关这些限制的更多信息。

于 2012-10-12T16:49:10.637 回答
0
<?php

$timeline="http://api.twitter.com/1/statuses/user_timeline.xml?screen_name=arvizard";
$xml= new SimpleXMLElement(file_get_contents($timeline));
$i=0;
print "<ul class=\"tweet_list\">";
foreach($xml ->children() as $tstatus)
    {
        $stat=$tstatus->text;
        $split= preg_split('/\s/',$stat);
        print "<li class=\"tweet\"><p class=\"tweet_text\">";
        foreach ($split as $word)
            {

                if (preg_match('/^@/',$word)) {
                               print " "."<a href=http://www.twitter.com/".substr($word,1).">".$word."</a>";
                               }
                               else if (preg_match('/^http:\/\//',$word)){
                                     print " "."<a href=".$word.">".$word."</a>";
                               }
                               else
                                   {
                                   print " ".$word;
                               }


            }
print "</p>";
print "<span class=\"date\">".substr($tstatus->created_at,0,strlen($tstatus->created_at)-14)."</span>";
print "</li>";
$i++;
if ($i==5)
    {

        break;
    }
    }
print "</ul>";
?>

这可能会对您有所帮助。请检查一下。

于 2013-03-02T07:04:07.610 回答