mirror of
https://github.com/RussellChamp/tilde-projects.git
synced 2026-10-28 00:22:34 +00:00
Chatstats work
This commit is contained in:
1 parent
86916fb5fa
commit
b54b79feae
5 files changed
+107
-18
No files matched your search
@@ -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:
|
||||
|
||||
Reference in new issue
Block a user