吐槽:因为一直都习惯retweet一些好黄好暴力的推,又不想手动同步到新浪,就折腾了一个下午,想用别人基于python实现的wet,苦于真正开发过,首先在gae那里上传,怎知道一句不支持os.makedirs
就把我弄到无语了,然后再折腾sae,申请了一个内测python账号,不过又返回500错误,应该也是由于gae同样的问题。几个小时就过去了,心想自己已经基于php用sina的openapi发过微博,再弄一个php定时获取twitter内容就行了,然后就决定还是自己写好了。
第一步:获取tweet
有两种方法,第一种是用官方的http://twitter.com/statuses/user/timeline/用户名.rss
源,然后用php编程获取想同步的内容。这种方法需要墙外的服务器,而且获取的信息量比较少;所以我才用了第二种方法,使用自己的API来获取,例如格式为http://你的API地址/statuses/user\_timeline.json?since\_id=155030004701405184
。这代表着获取id为155030004701405184之后你的tweet,而且格式为json。我的思路是记录tweet的id,因为不想用SQL来保存一个数字,就用一个TXT文本保存,每抓取一次就打开一次文本获取tweet的id,如果有新的tweet,就比较id大小,进而记录较大的到TXT文本中。
第二步:发送到新浪微博
因为新浪微博的API要审核,随便弄个发微博的页面先通过审核,主要是要它的APP KEY
和APP SECRECT
。新浪有php开发的sdk,尽量使用OAUTH1.0
的,这样授权出来的OAUTH
的码不会变,使用OAUTH2.0
的话,授权的OAUTH
有时间的限制,时间久了可能要再授权。先进行一次授权,include
它的weibooauth.php
,把OAUTH_TOKEN和OAUTH_TOKEN_SECRET
都echo出来并记录。就凭APP KEY
和APP_SECRECT和OAUTH_TOKEN
和OAUTH_TOKEN_SECRET
就可以发微博啦。例如
1 | id; |
这前两步解决了同步的问题。
第三部:定时检测。
有很多方法,如果你是外国的linux主机主机,而且还是cPanel面板的话,就会有一个cron job来执行定时任务。添加任务:* * * * * php /home/***.**/public_html/***.**/weibo/sync.php
在网上查了很多方法,有些是填php的完整路径,并不是php,而后面的一定要是最绝对路径。填错了php路径可能显示/bin/sh: /usr/lib/php: is a directory登提示。
第二个就是运行的文件一定要修改他的权限为777,要不会提示Permission denied。
很多东西没有细说,折腾一下还是可以滴。