1

我正在本地开发一个站点,该站点两次使用 Twitter Profile Widget,用于两个单独的 Twitter 提要。

我现在已经多次遇到速率限制(150 次呼叫/每小时),我一直在寻找管理这个的方法。

我发现的一种技术使用 Cron Jobs 调用 PHP 文件,该文件每 10 分钟缓存一次 Twitter API 调用,将其保存到服务器上的 txt 文件并使用 JQuery 对其进行解析。步骤 2,3,5.. http://net.tutsplus.com/tutorials/php/how-to-create-an-advanced-twitter-widget/

我的问题是.. 然后我将如何将 JSON 内容解析到我的 Twitter 个人资料小部件中?

我怀疑这可能是不可能的..

下面是用于显示 Twitter 提要的标准 Twitter Profile Widget 代码。

<script charset="utf-8" src="http://widgets.twimg.com/j/2/widget.js"></script>
            <script>
                new TWTR.Widget({version: 2, type: 'faves', rpp: 10, interval: 30000, title: ' ',subject: ' ', width: 210, height: 330,
                  theme: {
                    shell: {
                      background: ' ',
                      color: '#ffffff'
                    },
                    tweets: {
                      background: '#ffffff',
                      color: '#444444',
                      links: '#53cdc7'
                    }
                  },
                  features: {
                    scrollbar: true,
                    loop: false,
                    live: true,
                    behavior: 'all'
                  }
                }).render().setUser('diariesdownundr').start();

                new TWTR.Widget({version: 2,type: 'faves',rpp: 10,interval: 30000,title: ' ',subject: ' ',width: 210,height: 330,
                  theme: {
                    shell: {
                      background: ' ',
                      color: '#ffffff'
                    },
                    tweets: {
                      background: '#ffffff',
                      color: '#444444',
                      links: '#53cdc7'
                    }
                  },
                  features: {
                    scrollbar: true,
                    loop: false,
                    live: true,
                    behavior: 'all'
                  }
                }).render().setUser('diaries1').start();
            </script>
4

1 回答 1

2

这确实是可能的。从http://twitter.com/javascripts/widgets/widget.js获取未压缩的 widget.js ,并更改 var profileBase(大约第 884 行)以从您网站上的缓存文件而不是 api.twitter.com 中读取。加载新的 widjet.js,而不是现在从 widgets.twimg.com 加载的那个

至于要读取的实际“twitter 缓存”文件——使用 cronjob 确实是一种方法。当我这样做时,我使用 curl 向 api.twitter.com 发出与当前 widget.js 发出的完全相同的请求——如果我抓取了 widget.js 发出的请求的整个 URL 以及所有获取参数(例如,您可以在 Firebug 中看到这一点),将其扔给 curl(因此, curl_init($url) 和 curl_exec($url) ),并将 curl_exec 的输出写入缓存文件。

于 2012-07-24T03:03:14.720 回答