amazon2irc 7.10.2017.1853 → 7.11.2017.056
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/amazon2irc/version.rb +1 -1
- data/lib/amazon2irc.rb +61 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5989179a00b4f3bddb361dcef8b9d39e828dc675
|
4
|
+
data.tar.gz: 6a5a949d2b6f44eebef88aa7e91f5ceeab03e338
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9e0ad42c2fdbde497391e8802616318ab99744d361304fce9e267d32402f1856e6302ab1609a0aee83031822cde85fe4749f484992bb8e178890d35c714f49f0
|
7
|
+
data.tar.gz: 79c29155aa4fad50836c95f463df757eb5bc1eacff191c9189550df6865fbe3820f5bb02777f46d0c834ad6b9d3d91b4a3bb86a66c43496f8f4eaf183da8f32c
|
data/lib/amazon2irc/version.rb
CHANGED
data/lib/amazon2irc.rb
CHANGED
@@ -15,6 +15,7 @@ module Amazon2irc
|
|
15
15
|
wait
|
16
16
|
loop do
|
17
17
|
scanning
|
18
|
+
spidering
|
18
19
|
write_persistent_array
|
19
20
|
sleep @opts['scan-delay']
|
20
21
|
end
|
@@ -61,6 +62,19 @@ module Amazon2irc
|
|
61
62
|
@conn.puts "PRIVMSG #{@opts['channel']} :Bot Scanned: #{@opts['keywords'].flatten}"
|
62
63
|
end
|
63
64
|
|
65
|
+
|
66
|
+
def spidering
|
67
|
+
@opts['keywords'].each do |item|
|
68
|
+
AmazonMechanize.scan(item).each do |res|
|
69
|
+
unless @items.include? res
|
70
|
+
irc_logger2(res)
|
71
|
+
@items.push("#{res}")
|
72
|
+
sleep @opts['chat-delay']
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
64
78
|
def pullDeals
|
65
79
|
rss = RSS::Parser.parse('https://rssfeeds.s3.amazonaws.com/goldbox', false)
|
66
80
|
rss.items
|
@@ -87,5 +101,52 @@ module Amazon2irc
|
|
87
101
|
def irc_logger item
|
88
102
|
@conn.puts "PRIVMSG #{@opts['channel']} :#{item.title} - #{item.link}"
|
89
103
|
end
|
104
|
+
|
105
|
+
def irc_logger2 item
|
106
|
+
@conn.puts "PRIVMSG #{@opts['channel']} :#{item}"
|
107
|
+
end
|
90
108
|
end
|
109
|
+
|
110
|
+
|
111
|
+
|
112
|
+
|
113
|
+
|
114
|
+
class AmazonMechanize
|
115
|
+
def self.scan keyword
|
116
|
+
begin
|
117
|
+
agent = Mechanize.new
|
118
|
+
agent.max_history = nil # unlimited history
|
119
|
+
html = agent.get("https://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Dprime-day&field-keywords=#{keyword}")
|
120
|
+
items = []
|
121
|
+
loop do
|
122
|
+
doc = Nokogiri::HTML::Document.parse(html.body)
|
123
|
+
|
124
|
+
doc.xpath('//*[@class="s-item-container"]').each do |item|
|
125
|
+
last_title=''
|
126
|
+
offer_link=''
|
127
|
+
item.css('a').each do |a|
|
128
|
+
last_title=a['title'] unless a['title'].to_s.length == 0
|
129
|
+
offer_link = a['href'] unless (a.to_s.length == 0 || (a['href'].include?("offer")) || (a['href'].include?("Reviews")) || (a['href'].include?("void(0)")) || (a['href'].include?("Promotions")) )
|
130
|
+
end
|
131
|
+
items.push("#{last_title} : #{offer_link}")
|
132
|
+
end
|
133
|
+
|
134
|
+
next_page=false
|
135
|
+
html.links.each do |l|
|
136
|
+
next_page=true if l.text.include? 'Next Page'
|
137
|
+
sleep 3 if l.text.include? 'Next Page'
|
138
|
+
html = l.click if ((l.text.include? 'Next Page') && (l.href.to_s.length > 10))
|
139
|
+
next if l.text.include? 'Next Page'
|
140
|
+
end
|
141
|
+
return items if next_page == false
|
142
|
+
end
|
143
|
+
rescue => error
|
144
|
+
sleep 10
|
145
|
+
puts "Error! #{error}"
|
146
|
+
retry
|
147
|
+
end
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
151
|
+
|
91
152
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: amazon2irc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 7.
|
4
|
+
version: 7.11.2017.056
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- jlee
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-07-
|
11
|
+
date: 2017-07-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|