bizratr 0.0.1 → 0.0.2
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/bizratr/business.rb +14 -3
- data/lib/bizratr/connector.rb +12 -0
- data/lib/bizratr/version.rb +1 -1
- metadata +13 -13
data/lib/bizratr/business.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
module BizRatr
|
2
2
|
class Business
|
3
|
-
attr_accessor :name, :phone, :address, :state, :country, :zip, :twitter, :ids, :checkins, :users, :likes, :ratings, :review_counts, :coords, :city
|
3
|
+
attr_accessor :name, :phone, :address, :state, :country, :zip, :twitter, :ids, :checkins, :users, :likes, :ratings, :review_counts, :coords, :city, :categories
|
4
4
|
|
5
5
|
def initialize(lat, lon, name)
|
6
6
|
@ids = {}
|
@@ -9,12 +9,13 @@ module BizRatr
|
|
9
9
|
@likes = {}
|
10
10
|
@ratings = {}
|
11
11
|
@review_counts = {}
|
12
|
+
@categories = {}
|
12
13
|
@coords = [lat, lon]
|
13
14
|
@name = name
|
14
15
|
end
|
15
16
|
|
16
17
|
def to_s
|
17
|
-
attrs = [:name, :phone, :address, :state, :country, :zip, :twitter, :ids, :checkins, :users, :likes, :ratings, :review_counts, :coords, :city]
|
18
|
+
attrs = [:name, :phone, :address, :state, :country, :zip, :twitter, :ids, :checkins, :users, :likes, :ratings, :review_counts, :coords, :city, :categories]
|
18
19
|
args = attrs.map { |k| "#{k.to_s}=#{send(k)}" }.join(", ")
|
19
20
|
"<Business [#{args}]>"
|
20
21
|
end
|
@@ -54,6 +55,15 @@ module BizRatr
|
|
54
55
|
@users[connector] = users
|
55
56
|
end
|
56
57
|
|
58
|
+
def add_categories(connector, categories)
|
59
|
+
@categories[connector] = categories
|
60
|
+
end
|
61
|
+
|
62
|
+
# Get all categories from all connectors.
|
63
|
+
def flattened_categories
|
64
|
+
@categories.values.flatten.map { |c| c.downcase }.uniq
|
65
|
+
end
|
66
|
+
|
57
67
|
def add_likes(connector, likes)
|
58
68
|
@users[connector] = likes
|
59
69
|
end
|
@@ -88,7 +98,8 @@ module BizRatr
|
|
88
98
|
end
|
89
99
|
|
90
100
|
def name_distance_to(other)
|
91
|
-
|
101
|
+
name = other.is_a?(Business) ? other.name : other
|
102
|
+
Levenshtein::normalized_distance(@name, name)
|
92
103
|
end
|
93
104
|
|
94
105
|
def ==(other)
|
data/lib/bizratr/connector.rb
CHANGED
@@ -29,6 +29,7 @@ module BizRatr
|
|
29
29
|
def make_business(item)
|
30
30
|
b = Business.new(item.lat, item.lng, item.name)
|
31
31
|
b.add_id(:google_places, item.id)
|
32
|
+
b.add_categories(:google_places, item.types)
|
32
33
|
b.phone = item.formatted_phone_number
|
33
34
|
b.city = item.city || item.vicinity.split(',').last
|
34
35
|
b.country = item.country
|
@@ -56,6 +57,8 @@ module BizRatr
|
|
56
57
|
def make_business(item)
|
57
58
|
b = Business.new(item['location']['lat'], item['location']['lng'], item['name'])
|
58
59
|
b.add_id(:foursquare, item['id'])
|
60
|
+
categories = item.categories.map { |c| [ c.name ] + c.parents }.flatten
|
61
|
+
b.add_categories(:foursquare, categories)
|
59
62
|
b.phone = item['contact'].fetch('phone', nil)
|
60
63
|
b.twitter = item['contact'].fetch('twitter', nil)
|
61
64
|
b.state = item['location']['state']
|
@@ -87,6 +90,7 @@ module BizRatr
|
|
87
90
|
def make_business(item)
|
88
91
|
b = Business.new(item['location']['coordinate']['latitude'], item['location']['coordinate']['longitude'], item['name'])
|
89
92
|
b.add_id(:yelp, item['id'])
|
93
|
+
b.add_categories(:yelp, item['categories'].map(&:first))
|
90
94
|
b.state = item['location']['state_code']
|
91
95
|
b.zip = item['location']['postal_code']
|
92
96
|
b.country = item['location']['country_code']
|
@@ -120,6 +124,14 @@ module BizRatr
|
|
120
124
|
}
|
121
125
|
end
|
122
126
|
|
127
|
+
# Search a location (just like search_location) but only return the best
|
128
|
+
# matching business (based on name).
|
129
|
+
def search_location_strictly(location, name)
|
130
|
+
search_location(location, name).inject(nil) { |a,b|
|
131
|
+
(a.nil? or b.name_distance_to(name) < a.name_distance_to(name)) ? b : a
|
132
|
+
}
|
133
|
+
end
|
134
|
+
|
123
135
|
private
|
124
136
|
def merge(lists)
|
125
137
|
lists.inject([]) { |o,t| merge_lists(o, t) }
|
data/lib/bizratr/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bizratr
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2012-09-17 00:00:00.000000000Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: foursquare2
|
16
|
-
requirement: &
|
16
|
+
requirement: &70324969386460 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70324969386460
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: yelpster
|
27
|
-
requirement: &
|
27
|
+
requirement: &70324969385780 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70324969385780
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: google_places
|
38
|
-
requirement: &
|
38
|
+
requirement: &70324969385140 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70324969385140
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: levenshtein
|
49
|
-
requirement: &
|
49
|
+
requirement: &70324969384480 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70324969384480
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: google_places
|
60
|
-
requirement: &
|
60
|
+
requirement: &70324969383840 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :runtime
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70324969383840
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: geocoder
|
71
|
-
requirement: &
|
71
|
+
requirement: &70324969383200 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,7 +76,7 @@ dependencies:
|
|
76
76
|
version: '0'
|
77
77
|
type: :runtime
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *70324969383200
|
80
80
|
description: Get business ratings.
|
81
81
|
email: bamuller@gmail.com
|
82
82
|
executables: []
|