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.
@@ -1,3 +1,3 @@
1
1
  module Doubapi
2
- VERSION = "0.0.8"
2
+ VERSION = "0.0.9"
3
3
  end
data/lib/doubapi.rb CHANGED
@@ -1,4 +1,4 @@
1
- require 'rubygems' #a hack to require failure for nokogiri
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 artist , after_date = Time.now.strftime("%Y-%m")
19
- Douban.search_events_of artist, after_date
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 artist , after_date = "1900.01"
26
- Douban.search_albums_of artist ,after_date
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 key_chinese, location = "shanghai" ,max=20
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=1&max-results=#{max}"
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=1&max-results=#{max}"
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 artist_chinese ,max=10
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 artist , after_date = "1900.01"
103
- doc = search_ablum artist
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 artist , after_date = Time.now.strftime("%Y-%m")
153
-
154
- doc = search_event artist
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
@@ -1,4 +1,5 @@
1
- require 'lib/doubapi'
1
+ #encoding: utf-8
2
+ require 'doubapi'
2
3
  describe Doubapi do
3
4
 
4
5
  it "should be able to search 许巍 " do
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
- hash: 15
5
- prerelease: false
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
- date: 2011-01-10 00:00:00 +08:00
19
- default_executable:
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
- prerelease: false
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
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: !ruby/object:Gem::Requirement
43
25
  none: false
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- hash: 3
48
- segments:
49
- - 0
50
- version: "0"
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
- version_requirements: *id002
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
- has_rdoc: true
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
- hash: 3
87
- segments:
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
- hash: 3
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.3.7
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