重新修复腾讯微博调用

第一次调用微博使用的是腾讯自家的一个挂件,没法自定义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]);   
     }   
?>   


生活其实很简单,别总是逼自己。很多事情其实没必要那么计较,干嘛让自己那么累呢?问问自己得到了什么好处。如果是因为别人让自己那么累,想想为了那个人值不值得这样做。如果不值得何苦这样逼自己。人是为自己而活的,自己快乐了,过的才是人生。

已有 6 条评论
  1. 真是曲线救国啊

    1. @Louis Han:没办法中的办法,灰常无奈。{smile:15}

  2. 把这个代码放到侧边栏里,怎么没有效果啊?

    1. @阿晖博客:你的微博地址是多少?有空我给你测试一下。发我邮箱也可以。

      1. @我为卿狂:腾讯微博地址 t.qq.com/rzddgmh

        1. @阿晖博客:先改为以下设置 $url = 'http://t.qq.com/rzddgmh'; $expire = 0; //过期时间
          然后进入根目录把缓存文件weibo.dat删除。然后测试一下,如果可以,再重新设置缓存时间(按秒计算)。我这边测试了一下,账号没问题,可以显示。

添加新评论