Simple Ruby wrapper for Douban API V2
这个项目仍在开发中,缺少文档和测试,欢迎贡献。
gem install douban_api
完整的应用请到 https://github.com/seansay/douban_api_sinatra_example
Demo: http://doubanapi.notimportant.org/
require 'rubygems'
require 'sinatra'
require 'haml'
require 'douban_api'
enable :sessions
set :app_file, __FILE__
set :root, File.dirname(__FILE__)
set :views, 'views'
set :public_folder, 'public'
# 设置回调的URL和所需的scope(http://developers.douban.com/wiki/?title=oauth2)
set :callback_url, "http://doubanapi.notimportant.org/connect"
set :scope, "douban_basic_common,shuo_basic_r,shuo_basic_w"
# 设置 apikey和secret,可在 http://developers.douban.com/apikey/ 处查看
Douban.configure do |config|
config.client_id = ENV['DOUBAN_API_KEY']
config.client_secret = ENV['DOUBAN_API_SECRET']
end
get '/' do
haml :index, :layout => :'layouts/application'
end
get '/login' do
redirect Douban.authorize_url(:redirect_uri => settings.callback_url, :scope => settings.scope)
end
get '/connect' do
response = Douban.get_access_token(params[:code], :redirect_uri => settings.callback_url)
session[:access_token] = response.access_token
session[:user_id] = response.douban_user_id
redirect "/timeline"
end
get '/timeline' do
@client = Douban.client(:access_token => session[:access_token], :user_id => session[:user_id])
@statuses = @client.timeline
haml :timeline, :layout => :'layouts/application'
end
client = Douban.client(:access_token=>access_token, :user_id => user_id)
# 获取已认证用户对音乐的所有标签
client.user_music_tags
=> [{"count"=>166, "alt"=>"http://music.douban.com/tag/内地", "title"=>"内地"},
{"count"=>155, "alt"=>"http://music.douban.com/tag/摇滚", "title"=>"摇滚"},
{"count"=>139, "alt"=>"http://music.douban.com/tag/美国", "title"=>"美国"},
{"count"=>127, "alt"=>"http://music.douban.com/tag/台湾", "title"=>"台湾"},
{"count"=>109, "alt"=>"http://music.douban.com/tag/Pop", "title"=>"Pop"},
{"count"=>105, "alt"=>"http://music.douban.com/tag/2011", "title"=>"2011"},
{"count"=>100, "alt"=>"http://music.douban.com/tag/华语", "title"=>"华语"},
{"count"=>97, "alt"=>"http://music.douban.com/tag/女声", "title"=>"女声"},
{"count"=>87, "alt"=>"http://music.douban.com/tag/Rock", "title"=>"Rock"},
{"count"=>83, "alt"=>"http://music.douban.com/tag/民谣", "title"=>"民谣"},
{"count"=>80, "alt"=>"http://music.douban.com/tag/2010", "title"=>"2010"},
{"count"=>77, "alt"=>"http://music.douban.com/tag/欧美", "title"=>"欧美"},
{"count"=>73, "alt"=>"http://music.douban.com/tag/英国", "title"=>"英国"},
{"count"=>73, "alt"=>"http://music.douban.com/tag/中国", "title"=>"中国"},
{"count"=>65, "alt"=>"http://music.douban.com/tag/2012", "title"=>"2012"},
{"count"=>60, "alt"=>"http://music.douban.com/tag/男声", "title"=>"男声"},
{"count"=>55, "alt"=>"http://music.douban.com/tag/流行", "title"=>"流行"},
{"count"=>52, "alt"=>"http://music.douban.com/tag/indie", "title"=>"indie"},
{"count"=>52, "alt"=>"http://music.douban.com/tag/rock", "title"=>"rock"},
{"count"=>48, "alt"=>"http://music.douban.com/tag/Indie", "title"=>"Indie"}]
# 已登录用户的豆邮收件箱
client.inbox
=> [{"status"=>"R",
"sender"=>
{"avatar"=>
"http://img3.douban.com/view/site/small/public/fc82eb2dcec6ed0.jpg",
"alt"=>"http://site.douban.com/fuzz/",
"id"=>"104427",
"name"=>"THE FUZZ 法兹",
"uid"=>"fuzz"},
"title"=>"近期动向",
"published"=>"2012-12-07 11:32:04",
"content"=>
"打扰各位,近期2场演出后我们将休整一段时间,开始专辑的准备和录制工作!\r\n\r\n2场演出分别是\r\n12.21 月亮钥匙 W 刺猬\r\n12.28 光圈 地下丝绒45周年致敬演出 "receiver"=>
{"avatar"=>"http://img3.douban.com/icon/u2217855-34.jpg",
"alt"=>"http://www.douban.com/people/xiaosong/",
"id"=>"2217855",
"name"=>"小松其实还没有",
"uid"=>"xiaosong"},
"id"=>"283060020"},
{"status"=>"R",………………………………
# 发送一条广播
client.shuo("呵呵后")
=> {"category"=>nil,
"reshared_count"=>0,
"attachments"=>[],
"entities"=>{"user_mentions"=>[], "topics"=>[], "urls"=>[]},
"muted"=>false,
"text"=>"呵呵后",
"created_at"=>"2012-12-07 14:58:49",
"title"=>"说:",
"can_reply"=>1,
"liked"=>false,
"source"=>{"href"=>"", "title"=>"douReminder"},
"like_count"=>0,
"comments_count"=>0,
"user"=>
{"description"=>"",
"small_avatar"=>"http://img3.douban.com/icon/u2217855-34.jpg",
"uid"=>"xiaosong",
"type"=>"user",
"id"=>"2217855",
"screen_name"=>"小松其实还没有"},
"is_follow"=>false,
"has_photo"=>true,
"type"=>"text",
"id"=>1059068526}
- Test, test, test……
- 文档
This project a fork of instagram-ruby-gem, see LICENSE for details.