豆瓣API 客户端

Python客户端

google code douban-python项目

Java客户端

google code douban-java项目

PHP客户端

google code douban-php-client项目

Javascript客户端

对于javascript开发人员,豆瓣API提供一种更简单的方式可以直接在HTML页面中使用API,下面给出这种使用方式的简单示例。

首先你需要在HTML页面中如下script标签:

<script type="text/javascript" src="http://www.douban.com/js/api.js?v=2" />

之后你需要在javascript中设置好你的apikey:

DOUBAN.apikey = 'c4579586f41a90372f762cb65c78be5d'

而后你就可以调用豆瓣API,其中通过定义callback函数来操作返回的JSON数据:

DOUBAN.getMovie({
    id:'2340927',
    callback:function(movie){
        var title = movie.title['$t'];
                ...
    }
})

此外,豆瓣也提供了解析函数来帮助你更容易地使用JSON格式的返回值。使用豆瓣提供的解析函数,你需要在页面中添加如下的script标签:

<script type="text/javascript" src="http://www.douban.com/js/api-parser.js?v=1"></script>

接下来你就可以使用豆瓣提供的解析函数来处理返回值,例如:

var book = DOUBAN.parseSubject(result)

解析函数返回更容易使用的javascript对象,例如你可以这样得到书的封面图片:

book.link.image

下面HTML页面使用API获得ID为2340927电影的信息并展示在页面上(注意将{yourapikey}替换为你的API Key)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML xmlns="http://www.w3.org/1999/xhtml">
<HEAD>
<TITLE></TITLE>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<style>
    body {padding:0;margin: 0;background: #FEFEFE;}
    body,td,th { font: 12px Arial, Helvetica, sans-serif; line-height: 150%; }
    span.title {
        margin:5px;
    }
</style>
<script type="text/javascript" src="http://www.douban.com/js/api.js?v=2"></script>
<script type="text/javascript" src="http://www.douban.com/js/api-parser.js?v=1"></script>
<BODY>
</BODY>
<script>
DOUBAN.apikey = {yourapikey}
DOUBAN.getMovie({
    id:'2340927',
    callback:function(re){
        var subj = DOUBAN.parseSubject(re)
        var tl = subj.title ? subj.title : "";
        var author = subj.author ? subj.author : "";
        var di = subj.attribute.director ? subj.attribute.director.join(' / ') : "";
        var tmp = "<img src="+subj.link.image+" style='margin:10px;float:left'>";
        tmp += "<div>Title : <a href="+subj.link.alternate+" target='_blank'>"+tl+"</a></div>";
        if (subj.attribute.author) tmp += "<div>Authors : "+(subj.attribute.author.join(' / '))+"</div>";
        if (subj.attribute.director) tmp += "<div>Director : "+(subj.attribute.director.join(' / '))+"</div>";
        if (subj.attribute.cast) tmp += "<div>Casts : "+(subj.attribute.cast.join(' / '))+"</div>";
        if (subj.attribute.aka) tmp += "<div>A.k.a : "+(subj.attribute.aka.join(' <br/>   '))+"</div>";
        if (subj.attribute.language) tmp += "<div>Language : "+(subj.attribute.language.join(' / '))+"</div>";
        if (subj.attribute.country) tmp += "<div>Country : "+(subj.attribute.country.join(' / '))+"</div>";
        if (subj.rating.average)
            tmp +="<div>Rating: "+subj.rating.average+" / "+subj.rating.numRaters+decodeURI("%E4%BA%BA")+ "</div>"
        tmp += "<p>"+(subj.summary ? subj.summary : "")+"</p>";
        document.body.innerHTML = tmp;
    }
})
</script>
</HTML>

注:实现上,豆瓣API使用 JSONP 方式来支持跨域调用API 因此你也可以使用自己熟悉的javascript库来调用JSONP风格的豆瓣API. 此时,你需要将alt设置为xd同时提供callback参数。

例如使用JQuery,前面的例子则可以写为

$.getJSON("http://api.douban.com/movie/subject/2340927?alt=xd&callback=?", function(movie){
    var title = movie.title['$t'];
    ...
});