forked from Southclaws/ScavengeSurvive
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlogmarkov.rb
83 lines (59 loc) · 1.85 KB
/
logmarkov.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
require 'marky_markov'
require 'json'
require 'twitter'
# read settings
file = File.read('logmarkov.cfg')
data = JSON.parse(file)
CONSUMER_KEY = data["consumer_key"]
CONSUMER_SECRET = data["consumer_secret"]
ACCESS_TOKEN = data["access_token"]
ACCESS_SECRET = data["access_secret"]
LOG_DIRECTORY = data["log_directory"]
# compile regex for chat and things to remove
# \[CHAT\] \[(GLOBAL|LOCAL|RADIO|[0-9\.]*)\] \[[a-zA-Z0-9\(\)\[\]\._$=@]*\]: ([a-zA-Z0-9 !"#$%&'()*+,\-./:;<=>?@[\\\]^_`|~]*)
chat = Regexp.new(/\[CHAT\] \[(GLOBAL|LOCAL|RADIO|[0-9\.]*)\] \[[a-zA-Z0-9\(\)\[\]\._$=@]*\]: ([a-zA-Z0-9 !\"#$%&\'()*+,\-.\/:;<=>?@^_`|~]*)/)
colc = Regexp.new(/\{[0-9a-fA-F]{1,8}\}/)
tags = Regexp.new(/(@[0-9])|(&[a-z])/)
# open dict
markov = MarkyMarkov::Dictionary.new('logdict')
if ARGV.length == 0
puts "Params: build, tweet, <number of sentences to print>"
elsif ARGV[0] == "build"
Dir.foreach(LOG_DIRECTORY) do |item|
next if item == '.' or item == '..'
puts "Parsing file " + item + "..."
File.foreach(LOG_DIRECTORY + item) do |line|
c = line.match(chat)
if c != nil and c.length > 2
final_string = c[2].gsub(tags, "").strip
if final_string.split.size > 1
#puts final_string
markov.parse_string final_string
end
end
end
puts "Parsing complete!"
end
markov.save_dictionary!
elsif ARGV[0] == "tweet"
s = markov.generate_1_sentence
puts s
puts "post?"
answer = STDIN.gets.chomp
if answer == "y"
puts "Posting to twitter!"
client = Twitter::REST::Client.new do |config|
config.consumer_key = CONSUMER_KEY
config.consumer_secret = CONSUMER_SECRET
config.access_token = ACCESS_TOKEN
config.access_token_secret = ACCESS_SECRET
end
begin
client.update(s)
rescue => error
puts error.message
end
end
elsif ARGV[0].match(/[0-9]*/)
puts markov.generate_n_sentences(ARGV[0].to_i)
end