Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Clear category for Web Log Sessions by tokiojapan55
import datetime
import re
def checkio(log_text):
logs = dict()
for log in log_text.splitlines():
token = log.lower().split(';;')
timestamp = datetime.datetime.strptime(token[0], '%Y-%m-%d-%H-%M-%S')
username = token[1]
match = re.match('^(http|https)://([^/]+)', token[2])
match = re.match('.*?([^\.]+\.[^\.]+)$', match.group(2))
domain = match.group(1)
if username not in logs:
logs[username] = dict()
if domain not in logs[username]:
logs[username][domain] = list()
logs[username][domain].append(timestamp)
result = []
log = lambda u,d,t: (u,d,int((t[-1]-t[0]).total_seconds()+1),len(t))
for username in sorted(list(logs)):
for domain in sorted(list(logs[username])):
times = []
for timestamp in sorted(logs[username][domain]):
if not times or (timestamp - times[-1]).total_seconds() <= 30*60:
times.append(timestamp)
elif times:
result.append(log(username, domain, times))
times = [timestamp]
if times:
result.append(log(username, domain, times))
return '\n'.join([d[0]+';;'+d[1]+';;'+str(d[2])+';;'+str(d[3]) for d in sorted(result, key=lambda r:r)])
June 18, 2020
Comments: