home
·
contact
·
privacy
projects
/
plomlombot-irc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Dumbify log format, fix overlong quote notices.
[plomlombot-irc.git]
/
plomlombot.py
diff --git
a/plomlombot.py
b/plomlombot.py
index 7f412ea63d5505e11f68b90893c515cbdbe129e4..73533840403165d2251479d6b2c4e3e2239b79f5 100755
(executable)
--- a/
plomlombot.py
+++ b/
plomlombot.py
@@
-96,18
+96,16
@@
class IO:
def handle_command(command, argument, notice, target, session):
def handle_command(command, argument, notice, target, session):
- hash_string = hashlib.md5(target.encode("utf-8")).hexdigest()
- quotesfile_name = session.dbdir + "/quotes_" + hash_string
def addquote():
def addquote():
- if not os.access(
quotesfile_nam
e, os.F_OK):
- quotesfile = open(
quotesfile_nam
e, "w")
+ if not os.access(
session.quotesfil
e, os.F_OK):
+ quotesfile = open(
session.quotesfil
e, "w")
quotesfile.write("QUOTES FOR " + target + ":\n")
quotesfile.close()
quotesfile.write("QUOTES FOR " + target + ":\n")
quotesfile.close()
- quotesfile = open(
quotesfile_nam
e, "a")
+ quotesfile = open(
session.quotesfil
e, "a")
quotesfile.write(argument + "\n")
quotesfile.close()
quotesfile.write(argument + "\n")
quotesfile.close()
- quotesfile = open(
quotesfile_nam
e, "r")
+ quotesfile = open(
session.quotesfil
e, "r")
lines = quotesfile.readlines()
quotesfile.close()
notice("ADDED QUOTE #" + str(len(lines) - 1))
lines = quotesfile.readlines()
quotesfile.close()
notice("ADDED QUOTE #" + str(len(lines) - 1))
@@
-132,10
+130,10
@@
def handle_command(command, argument, notice, target, session):
(tokens[0] == "search" or not tokens[0].isdigit())):
help()
return
(tokens[0] == "search" or not tokens[0].isdigit())):
help()
return
- if not os.access(
quotesfile_nam
e, os.F_OK):
+ if not os.access(
session.quotesfil
e, os.F_OK):
notice("NO QUOTES AVAILABLE")
return
notice("NO QUOTES AVAILABLE")
return
- quotesfile = open(
quotesfile_nam
e, "r")
+ quotesfile = open(
session.quotesfil
e, "r")
lines = quotesfile.readlines()
quotesfile.close()
lines = lines[1:]
lines = quotesfile.readlines()
quotesfile.close()
lines = lines[1:]
@@
-156,11
+154,12
@@
def handle_command(command, argument, notice, target, session):
notice("NO QUOTES MATCHING QUERY")
else:
for result in results:
notice("NO QUOTES MATCHING QUERY")
else:
for result in results:
- notice("QUOTE #" + str(result[0] + 1) + " : " + result[1])
+ notice("QUOTE #" + str(result[0] + 1) + " : "
+ + result[1][-1])
return
else:
i = random.randrange(len(lines))
return
else:
i = random.randrange(len(lines))
- notice("QUOTE #" + str(i + 1) + ": " + lines[i])
+ notice("QUOTE #" + str(i + 1) + ": " + lines[i]
[:-1]
)
def markov():
from random import choice, shuffle
def markov():
from random import choice, shuffle
@@
-186,14
+185,12
@@
def handle_command(command, argument, notice, target, session):
selection = choice(usable_selections)
return selection[select_length]
selection = choice(usable_selections)
return selection[select_length]
- hash_string = hashlib.md5(target.encode("utf-8")).hexdigest()
- markovfeed_name = session.dbdir + "/markovfeed_" + hash_string
- if not os.access(markovfeed_name, os.F_OK):
+ if not os.access(session.markovfile, os.F_OK):
notice("NOT ENOUGH TEXT TO MARKOV.")
return
# Lowercase incoming lines, ensure they end in a sentence end mark.
notice("NOT ENOUGH TEXT TO MARKOV.")
return
# Lowercase incoming lines, ensure they end in a sentence end mark.
- file = open(
markovfeed_nam
e, "r")
+ file = open(
session.markovfil
e, "r")
lines = file.readlines()
file.close()
tokens = []
lines = file.readlines()
file.close()
tokens = []
@@
-345,10
+342,13
@@
class Session:
self.io.send_line("NICK " + self.nickname)
self.io.send_line("USER " + username + " 0 * : ")
self.io.send_line("JOIN " + self.channel)
self.io.send_line("NICK " + self.nickname)
self.io.send_line("USER " + username + " 0 * : ")
self.io.send_line("JOIN " + self.channel)
- hash_string = hashlib.md5(self.channel.encode("utf-8")).hexdigest()
- self.logdir = self.dbdir + "/irclogs_" + hash_string + "/"
+ hash_channel = hashlib.md5(self.channel.encode("utf-8")).hexdigest()
+ self.chandir = self.dbdir + "/" + hash_channel + "/"
+ self.logdir = self.chandir + "logs/"
if not os.path.exists(self.logdir):
os.makedirs(self.logdir)
if not os.path.exists(self.logdir):
os.makedirs(self.logdir)
+ self.markovfile = self.chandir + "markovfeed"
+ self.quotesfile = self.chandir + "quotes"
def loop(self):
def loop(self):
@@
-364,7
+364,9
@@
class Session:
def handle_input(msg, target):
def notice(msg):
def handle_input(msg, target):
def notice(msg):
- self.io.send_line("NOTICE " + target + " :" + msg)
+ line = "NOTICE " + target + " :" + msg
+ self.io.send_line(line)
+ log(line)
matches = re.findall("(https?://[^\s>]+)", msg)
for i in range(len(matches)):
matches = re.findall("(https?://[^\s>]+)", msg)
for i in range(len(matches)):
@@
-374,9
+376,7
@@
class Session:
argument = str.join(" ", tokens[1:])
handle_command(tokens[0], argument, notice, target, self)
return
argument = str.join(" ", tokens[1:])
handle_command(tokens[0], argument, notice, target, self)
return
- hash_string = hashlib.md5(target.encode("utf-8")).hexdigest()
- markovfeed_name = self.dbdir + "/markovfeed_" + hash_string
- file = open(markovfeed_name, "a")
+ file = open(self.markovfile, "a")
file.write(msg + "\n")
file.close()
file.write(msg + "\n")
file.close()
@@
-396,8
+396,6
@@
class Session:
if receiver != self.nickname:
target = receiver
msg = str.join(" ", tokens[3:])[1:]
if receiver != self.nickname:
target = receiver
msg = str.join(" ", tokens[3:])[1:]
- if target == self.channel:
- log("<" + sender + "> " + msg)
handle_input(msg, target)
def name_from_join_or_part(tokens):
handle_input(msg, target)
def name_from_join_or_part(tokens):
@@
-412,6
+410,7
@@
class Session:
line = self.io.recv_line()
if not line:
continue
line = self.io.recv_line()
if not line:
continue
+ log(line)
tokens = line.split(" ")
if len(tokens) > 1:
if tokens[0] == "PING":
tokens = line.split(" ")
if len(tokens) > 1:
if tokens[0] == "PING":
@@
-424,18
+423,13
@@
class Session:
for i in range(len(names)):
names[i] = names[i].replace("@", "").replace("+", "")
self.users_in_chan += names
for i in range(len(names)):
names[i] = names[i].replace("@", "").replace("+", "")
self.users_in_chan += names
- log(line)
elif tokens[1] == "JOIN":
name = name_from_join_or_part(tokens)
if name != self.nickname:
self.users_in_chan += [name]
elif tokens[1] == "JOIN":
name = name_from_join_or_part(tokens)
if name != self.nickname:
self.users_in_chan += [name]
- log(line)
elif tokens[1] == "PART":
name = name_from_join_or_part(tokens)
del(self.users_in_chan[self.users_in_chan.index(name)])
elif tokens[1] == "PART":
name = name_from_join_or_part(tokens)
del(self.users_in_chan[self.users_in_chan.index(name)])
- log(line)
- else:
- log(line)
def parse_command_line_arguments():
def parse_command_line_arguments():
@@
-471,8
+465,10
@@
opts = parse_command_line_arguments()
while True:
try:
io = IO(opts.server, opts.port, opts.timeout)
while True:
try:
io = IO(opts.server, opts.port, opts.timeout)
+ hash_server = hashlib.md5(opts.server.encode("utf-8")).hexdigest()
+ dbdir = opts.dbdir + "/" + hash_server
session = Session(io, opts.username, opts.nickname, opts.CHANNEL,
session = Session(io, opts.username, opts.nickname, opts.CHANNEL,
- opts.twtfile,
opts.
dbdir)
+ opts.twtfile, dbdir)
session.loop()
except ExceptionForRestart:
io.socket.close()
session.loop()
except ExceptionForRestart:
io.socket.close()