第一次调用微博使用的是腾讯自家的一个挂件,没法自定义CSS。和博客融合性不太好,就没有再用。
第二次使用的是 双木杉子 开发的腾讯微博非官方API接口JQUERY插件,可以自定义调用的微博数量和CSS。但是由于插件原作者的网站关闭。导致此插件的功能失效。
第三次使用的是腾讯微博开放平台放出的RSS/JSONP接口,提供了RSS订阅源/JSONP格式输出。可以通过解析数据保存到本地缓存后再输出,也可以实现自定义CSS。后来不知道腾讯微博哪里又抽风了,居然连这个也不支持了。至今仍未恢复,让人蛋疼。
这次自己干脆直接写了一个小偷程序,远程读取个人微博主页,通过正则表达式过滤用不到的内容,然后写入本地缓存,再用ajax加载实现了这么曲折的调用。总算是捣鼓完了。感兴趣的可以去微博页面查看效果。
其实也可以不通过ajax加载本地缓存文件的,只可惜EMLOG自定义页面只支持HTML和JS代码,PHP代码没法执行。所以就用到了jQuery的load()方法。
<?php $url = '你的微博地址'; $expire = 259200; //过期时间 $cache_file = 'weibo.dat'; //缓存文件 clearstatcache(); if (file_exists($cache_file) && time() <= (filemtime($cache_file) + $expire)) {//缓存文件存在且未过期则直接读取 $wb = file_get_contents($cache_file); echo $wb; }else{//缓存文件不存在或已过期则读取远程数据处理并缓存 $content = file_get_contents($url); preg_match("/<ul id=\"talkList\" class=\"LC noHead\"(.*)<\/ul>/imsU", $content, $wb_data); $patterns =array('/<li class=\"snake_dragon\">(.*)<\/li>/imsU','/<script>(.*)<\/script>/imsU','/<div class=\"funBox\">(.*)<\/div>/imsU','/<div class=\"pubInfo\"(.*)">来自/imsU', '/<\/a><\/span><a class=\"time\"(.*)>/imsU','/<span class=\"cNote\"(.*)<\/span><\/div>/imsU','/gender=\"他\"/imsU'); $string=array('','','','<span>来自',' ','</span>','target="_blank"'); $wb_data = preg_replace($patterns,$string,$wb_data); $wb=str_replace("crs","src",$wb_data); file_put_contents($cache_file, $wb[0]); //写入缓存文件 print_r( $wb[0]); } ?>
生活其实很简单,别总是逼自己。很多事情其实没必要那么计较,干嘛让自己那么累呢?问问自己得到了什么好处。如果是因为别人让自己那么累,想想为了那个人值不值得这样做。如果不值得何苦这样逼自己。人是为自己而活的,自己快乐了,过的才是人生。
真是曲线救国啊
@Louis Han:没办法中的办法,灰常无奈。{smile:15}
把这个代码放到侧边栏里,怎么没有效果啊?
@阿晖博客:你的微博地址是多少?有空我给你测试一下。发我邮箱也可以。
@我为卿狂:腾讯微博地址 t.qq.com/rzddgmh
@阿晖博客:先改为以下设置 $url = 'http://t.qq.com/rzddgmh'; $expire = 0; //过期时间
然后进入根目录把缓存文件weibo.dat删除。然后测试一下,如果可以,再重新设置缓存时间(按秒计算)。我这边测试了一下,账号没问题,可以显示。