popular_deals 1.1.0 → 1.1.1
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.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/bin/popular-deals +1 -1
- data/lib/popular_deals.rb +3 -0
- data/lib/popular_deals/cli.rb +236 -80
- data/lib/popular_deals/newdeals.rb +17 -34
- data/lib/popular_deals/scrapper.rb +37 -0
- data/lib/popular_deals/version.rb +1 -1
- data/popular_deals.gemspec +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: e62081a3f3e0ea6f804c2589ee1e74715b38711b
|
|
4
|
+
data.tar.gz: 76e7d4947abe852897b11197968dfaaa8191a817
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a5b0e6a86438f53280d7707baee2daacfd48953408607e35f55f7ffbf771039eac64c7121854d7330b595df982239b3d3d00d0c728617b5a8ef32ea9a4aa82d5
|
|
7
|
+
data.tar.gz: 2cdf4e380ee7159d57786963455bb17db04dd0dde8344b0aa85a24ce1438e58d01d05d520613660e4f7d06304826081d87187fb92e0218a1a51f067fcc1f0b09
|
data/README.md
CHANGED
data/bin/popular-deals
CHANGED
data/lib/popular_deals.rb
CHANGED
|
@@ -9,4 +9,7 @@ require 'pry'
|
|
|
9
9
|
require_relative "./popular_deals/version"
|
|
10
10
|
require_relative "./popular_deals/cli"
|
|
11
11
|
require_relative "./popular_deals/newdeals"
|
|
12
|
+
require_relative "./popular_deals/scrapper"
|
|
13
|
+
#require_relative "./popular_deals/listdeals"
|
|
14
|
+
|
|
12
15
|
#require_relative "./popular_deals/deal"
|
data/lib/popular_deals/cli.rb
CHANGED
|
@@ -5,14 +5,20 @@ class PopularDeals::CLI
|
|
|
5
5
|
PAGE3_URL = "https://slickdeals.net/deals/?page=3&sort=recent"
|
|
6
6
|
PAGE4_URL = "https://slickdeals.net/deals/?page=4&sort=recent"
|
|
7
7
|
PAGE5_URL = "https://slickdeals.net/deals/?page=5&sort=recent"
|
|
8
|
+
|
|
8
9
|
attr_accessor :product_url
|
|
9
|
-
#BROWSER=(/usr/local/bin/firefox-bin -new-tab '%s':/usr/local/bin/google-chrome-stable)
|
|
10
10
|
|
|
11
11
|
def call
|
|
12
|
+
scrap_all_deals
|
|
12
13
|
select_list_of_deals
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def scrap_all_deals
|
|
17
|
+
PopularDeals::Scrapper.scrap_slickdeals(BASE_URL)
|
|
18
|
+
PopularDeals::Scrapper.scrap_slickdeals(PAGE2_URL)
|
|
19
|
+
PopularDeals::Scrapper.scrap_slickdeals(PAGE3_URL)
|
|
20
|
+
PopularDeals::Scrapper.scrap_slickdeals(PAGE4_URL)
|
|
21
|
+
PopularDeals::Scrapper.scrap_slickdeals(PAGE5_URL)
|
|
16
22
|
end
|
|
17
23
|
|
|
18
24
|
def select_list_of_deals
|
|
@@ -24,113 +30,263 @@ class PopularDeals::CLI
|
|
|
24
30
|
puts "Type 4 for the fourth list of 61-80 deals.".yellow
|
|
25
31
|
puts "Type 5 for the fifth list of 81-100 deals.".yellow
|
|
26
32
|
puts ""
|
|
27
|
-
|
|
28
|
-
case
|
|
33
|
+
input1 = gets.strip.to_i
|
|
34
|
+
case input1
|
|
29
35
|
when 1
|
|
30
|
-
|
|
31
|
-
puts ""
|
|
32
|
-
puts "------------------ Deal list:1 - deals 1 - 20 ------------------".yellow
|
|
33
|
-
puts ""
|
|
36
|
+
list1_actions
|
|
34
37
|
when 2
|
|
35
|
-
|
|
36
|
-
puts ""
|
|
37
|
-
puts "------------------ Deal list:2 - deals 21 - 40 ------------------".yellow
|
|
38
|
-
puts ""
|
|
38
|
+
list2_actions
|
|
39
39
|
when 3
|
|
40
|
-
|
|
41
|
-
puts ""
|
|
42
|
-
puts "------------------ Deal list:3 - deals 41 - 60 ------------------".yellow
|
|
43
|
-
puts ""
|
|
40
|
+
list3_actions
|
|
44
41
|
when 4
|
|
45
|
-
|
|
46
|
-
puts ""
|
|
47
|
-
puts "------------------ Deal list:4 - deals 61 - 80 ------------------".yellow
|
|
48
|
-
puts ""
|
|
42
|
+
list4_actions
|
|
49
43
|
when 5
|
|
50
|
-
|
|
51
|
-
puts ""
|
|
52
|
-
puts "------------------ Deal list:5 - deals 81 - 100 ------------------".yellow
|
|
53
|
-
puts ""
|
|
44
|
+
list5_actions
|
|
54
45
|
else
|
|
55
46
|
puts "Don't understand that command".colorize(:color => :white, :background => :red)
|
|
56
47
|
select_list_of_deals
|
|
57
48
|
end
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def deal_list
|
|
52
|
+
@deals.each do |deal|
|
|
53
|
+
i = "#{deal.number}".to_i
|
|
54
|
+
if i < 10
|
|
55
|
+
puts "#{i}. #{deal.title}".cyan.bold
|
|
56
|
+
puts "Deal rating: #{deal.deal_rating}.".gsub(/^/, " ")
|
|
57
|
+
puts "Deal value - #{deal.price}".gsub(/^/, " ")
|
|
58
|
+
puts "#{deal.posted}".gsub(/^/, " ")
|
|
59
|
+
puts ""
|
|
60
|
+
elsif i >= 10
|
|
61
|
+
puts "#{i}. #{deal.title}".cyan.bold
|
|
62
|
+
puts "Deal rating: #{deal.deal_rating}.".gsub(/^/, " ")
|
|
63
|
+
puts "Deal value - #{deal.price}".gsub(/^/, " ")
|
|
64
|
+
puts "#{deal.posted}".gsub(/^/, " ")
|
|
65
|
+
puts ""
|
|
66
|
+
elsif i >= 100
|
|
67
|
+
puts "#{i}. #{deal.title}".cyan.bold
|
|
68
|
+
puts "Deal rating: #{deal.deal_rating}.".gsub(/^/, " ")
|
|
69
|
+
puts "Deal value - #{deal.price}".gsub(/^/, " ")
|
|
70
|
+
puts "#{deal.posted}".gsub(/^/, " ")
|
|
71
|
+
puts ""
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def list1_actions
|
|
77
|
+
@deals = PopularDeals::NewDeals.deals[0..19]
|
|
78
|
+
puts ""
|
|
79
|
+
puts "------------------ Deal list:1 - deals 1 - 20 ------------------".yellow
|
|
80
|
+
puts ""
|
|
81
|
+
deal_list
|
|
80
82
|
input = nil
|
|
81
83
|
while input != "exit"
|
|
82
84
|
|
|
85
|
+
deal_message
|
|
86
|
+
input = gets.strip.downcase
|
|
83
87
|
puts ""
|
|
84
|
-
|
|
88
|
+
|
|
89
|
+
if input.to_i > 0 && input.to_i <= 20
|
|
90
|
+
space
|
|
91
|
+
puts "Please see below details of deal no. #{input}".upcase.cyan.bold
|
|
92
|
+
disply_deal(BASE_URL, input, product_url)
|
|
93
|
+
elsif input.to_i > 20 && input.to_i <= 100
|
|
94
|
+
puts "Deal ##{input} is not from the list 1.".yellow
|
|
95
|
+
available_options
|
|
96
|
+
elsif input == "list"
|
|
97
|
+
list1_actions
|
|
98
|
+
break
|
|
99
|
+
elsif input == "select list"
|
|
100
|
+
select_list_of_deals
|
|
101
|
+
break
|
|
102
|
+
elsif input == "exit"
|
|
103
|
+
goodbye
|
|
104
|
+
else
|
|
105
|
+
error_handling
|
|
106
|
+
available_options
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
def list2_actions
|
|
112
|
+
@deals = PopularDeals::NewDeals.deals[20..39]
|
|
113
|
+
puts ""
|
|
114
|
+
puts "------------------ Deal list:2 - deals 21 - 40 ------------------".yellow
|
|
115
|
+
puts ""
|
|
116
|
+
deal_list
|
|
117
|
+
input = nil
|
|
118
|
+
while input != "exit"
|
|
119
|
+
|
|
120
|
+
deal_message
|
|
121
|
+
input = gets.strip.downcase
|
|
122
|
+
puts ""
|
|
123
|
+
if input.to_i > 20 && input.to_i <= 40
|
|
124
|
+
space
|
|
125
|
+
puts "Please see below details of deal no. #{input}".upcase.cyan.bold
|
|
126
|
+
disply_deal(BASE_URL, input, product_url)
|
|
127
|
+
elsif input.to_i > 0 && input.to_i <= 20 || input.to_i > 40 && input.to_i <= 100
|
|
128
|
+
puts "Deal ##{input} is not from the list 2.".yellow
|
|
129
|
+
available_options
|
|
130
|
+
elsif input == "list"
|
|
131
|
+
list2_actions
|
|
132
|
+
break
|
|
133
|
+
elsif input == "select list"
|
|
134
|
+
select_list_of_deals
|
|
135
|
+
break
|
|
136
|
+
elsif input == "exit"
|
|
137
|
+
goodbye
|
|
138
|
+
else
|
|
139
|
+
error_handling
|
|
140
|
+
available_options
|
|
141
|
+
end
|
|
142
|
+
end
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
def list3_actions
|
|
146
|
+
@deals = PopularDeals::NewDeals.deals[40..59]
|
|
147
|
+
puts ""
|
|
148
|
+
puts "------------------ Deal list:3 - deals 41 - 60 ------------------".yellow
|
|
149
|
+
puts ""
|
|
150
|
+
deal_list
|
|
151
|
+
input = nil
|
|
152
|
+
while input != "exit"
|
|
153
|
+
|
|
154
|
+
deal_message
|
|
155
|
+
input = gets.strip.downcase
|
|
85
156
|
puts ""
|
|
157
|
+
|
|
158
|
+
if input.to_i > 40 && input.to_i <= 60
|
|
159
|
+
space
|
|
160
|
+
puts "Please see below details of deal no. #{input}".upcase.cyan.bold
|
|
161
|
+
disply_deal(BASE_URL, input, product_url)
|
|
162
|
+
elsif input.to_i > 0 && input.to_i <= 40 || input.to_i > 60 && input.to_i <= 100
|
|
163
|
+
puts "Deal ##{input} is not from the list 3.".yellow
|
|
164
|
+
available_options
|
|
165
|
+
elsif input == "list"
|
|
166
|
+
list3_actions
|
|
167
|
+
break
|
|
168
|
+
elsif input == "select list"
|
|
169
|
+
select_list_of_deals
|
|
170
|
+
break
|
|
171
|
+
elsif input == "exit"
|
|
172
|
+
goodbye
|
|
173
|
+
else
|
|
174
|
+
error_handling
|
|
175
|
+
available_options
|
|
176
|
+
end
|
|
177
|
+
end
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
def list4_actions
|
|
181
|
+
@deals = PopularDeals::NewDeals.deals[60..79]
|
|
182
|
+
puts ""
|
|
183
|
+
puts "------------------ Deal list:4 - deals 61 - 80 ------------------".yellow
|
|
184
|
+
puts ""
|
|
185
|
+
deal_list
|
|
186
|
+
input = nil
|
|
187
|
+
while input != "exit"
|
|
188
|
+
|
|
189
|
+
deal_message
|
|
86
190
|
input = gets.strip.downcase
|
|
87
191
|
puts ""
|
|
192
|
+
if input.to_i > 60 && input.to_i <= 80
|
|
193
|
+
space
|
|
194
|
+
puts "Please see below details of deal no. #{input}".upcase.cyan.bold
|
|
195
|
+
disply_deal(BASE_URL, input, product_url)
|
|
196
|
+
elsif input.to_i > 0 && input.to_i <= 60 || input.to_i > 80 && input.to_i <= 100
|
|
197
|
+
puts "Deal ##{input} is not from the list 4.".yellow
|
|
198
|
+
available_options
|
|
199
|
+
elsif input == "list"
|
|
200
|
+
list4_actions
|
|
201
|
+
break
|
|
202
|
+
elsif input == "select list"
|
|
203
|
+
select_list_of_deals
|
|
204
|
+
break
|
|
205
|
+
elsif input == "exit"
|
|
206
|
+
goodbye
|
|
207
|
+
else
|
|
208
|
+
error_handling
|
|
209
|
+
available_options
|
|
210
|
+
end
|
|
211
|
+
end
|
|
212
|
+
end
|
|
213
|
+
|
|
214
|
+
def list5_actions
|
|
215
|
+
@deals = PopularDeals::NewDeals.deals[80..99]
|
|
216
|
+
puts ""
|
|
217
|
+
puts "------------------ Deal list:5 - deals 81 - 100 ------------------".yellow
|
|
218
|
+
puts ""
|
|
219
|
+
deal_list
|
|
220
|
+
input = nil
|
|
221
|
+
while input != "exit"
|
|
88
222
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
223
|
+
deal_message
|
|
224
|
+
input = gets.strip.downcase
|
|
225
|
+
puts ""
|
|
226
|
+
if input.to_i > 80 && input.to_i <= 100
|
|
227
|
+
space
|
|
228
|
+
puts "Please see below details of deal no. #{input}".upcase.cyan.bold
|
|
229
|
+
disply_deal(BASE_URL, input, product_url)
|
|
230
|
+
elsif input.to_i > 0 && input.to_i <= 80
|
|
231
|
+
puts "Deal ##{input} is not from the list 5.".yellow
|
|
232
|
+
available_options
|
|
233
|
+
elsif input == "list"
|
|
234
|
+
list5_actions
|
|
235
|
+
break
|
|
236
|
+
elsif input == "select list"
|
|
237
|
+
select_list_of_deals
|
|
238
|
+
break
|
|
239
|
+
elsif input == "exit"
|
|
240
|
+
goodbye
|
|
241
|
+
else
|
|
242
|
+
error_handling
|
|
243
|
+
available_options
|
|
110
244
|
end
|
|
111
|
-
|
|
245
|
+
end
|
|
246
|
+
end
|
|
247
|
+
|
|
248
|
+
def space
|
|
249
|
+
puts ""
|
|
250
|
+
puts "-----------------------------------------------------------------------------------------------------------"
|
|
251
|
+
puts ""
|
|
252
|
+
end
|
|
253
|
+
|
|
254
|
+
def deal_message
|
|
255
|
+
puts ""
|
|
256
|
+
puts "Enter the number of deal you would like more info on or type Exit.".light_blue.bold
|
|
257
|
+
puts ""
|
|
258
|
+
end
|
|
259
|
+
|
|
260
|
+
def error_handling
|
|
261
|
+
puts "Don't understand your command.".colorize(:color => :white, :background => :red)
|
|
262
|
+
end
|
|
263
|
+
|
|
264
|
+
def available_options
|
|
265
|
+
puts "Type 'SELECT LIST' to see available deal lists.".yellow
|
|
266
|
+
puts "Type 'LIST' to see the current deal list.".yellow
|
|
267
|
+
puts "Type 'EXIT' to exit.".yellow
|
|
268
|
+
puts ""
|
|
112
269
|
end
|
|
113
270
|
|
|
114
271
|
def disply_deal(base_url, input, product_url)
|
|
115
|
-
|
|
116
|
-
keys =
|
|
272
|
+
deal = PopularDeals::Scrapper.deal_page(BASE_URL, input, product_url)
|
|
273
|
+
keys = deal.keys
|
|
117
274
|
puts ""
|
|
118
275
|
puts "DEAL:".magenta.bold.gsub(/^/, " ")
|
|
119
|
-
puts "#{
|
|
276
|
+
puts "#{deal[keys[0]]}".gsub(/^/, " ")
|
|
120
277
|
puts ""
|
|
121
278
|
puts "Description:".upcase.magenta.bold.gsub(/^/, " ")
|
|
122
|
-
puts "#{
|
|
279
|
+
puts "#{deal[keys[1]]}".gsub(/^/, " ")
|
|
123
280
|
puts ""
|
|
124
|
-
|
|
281
|
+
|
|
282
|
+
if deal[keys[2]].nil?
|
|
125
283
|
puts "To lock this deal, please visit:".upcase.magenta.bold.gsub(/^/, " ")
|
|
126
284
|
puts "#{product_url}".gsub(/^/, " ")
|
|
127
285
|
else
|
|
128
286
|
puts "To lock this deal, please visit:".upcase.magenta.bold.gsub(/^/, " ")
|
|
129
|
-
puts "#{
|
|
287
|
+
puts "#{deal[keys[2]]}".gsub(/^/, " ")
|
|
130
288
|
end
|
|
131
|
-
|
|
132
|
-
puts "-----------------------------------------------------------------------------------------------------------"
|
|
133
|
-
puts ""
|
|
289
|
+
space
|
|
134
290
|
end
|
|
135
291
|
|
|
136
292
|
def goodbye
|
|
@@ -1,49 +1,32 @@
|
|
|
1
1
|
class PopularDeals::NewDeals
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
attr_accessor :title, :url, :deal_rating, :price, :posted, :name, :discription, :purchase, :purchase_link
|
|
4
|
+
attr_accessor :title, :url, :deal_rating, :price, :posted, :name, :discription, :purchase, :purchase_link, :number
|
|
5
|
+
@@all = []
|
|
5
6
|
|
|
6
|
-
def
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
all_deals = doc.css("div.dealRow")
|
|
10
|
-
all_deals.collect do |one_deal|
|
|
11
|
-
deal = self.new
|
|
12
|
-
deal.title = one_deal.css("div.dealTitle a.track-popularDealLink").text.strip
|
|
13
|
-
link = one_deal.css("div.dealTitle a").attribute("href").value
|
|
14
|
-
deal.url = "https://slickdeals.net#{link}"
|
|
15
|
-
deal.deal_rating = one_deal.css("div.ratingCol div.num").text.strip
|
|
16
|
-
deal.price = one_deal.css("div.priceCol div.price").text.strip
|
|
7
|
+
def save
|
|
8
|
+
@@all << self
|
|
9
|
+
end
|
|
17
10
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
deal.posted = "#{new_array[0]} #{new_array[1]}"
|
|
21
|
-
deals << deal
|
|
22
|
-
end
|
|
23
|
-
deals
|
|
11
|
+
def self.all
|
|
12
|
+
@@all
|
|
24
13
|
end
|
|
25
14
|
|
|
26
15
|
def self.open_deal_page(base_url, input)
|
|
27
16
|
index = input.to_i - 1
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
17
|
+
deals = self.all
|
|
18
|
+
product_url = "#{deals[index].url}"
|
|
19
|
+
product_url
|
|
31
20
|
end
|
|
32
21
|
|
|
33
|
-
def self.
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
deal[:name] = doc.css("h1").text.strip
|
|
40
|
-
deal[:discription] = doc.css(".textDescription").text.strip
|
|
41
|
-
if doc.at_css("a#largeBuyNow").nil?
|
|
42
|
-
deal[:purchase] = @product_url
|
|
43
|
-
else
|
|
44
|
-
deal[:purchase] = doc.at_css("a#largeBuyNow").attr("href")
|
|
22
|
+
def self.deals
|
|
23
|
+
all_deals = @@all
|
|
24
|
+
deals = []
|
|
25
|
+
all_deals.collect do |deal_info|
|
|
26
|
+
deal_info.number = all_deals.index(deal_info).to_i + 1
|
|
27
|
+
deals << deal_info
|
|
45
28
|
end
|
|
46
|
-
|
|
29
|
+
deals
|
|
47
30
|
end
|
|
48
31
|
|
|
49
32
|
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
class PopularDeals::Scrapper
|
|
2
|
+
|
|
3
|
+
def self.scrap_slickdeals(base_url)
|
|
4
|
+
doc = Nokogiri::HTML(open(base_url))
|
|
5
|
+
all_deals = doc.css("div.dealRow")
|
|
6
|
+
all_deals.collect do |one_deal|
|
|
7
|
+
deal = PopularDeals::NewDeals.new
|
|
8
|
+
deal.title = one_deal.css("div.dealTitle a.track-popularDealLink").text.strip
|
|
9
|
+
link = one_deal.css("div.dealTitle a").attribute("href").value
|
|
10
|
+
deal.url = "https://slickdeals.net#{link}"
|
|
11
|
+
deal.deal_rating = one_deal.css("div.ratingCol div.num").text.strip
|
|
12
|
+
deal.price = one_deal.css("div.priceCol div.price").text.strip
|
|
13
|
+
|
|
14
|
+
date = one_deal.css("div.dealLinks").first.text.strip
|
|
15
|
+
new_array = date.split
|
|
16
|
+
deal.posted = "#{new_array[0]} #{new_array[1]}"
|
|
17
|
+
deal.save
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def self.deal_page(base_url, input, product_url)
|
|
22
|
+
product_url = PopularDeals::NewDeals.open_deal_page(base_url, input)
|
|
23
|
+
deal = {}
|
|
24
|
+
html = open(product_url)
|
|
25
|
+
doc = Nokogiri::HTML(html)
|
|
26
|
+
data = doc.text.strip
|
|
27
|
+
deal[:name] = doc.css("h1").text.strip
|
|
28
|
+
deal[:discription] = doc.css(".textDescription").text.strip
|
|
29
|
+
if doc.at_css("a#largeBuyNow").nil?
|
|
30
|
+
deal[:purchase] = product_url
|
|
31
|
+
else
|
|
32
|
+
deal[:purchase] = doc.at_css("a#largeBuyNow").attr("href")
|
|
33
|
+
end
|
|
34
|
+
deal
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
end
|
data/popular_deals.gemspec
CHANGED
|
@@ -12,7 +12,7 @@ Gem::Specification.new do |spec|
|
|
|
12
12
|
spec.summary = %q{It displays popular deals of the day from https://slickdeals.net/deals/ with popular-deals command.}
|
|
13
13
|
#spec.description = %q{This CLI gem displays 100 popular deals with deal rating and price from slickdeals.net/deals. Just use 'popular-deals' command. You can also see a deal details by selecting number of the deal you may be interested in.}
|
|
14
14
|
spec.description = <<-EOF
|
|
15
|
-
This CLI gem displays 100
|
|
15
|
+
This CLI gem displays 5 lists of top 100 deals with ratings and prices from slickdeals.net/deals. Just use 'popular-deals' command.
|
|
16
16
|
|
|
17
17
|
You can also view more details by typing respective deal number.
|
|
18
18
|
EOF
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: popular_deals
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.1.
|
|
4
|
+
version: 1.1.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- "'Hima Chitalia'"
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2017-04-
|
|
11
|
+
date: 2017-04-10 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -81,7 +81,7 @@ dependencies:
|
|
|
81
81
|
- !ruby/object:Gem::Version
|
|
82
82
|
version: '0'
|
|
83
83
|
description: |2
|
|
84
|
-
This CLI gem displays 100
|
|
84
|
+
This CLI gem displays 5 lists of top 100 deals with ratings and prices from slickdeals.net/deals. Just use 'popular-deals' command.
|
|
85
85
|
|
|
86
86
|
You can also view more details by typing respective deal number.
|
|
87
87
|
email:
|
|
@@ -106,6 +106,7 @@ files:
|
|
|
106
106
|
- lib/popular_deals.rb
|
|
107
107
|
- lib/popular_deals/cli.rb
|
|
108
108
|
- lib/popular_deals/newdeals.rb
|
|
109
|
+
- lib/popular_deals/scrapper.rb
|
|
109
110
|
- lib/popular_deals/version.rb
|
|
110
111
|
- popular_deals.gemspec
|
|
111
112
|
- spec.md
|