第一次调用微博使用的是腾讯自家的一个挂件,没法自定义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]);
}
?>
生活其实很简单,别总是逼自己。很多事情其实没必要那么计较,干嘛让自己那么累呢?问问自己得到了什么好处。如果是因为别人让自己那么累,想想为了那个人值不值得这样做。如果不值得何苦这样逼自己。人是为自己而活的,自己快乐了,过的才是人生。