mirror of
https://github.com/RussellChamp/tilde-projects.git
synced 2026-10-28 00:22:34 +00:00
Add files I forgot
This commit is contained in:
1 parent
5f1bf146c3
commit
772995c0ff
29 files changed
+1807
No files matched your search
@@ -0,0 +1,61 @@
|
||||
#!/usr/bin/python3
|
||||
|
||||
import datetime
|
||||
import fileinput
|
||||
import time
|
||||
import calendar
|
||||
import re
|
||||
import operator
|
||||
from util import nameFix
|
||||
|
||||
MAX_NODES = 5
|
||||
|
||||
logfile = "/home/archangelic/irc/log"
|
||||
timeCutoff = calendar.timegm(time.gmtime()) - (3 * 7 * 24 * 60 * 60) # 3 weeks
|
||||
|
||||
def whoSaid(text):
|
||||
if not text:
|
||||
return "No text given :("
|
||||
else:
|
||||
result = whoSaid_data(text)
|
||||
date = datetime.date.fromtimestamp(result["timecutoff"])
|
||||
dateStr = date.strftime("%B %d")
|
||||
if not result["data"]:
|
||||
msg = "Nobody said '%s' since %s" % (text, dateStr)
|
||||
else:
|
||||
msg = "Since %s, %s said '%s' %d times" % (
|
||||
dateStr,
|
||||
result["data"][0][0],
|
||||
text,
|
||||
result["data"][0][1],
|
||||
)
|
||||
if len(result["data"]) > 1:
|
||||
msg += " and %s said it %d times" % (
|
||||
result["data"][1][0],
|
||||
result["data"][1][1],
|
||||
)
|
||||
return msg
|
||||
|
||||
def whoSaid_data(word):
|
||||
word = word.lower()
|
||||
userData = (
|
||||
{}
|
||||
) # hash keyed by "user" that contains a hash of mentioned other users with count
|
||||
# Get a list of all user names by checking the logs for people who have said things
|
||||
with open(logfile, "r") as log:
|
||||
for line in log:
|
||||
try:
|
||||
time, user, message = line.split("\t", 3)
|
||||
time = int(time)
|
||||
user = nameFix.fixName(user).lower()
|
||||
except ValueError:
|
||||
continue # There are some bad lines in the log file that we'll ignore if we can't parse
|
||||
|
||||
if time > timeCutoff and message[0] is not "!" and word in message.lower():
|
||||
if user in userData:
|
||||
userData[user] += 1
|
||||
else:
|
||||
userData[user] = 1
|
||||
userData = sorted(userData.items(), key=operator.itemgetter(1), reverse=True)
|
||||
return {"timecutoff": timeCutoff, "data": userData}
|
||||
|
||||
Reference in new issue
Block a user