Chatstats work

This commit is contained in:
RussellChamp committed 2016-01-11 16:26:15 -05:00
1 parent 86916fb5fa
commit b54b79feae
5 files changed
+107 -18

No files matched your search

+2 -1
View File
@@ -1,4 +1,5 @@
endorphant&^%68
krowbar&^%119
krowbar&^%142
karlen&^%2
jumblesal&^%37
marcus&^%28
+9 -2
View File
@@ -3,13 +3,14 @@ import random
import inflect
p = inflect.engine()
primes = [11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71]
def make_puzzle():
answer = 0
puzzle = random.choice(["Prove you're not a robot: ", "Are you a robot?: ", "Anti-bot check: ", "Counter-cndorphant measures: "])
puzzle += random.choice(["What is", "How many is", "What do you get from", "What do you get with", "What is the value of", "Can you answer", "Can you tell me"])
puzzle += " "
roll = random.randrange(0,4)
roll = random.randrange(0,6)
var1 = random.randrange(1,10)
var2 = random.randrange(1,10)
@@ -31,8 +32,14 @@ def make_puzzle():
answer = var1 * 2 / var2
puzzle += p.number_to_words(var1*2) + " " + random.choice(["divided by", "over"]) + " " + p.number_to_words(var2) + " (no remainder)"
elif roll == 4:
answer == var1 ** var2
answer = var1 ** var2
puzzle += p.number_to_words(var1) + " to the " + p.ordinal(p.number_to_words(var2)) + " power"
elif roll == 5:
p1 = primes[random.randrange(0,len(primes))]
p2 = primes[random.randrange(0,len(primes))]
answer = str(p1) + ',' + str(p2)
puzzle += p.number_to_words(p1 * p2) + " when factored into its two primes (answer in the form of the two primes with a comman between)"
puzzle += "? (Answer with numbers)"
return [answer, puzzle]
+6 -3
View File
@@ -1,8 +1,8 @@
krowbar&^%292&^%1452094972
krowbar&^%336&^%1452540446
karlen&^%272&^%1449500011
endorphant&^%682&^%1444775660
jumblesale&^%24&^%1426171214
marcus&^%826&^%1452092376
marcus&^%834&^%1452521269
papa&^%179&^%1438878499
epicmorphism&^%5&^%1421937744
audy&^%78&^%1442345315
@@ -14,7 +14,7 @@ cndorphant&^%788&^%1424094192
rain&^%17&^%1422310975
sl2c&^%91&^%1424847521
selfsame&^%1&^%1422230012
bear&^%220&^%1452096373
bear&^%223&^%1452518640
coaxial&^%8&^%1422325983
joe&^%8&^%1422325983
hardmath123&^%4&^%1422325983
@@ -33,3 +33,6 @@ cndorphbo&^%2&^%1447862524
santi&^%3&^%1447873216
insom&^%1&^%1450346059
tahnok&^%3&^%1450457276
nilsding&^%8&^%1452449452
vypr&^%3&^%1452470872
synergian&^%1&^%1452541847
+51
View File
@@ -8,17 +8,46 @@ import shutil
logfile = "/home/jumblesale/Code/irc/log"
outfile = "/home/krowbar/logs/chatStats.json"
userData = {} #hash keyed by "user" that contains a start timestamp, last timestamp, last said string, chat count, letter count, and word count
nameFix = {
'jumblesal': 'jumblesale',
'hardmath1': 'kc',
'hardmath123': 'kc',
'bendorphan': 'endorphant',
'endorphan': 'endorphant',
'synergian': 'synergiance'
}
with open(logfile, "r") as log:
lastUser = "";
currentStreak = 1
for line in log:
try:
time, user, message = line.split("\t", 3)
time = int(time)
if nameFix.has_key(user):
user = nameFix[user]
else:
user = user.lower()
except ValueError:
continue #There are some bad lines in the log file that we'll ignore if we can't parse
if user in userData:
day = time / 86400 #seconds in a day
if userData[user]['startTime'] == 0:
userData[user]['startTime'] = time
if userData[user]['lastDay'] != day:
userData[user]['daysActive'] += 1
userData[user]['lastDay'] = day
if lastUser == user:
currentStreak += 1
if currentStreak > userData[user]['streak']:
userData[user]['streak'] = currentStreak
else:
currentStreak = 1
if userData[user]['lastMention']:
resTime = time - userData[user]['lastMention']
userData[user]['responseTime'] += min(resTime, 7200) #cap the value at 2hrs, things get skewed toward the high end otherwise
userData[user]['lastMention'] = 0
userData[user]['endTime'] = time
#userData[user]['lastSaid'] = message
userData[user]['lineCount'] += 1
@@ -32,6 +61,28 @@ with open(logfile, "r") as log:
userData[user]['lineCount'] = 1
userData[user]['wordCount'] = len(message.split())
userData[user]['charCount'] = len(message)
userData[user]['daysActive'] = 1
userData[user]['lastDay'] = time / 86400
userData[user]['streak'] = 1
userData[user]['mentions'] = 0
userData[user]['lastMention'] = 0
userData[user]['responseTime'] = 0
userData[user]['botUse'] = 0
lastUser = user;
if message.rstrip() and message[0] == '!':
userData[user]['botUse'] += 1
try:
if message.rstrip() and message.split()[0][-1] == ':': #last character of first word
name = message.split()[0][0:-1]
if user != name and userData.has_key(name):
userData[name]['mentions'] += 1
if not userData[name]['lastMention']:
userData[name]['lastMention'] = time
except IndexError:
print '##' + message + '##'
continue
with open(outfile + ".tmp", "w") as tmpFile: