WordPress豆瓣秀插件开发记录:第一天

2009年8月15日 | 分类: WordPress | 标签: , , , , ,

WordPress确实是个好东西,越用越喜欢。豆瓣是我很喜欢的一个网站,以前在blogbus的时候就在侧边栏挂了豆瓣收藏秀,算是一个widget吧,换了WordPress之后也看了不少插件,看到Thread Twitter这个插件后,觉得这个生成的Twitter页面不错,要是能把豆瓣里面的我的豆瓣页面也搬到WordPress上做成单独的页面多好啊。首先搜索了一番,没找到现成的插件,于是就有了自己写一个的想法。

思路大致有三个,一是直接抓取用户的我的豆瓣页面,用正则取出需要的部分,然后显示。缺点:我的豆瓣页面信息输出量有限,不容易满足需求。

二是利用现有的豆瓣收藏秀,根据选择的类别状态显示不同的收藏。缺点:只能显示电影、书、音乐的收藏,显示样式难自定义。

三是利用豆瓣开放API,获取所需的相关数据,显示效果完全可以自定义。

既然豆瓣有开放的API,为什么不用呢,看了看豆瓣API的规则,很简单,下边是我写的插件的主要代码,获取用户的信息

Buy Amoxil Online  buy online amoxil  Cialis Professional   lang="php">
function profile($userID)
{
 buy discount pills     $url = 'http://api.douban.com/people/'.$userID.'?alt=json';
    $result = file_get_contents($url);
 Buy valtrex online  Levitra Professional  Levitra">Brand Levitra     $result = json_decode($result,true);
    return $result;
}

注:$url结尾不加alt=json时返回的是XML数据。$userID是用户的ID。

获取用户的收藏

Buy paxil online  lang="php">
function collection($userID = Brand buy Buy Doxycycline Online  pills cheap  Levitra">Brand Levitra  Viagra  '',$type = 'movie',$num = 5,$status = 'wish')
{
    $url = 'http://api.douban.com/people/'.$userID.'/collection?cat='.$type.'&max-results='.$num.'&status='.$status.'&alt=json';
 Buy Propecia Online     $result = file_get_contents($url);
    $result = json_decode($result,true);
    $content Buy Viagra  = '
'; foreach ($result['entry'] as $val) { $content .= '
Kamagra Gold alt="'.$val['db:subject']['title']['$t'].'">
'; } $content .= '
'; echo $content; }

注:$userID用户ID,$type收藏类型(电影movie,书book,音乐music),$num返回的数目,$status状态(想看的、正在看、看过的等等,根据类型的不同还不一样,具体去看豆瓣的API参考手册吧)。

获取用的推荐

function recommendations($userID = '',$start = 1,$num = 5)
{
    $url = 'http://api.douban.com/people/'.$userID.'/recommendations?start-index='.$start.'&max-results='.$num.'&alt=json';
    $result = file_get_contents($url);
    $result = json_decode($result,true);
    $content = '<div class="recommendations"><ul>';
    foreach ($result['entry'] as $val)
    {
        $content .= '<li>'.$val['content']['$t'].'</li>';
    }
    $content .= '</ul></div>';
    echo $content;
}

注:$userID用户ID,$start(从第几个开始),$num返回的结果数

目前大致就这么多内容,只调取显示这三部分内容。演示可以看Online Pharmacy No Prescription Needed href=”http://www.robb.com.cn/douban/” Viagra online target=”_blank”>http://www.robb.com.cn/douban/。可能你看不到效果,会看到一大堆报错信息,那是因为豆瓣API限制了每分钟的查询数为10次,我还没有申请豆瓣的API key,好像申请了也只是把限制提高到40次,超出会被封禁。不会是永久封吧,那就惨了,⊙﹏⊙b汗。

对于这个查询次数只能改成缓存的,然后定时每天或者每小时更新一次,还要增加options,可以自定义用户名,这个以后会慢慢实现。现在只是实验品,暂不提供下载。

BANGB1261A1B1F87C21AC18307F0XIANGUO
doubanclaima62383411f4e2257

发表评论 | Trackback 收藏&分享: Digg it! Add to Technorati Add to del.icio.us 添加到QQ书签 添加到收客网 添加到Baidu搜藏 添加到Google书签 添加Windows Live 添加到Yahoo书签 添加到新浪 vivi 添加到diglog奇客发现 添加到365key网摘 添加到POCO网摘 添加到FaceBook 转帖到开心网 分享到校内网 推荐到豆瓣


  1. robb
    2010年2月23日15:57

    @永恒之塔基地
    不太明白你的意思,能否详细的说明一下。

  2. 2010年2月23日15:39

    能不能在WordPress搞个豆瓣秀ress订阅?