doubapi 0.0.8 → 0.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/doubapi/version.rb +1 -1
- data/lib/doubapi.rb +29 -16
- data/lib/test.rb +62 -0
- data/spec/doubapi_spec.rb +2 -1
- metadata +50 -68
data/lib/doubapi/version.rb
CHANGED
data/lib/doubapi.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require '
|
1
|
+
require 'RUBYgems' #a hack to require failure for nokogiri
|
2
2
|
require 'open-uri'
|
3
3
|
require 'nokogiri'
|
4
4
|
require 'pp'
|
@@ -13,17 +13,17 @@ Event = Struct.new :title, :when, :where, :what, :link
|
|
13
13
|
#release_date is in the format of YY-MM-DD
|
14
14
|
Album = Struct.new :author, :title, :release_date, :link
|
15
15
|
|
16
|
-
|
16
|
+
#input:{key => "all/singer_name", :location => "shanghai", :start_index => 16,:max_result => 15}
|
17
17
|
#return Doubapi::Event[]
|
18
|
-
def self.search_events_of
|
19
|
-
Douban.search_events_of
|
18
|
+
def self.search_events_of h
|
19
|
+
Douban.search_events_of h
|
20
20
|
end
|
21
21
|
|
22
22
|
|
23
|
-
|
23
|
+
#input {:singer,:since}
|
24
24
|
#return Doubapi::Album[]
|
25
|
-
def self.search_albums_of
|
26
|
-
Douban.search_albums_of
|
25
|
+
def self.search_albums_of h
|
26
|
+
Douban.search_albums_of h
|
27
27
|
end
|
28
28
|
|
29
29
|
protected
|
@@ -47,13 +47,19 @@ end
|
|
47
47
|
|
48
48
|
#return Atom
|
49
49
|
#Douban search : will return results that does not match
|
50
|
-
def search_event
|
50
|
+
def search_event h
|
51
|
+
puts h.inspect
|
52
|
+
|
53
|
+
key_chinese = h[:key]
|
54
|
+
location = h[:location] || "shanghai"
|
55
|
+
start_index = h[:start_index] || 1
|
56
|
+
max = h[:max_result]|| 20
|
51
57
|
|
52
58
|
if (key_chinese.downcase == "all")
|
53
|
-
uri="http://api.douban.com/event/location/#{location}?type=music&start-index
|
59
|
+
uri="http://api.douban.com/event/location/#{location}?type=music&start-index=#{start_index}&max-results=#{max}"
|
54
60
|
else
|
55
61
|
keywords= "%" + key_chinese.each_byte.map {|c| c.to_s(16)}.join("%")
|
56
|
-
uri="http://api.douban.com/events?q=#{keywords}&location=#{location}&start-index
|
62
|
+
uri="http://api.douban.com/events?q=#{keywords}&location=#{location}&start-index=#{start_index}&max-results=#{max}"
|
57
63
|
end
|
58
64
|
|
59
65
|
#Let's grab it slowly to avoid being baned...
|
@@ -61,7 +67,9 @@ def search_event key_chinese, location = "shanghai" ,max=20
|
|
61
67
|
douban_get_xml(uri)
|
62
68
|
end
|
63
69
|
|
64
|
-
def search_ablum
|
70
|
+
def search_ablum h
|
71
|
+
artist_chinese = h[:singer]
|
72
|
+
max=h[:max_result]||10
|
65
73
|
keywords= "%" + artist_chinese.each_byte.map {|c| c.to_s(16)}.join("%")
|
66
74
|
uri="http://api.douban.com/music/subjects?tag=#{keywords}&start-index=1&max-results=#{max}"
|
67
75
|
#Let's grab it slowly to avoid being baned...
|
@@ -99,8 +107,10 @@ def compare_date a , b
|
|
99
107
|
return true if (ya.to_i * 12 + ma.to_i ) >= (yb.to_i*12+mb.to_i)
|
100
108
|
end
|
101
109
|
|
102
|
-
def search_albums_of
|
103
|
-
|
110
|
+
def search_albums_of h
|
111
|
+
artist = h[:singer]
|
112
|
+
after_date = h[:since]||"1900.01"
|
113
|
+
doc = search_ablum h
|
104
114
|
albums=[]
|
105
115
|
|
106
116
|
doc.xpath("//entry").each do |entry|
|
@@ -149,9 +159,12 @@ end
|
|
149
159
|
Time.local(year,month,day)
|
150
160
|
end
|
151
161
|
|
152
|
-
def search_events_of
|
153
|
-
|
154
|
-
|
162
|
+
def search_events_of(h={})
|
163
|
+
|
164
|
+
puts h.inspect
|
165
|
+
artist = h[:key]
|
166
|
+
after_date = h[:after_date]||Time.now.strftime("%Y-%m")
|
167
|
+
doc = search_event h
|
155
168
|
events=[]
|
156
169
|
doc.xpath("//entry").each do |entry|
|
157
170
|
#pp entry
|
data/lib/test.rb
ADDED
@@ -0,0 +1,62 @@
|
|
1
|
+
#encoding: utf-8
|
2
|
+
|
3
|
+
#use local lib instead of the Gem installed
|
4
|
+
require './doubapi'
|
5
|
+
|
6
|
+
|
7
|
+
def test1
|
8
|
+
key = "许巍"
|
9
|
+
Doubapi.search_events_of(:key=>key).each do |event|
|
10
|
+
event.what.should be_include(key)
|
11
|
+
puts event.title
|
12
|
+
puts event.when
|
13
|
+
puts event.where
|
14
|
+
puts event.link
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
|
19
|
+
|
20
|
+
def test2
|
21
|
+
author = "李志"
|
22
|
+
Doubapi.search_albums_of(:singer=>author,:since=>"2010-05").each do |album|
|
23
|
+
puts album.author
|
24
|
+
puts album.release_date
|
25
|
+
puts album.title
|
26
|
+
puts album.link
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
|
31
|
+
|
32
|
+
def test3
|
33
|
+
|
34
|
+
puts "1-30"
|
35
|
+
Doubapi.search_events_of(:key => "all", :location => "shanghai", :start_index => 1,:max_result => 30).each do |event|
|
36
|
+
puts "#{event.when} #{event.title}"
|
37
|
+
#puts event.where
|
38
|
+
#puts event.link
|
39
|
+
end
|
40
|
+
|
41
|
+
puts "1-15"
|
42
|
+
|
43
|
+
Doubapi.search_events_of(:key => "all", :location => "shanghai", :start_index => 1,:max_result => 15).each do |event|
|
44
|
+
puts "#{event.when} #{event.title}"
|
45
|
+
#puts event.where
|
46
|
+
#puts event.link
|
47
|
+
end
|
48
|
+
|
49
|
+
puts "16-30"
|
50
|
+
|
51
|
+
Doubapi.search_events_of(:key => "all", :location => "shanghai", :start_index => 16,:max_result => 15).each do |event|
|
52
|
+
puts "#{event.when} #{event.title}"
|
53
|
+
#puts event.where
|
54
|
+
#puts event.link
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
|
59
|
+
#test3
|
60
|
+
#test1
|
61
|
+
test2
|
62
|
+
|
data/spec/doubapi_spec.rb
CHANGED
metadata
CHANGED
@@ -1,65 +1,55 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: doubapi
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 0
|
9
|
-
- 8
|
10
|
-
version: 0.0.8
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.9
|
5
|
+
prerelease:
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- pierr chen
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
dependencies:
|
21
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2012-07-11 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
22
15
|
name: rspec
|
23
|
-
|
24
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
25
17
|
none: false
|
26
|
-
requirements:
|
18
|
+
requirements:
|
27
19
|
- - ~>
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
hash: 62196431
|
30
|
-
segments:
|
31
|
-
- 2
|
32
|
-
- 0
|
33
|
-
- 0
|
34
|
-
- beta
|
35
|
-
- 22
|
20
|
+
- !ruby/object:Gem::Version
|
36
21
|
version: 2.0.0.beta.22
|
37
22
|
type: :development
|
38
|
-
version_requirements: *id001
|
39
|
-
- !ruby/object:Gem::Dependency
|
40
|
-
name: nokogiri
|
41
23
|
prerelease: false
|
42
|
-
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
43
25
|
none: false
|
44
|
-
requirements:
|
45
|
-
- -
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 2.0.0.beta.22
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: nokogiri
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
51
38
|
type: :runtime
|
52
|
-
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
53
46
|
description: douban API gems
|
54
|
-
email:
|
47
|
+
email:
|
55
48
|
- pierr.chen@gmail.com
|
56
49
|
executables: []
|
57
|
-
|
58
50
|
extensions: []
|
59
|
-
|
60
51
|
extra_rdoc_files: []
|
61
|
-
|
62
|
-
files:
|
52
|
+
files:
|
63
53
|
- .gitignore
|
64
54
|
- Gemfile
|
65
55
|
- README
|
@@ -67,41 +57,33 @@ files:
|
|
67
57
|
- doubapi.gemspec
|
68
58
|
- lib/doubapi.rb
|
69
59
|
- lib/doubapi/version.rb
|
60
|
+
- lib/test.rb
|
70
61
|
- spec/doubapi_spec.rb
|
71
62
|
- spec/sample_album
|
72
|
-
|
73
|
-
homepage: ""
|
63
|
+
homepage: ''
|
74
64
|
licenses: []
|
75
|
-
|
76
65
|
post_install_message:
|
77
66
|
rdoc_options: []
|
78
|
-
|
79
|
-
require_paths:
|
67
|
+
require_paths:
|
80
68
|
- lib
|
81
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
69
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
82
70
|
none: false
|
83
|
-
requirements:
|
84
|
-
- -
|
85
|
-
- !ruby/object:Gem::Version
|
86
|
-
|
87
|
-
|
88
|
-
- 0
|
89
|
-
version: "0"
|
90
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - ! '>='
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '0'
|
75
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
91
76
|
none: false
|
92
|
-
requirements:
|
93
|
-
- -
|
94
|
-
- !ruby/object:Gem::Version
|
95
|
-
|
96
|
-
segments:
|
97
|
-
- 0
|
98
|
-
version: "0"
|
77
|
+
requirements:
|
78
|
+
- - ! '>='
|
79
|
+
- !ruby/object:Gem::Version
|
80
|
+
version: '0'
|
99
81
|
requirements: []
|
100
|
-
|
101
82
|
rubyforge_project: doubapi
|
102
|
-
rubygems_version: 1.
|
83
|
+
rubygems_version: 1.8.24
|
103
84
|
signing_key:
|
104
85
|
specification_version: 3
|
105
86
|
summary: douban API gems
|
106
|
-
test_files:
|
107
|
-
|
87
|
+
test_files:
|
88
|
+
- spec/doubapi_spec.rb
|
89
|
+
- spec/sample_album
|