Class: Amazon2irc::Process

Inherits:
Object
  • Object
show all
Defined in:
lib/amazon2irc.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(opts) ⇒ Process

Returns a new instance of Process.



12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/amazon2irc.rb', line 12

def initialize opts
  @opts = opts
  @items = []
  init_persistent_array
  connect
  wait
  loop do
    scanning if @opts['rss']
    spidering if @opts['spidering']
    write_persistent_array
    sleep @opts['scan-delay']
  end

end

Instance Attribute Details

#connObject

Returns the value of attribute conn.



11
12
13
# File 'lib/amazon2irc.rb', line 11

def conn
  @conn
end

Instance Method Details

#connectObject



44
45
46
47
48
49
50
51
52
# File 'lib/amazon2irc.rb', line 44

def connect
  @conn = TCPSocket.open(@opts['server'], @opts['port'])
  print("addr: ", @conn.addr.join(":"), "\n")
  print("peer: ", @conn.peeraddr.join(":"), "\n")
  @conn.puts "USER testing 0 * Testing"
  @conn.puts "NICK #{@opts['botnick']}"
  @conn.puts "JOIN #{@opts['channel']}"
  @conn.puts "PRIVMSG #{@opts['channel']} :Bot Scanning: #{@opts['keywords'].flatten}"
end

#init_persistent_arrayObject



27
28
29
30
31
32
33
34
# File 'lib/amazon2irc.rb', line 27

def init_persistent_array
  unless File.exist? File.expand_path "store.yml"
    open('store.yml', 'w') {|f| YAML.dump(@items, f)}
  else
    @items = load_persistent_array
  end
  
end

#irc_logger(item) ⇒ Object



107
108
109
# File 'lib/amazon2irc.rb', line 107

def irc_logger item
  @conn.puts "PRIVMSG #{@opts['channel']} :#{item.title} - #{item.link}&tag=jaycorpinc-20&camp=1789&linkCode=xm2"           
end

#irc_logger2(item) ⇒ Object



111
112
113
# File 'lib/amazon2irc.rb', line 111

def irc_logger2 item
  @conn.puts "PRIVMSG #{@opts['channel']} :#{item}/ref=sr_1_2?s=prime-day&psr=PDAY&ie=UTF8&qid=1499752396&sr=1-2&keywords=&tag=jaycorpinc-20&camp=1789&linkCode=xm2"           
end

#kw_match(item) ⇒ Object



97
98
99
100
101
102
103
104
105
# File 'lib/amazon2irc.rb', line 97

def kw_match item
  @opts['keywords'].each do |kw| 
    if item.title.downcase.include? kw.downcase
        irc_logger(item)
        @items.push("#{item.title}")
        sleep @opts['chat-delay']
      end
    end
end

#load_persistent_arrayObject



36
37
38
# File 'lib/amazon2irc.rb', line 36

def load_persistent_array
  @items = open('store.yml') {|f| YAML.load(f) }
end

#parse(items) ⇒ Object



89
90
91
92
93
94
95
# File 'lib/amazon2irc.rb', line 89

def parse items
  items.each do |item|
    unless @items.include? "#{item.title}"
      kw_match(item)
     end 
  end
end

#pullDealsObject



84
85
86
87
# File 'lib/amazon2irc.rb', line 84

def pullDeals
  rss = RSS::Parser.parse('https://rssfeeds.s3.amazonaws.com/goldbox', false)
  rss.items
end

#scanningObject



62
63
64
65
# File 'lib/amazon2irc.rb', line 62

def scanning
  parse(pullDeals)
  @conn.puts "PRIVMSG #{@opts['channel']} :Bot Scanned: #{@opts['keywords'].flatten}"
end

#spideringObject



68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/amazon2irc.rb', line 68

def spidering
  @opts['keywords'].each do |item|
    @conn.puts "PRIVMSG #{@opts['channel']} :Bot Spidering: #{item}"
    AmazonMechanize.scan(item).each do |res|
      unless @items.include? res
        irc_logger2(res)
        @items.push("#{res}")
          sleep @opts['chat-delay']

      end
    end
    @conn.puts "PRIVMSG #{@opts['channel']} :Bot Spidered: #{item}"
  end

end

#waitObject



54
55
56
57
58
59
# File 'lib/amazon2irc.rb', line 54

def wait
  (1..10).each do |i|
    msg = @conn.gets
    puts msg
  end  
end

#write_persistent_arrayObject



40
41
42
# File 'lib/amazon2irc.rb', line 40

def write_persistent_array
  open('store.yml', 'w') {|f| YAML.dump(@items, f)}
end