doubapi 0.0.8 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
@@ -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