author | Tero Marttila <terom@fixme.fi> |
Tue, 10 Feb 2009 23:59:56 +0200 | |
changeset 88 | 0b8e2ba5f76f |
parent 86 | 645cf9c4441e |
child 90 | 275a675712f1 |
permissions | -rw-r--r-- |
41 | 1 |
""" |
50
f13cf27a360b
implement more LogSource features (logs for date, cleanup last_logs), implement irssi parser, formatter, other misc. stuff
Tero Marttila <terom@fixme.fi>
parents:
46
diff
changeset
|
2 |
An IRC logfile consists of a series of lines/events |
41 | 3 |
""" |
4 |
||
50
f13cf27a360b
implement more LogSource features (logs for date, cleanup last_logs), implement irssi parser, formatter, other misc. stuff
Tero Marttila <terom@fixme.fi>
parents:
46
diff
changeset
|
5 |
class LogTypes : |
f13cf27a360b
implement more LogSource features (logs for date, cleanup last_logs), implement irssi parser, formatter, other misc. stuff
Tero Marttila <terom@fixme.fi>
parents:
46
diff
changeset
|
6 |
""" |
86
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
7 |
Definitions of the various LogLines types: |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
8 |
|
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
9 |
LogTypes.RAW |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
10 |
LogTypes.LOG_OPEN |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
11 |
LogTypes.LOG_CLOSE |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
12 |
|
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
13 |
LogTypes.MSG |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
14 |
LogTypes.NOTICE |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
15 |
LogTypes.ACTION |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
16 |
|
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
17 |
LogTypes.JOIN |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
18 |
LogTypes.PART |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
19 |
LogTypes.KICK |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
20 |
LogTypes.MODE |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
21 |
|
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
22 |
LogTypes.NICK |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
23 |
LogTypes.QUIT |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
24 |
|
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
25 |
LogTypes.TOPIC |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
26 |
|
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
27 |
LogTypes.SELF_NOTICE |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
28 |
LogTypes.SELF_NICK |
50
f13cf27a360b
implement more LogSource features (logs for date, cleanup last_logs), implement irssi parser, formatter, other misc. stuff
Tero Marttila <terom@fixme.fi>
parents:
46
diff
changeset
|
29 |
""" |
86
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
30 |
|
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
31 |
# list of LogType values by name |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
32 |
LIST = [ |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
33 |
## special |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
34 |
# unknown type, may or may not have a timestamp, no source, only data |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
35 |
('RAW', 0x01), |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
36 |
|
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
37 |
# log opened |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
38 |
('LOG_OPEN', 0x02), |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
39 |
|
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
40 |
# log closed |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
41 |
('LOG_CLOSE', 0x03), |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
42 |
|
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
43 |
## messages |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
44 |
# normal message |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
45 |
('MSG', 0x10), |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
46 |
|
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
47 |
# notice |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
48 |
('NOTICE', 0x11), |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
49 |
|
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
50 |
# CTCP action |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
51 |
('ACTION', 0x12), |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
52 |
|
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
53 |
## user-channel stats |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
54 |
# join |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
55 |
('JOIN', 0x21), |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
56 |
|
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
57 |
# part |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
58 |
('PART', 0x22), |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
59 |
|
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
60 |
# kick |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
61 |
('KICK', 0x25), |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
62 |
|
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
63 |
# channel modes |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
64 |
('MODE', 0x26), |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
65 |
|
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
66 |
## user status |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
67 |
# nick-change |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
68 |
('NICK', 0x31), |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
69 |
|
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
70 |
# quit |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
71 |
('QUIT', 0x32), |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
72 |
|
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
73 |
## general channel status |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
74 |
# topic changed |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
75 |
('TOPIC', 0x41), |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
76 |
|
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
77 |
## our own actions |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
78 |
('SELF_NOTICE', 0x51), |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
79 |
('SELF_NICK', 0x52), |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
80 |
] |
50
f13cf27a360b
implement more LogSource features (logs for date, cleanup last_logs), implement irssi parser, formatter, other misc. stuff
Tero Marttila <terom@fixme.fi>
parents:
46
diff
changeset
|
81 |
|
86
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
82 |
@classmethod |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
83 |
def name_from_code (cls, code) : |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
84 |
""" |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
85 |
Looks up a LogType name by code |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
86 |
""" |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
87 |
|
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
88 |
return dict((type, name) for name, type in cls.LIST)[code] |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
89 |
|
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
90 |
# apply as attributes |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
91 |
for name, code in LogTypes.LIST : |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
92 |
setattr(LogTypes, name, code) |
50
f13cf27a360b
implement more LogSource features (logs for date, cleanup last_logs), implement irssi parser, formatter, other misc. stuff
Tero Marttila <terom@fixme.fi>
parents:
46
diff
changeset
|
93 |
|
f13cf27a360b
implement more LogSource features (logs for date, cleanup last_logs), implement irssi parser, formatter, other misc. stuff
Tero Marttila <terom@fixme.fi>
parents:
46
diff
changeset
|
94 |
class LogLine (object) : |
41 | 95 |
""" |
96 |
An event on some specific channel |
|
97 |
""" |
|
98 |
||
86
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
99 |
# the LogChannel |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
100 |
channel = None |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
101 |
|
64
cdb6403c2498
beginnings of a LogSearchIndex class
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
102 |
# the offset, only garunteed to be unique for a specific channel and date |
cdb6403c2498
beginnings of a LogSearchIndex class
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
103 |
offset = None |
cdb6403c2498
beginnings of a LogSearchIndex class
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
104 |
|
50
f13cf27a360b
implement more LogSource features (logs for date, cleanup last_logs), implement irssi parser, formatter, other misc. stuff
Tero Marttila <terom@fixme.fi>
parents:
46
diff
changeset
|
105 |
# the event type, as defiend in LogTypes |
41 | 106 |
type = None |
107 |
||
108 |
# the UTC timestamp of the event |
|
109 |
timestamp = None |
|
110 |
||
86
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
111 |
# the event source, this should be a |
41 | 112 |
source = None |
113 |
||
86
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
114 |
# possible event target, for certain types (kick, nick) |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
115 |
target = None |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
116 |
|
41 | 117 |
# associated data (message, etc) |
118 |
data = None |
|
50
f13cf27a360b
implement more LogSource features (logs for date, cleanup last_logs), implement irssi parser, formatter, other misc. stuff
Tero Marttila <terom@fixme.fi>
parents:
46
diff
changeset
|
119 |
|
86
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
120 |
def __init__ (self, channel, offset, type, timestamp, source, target, data) : |
50
f13cf27a360b
implement more LogSource features (logs for date, cleanup last_logs), implement irssi parser, formatter, other misc. stuff
Tero Marttila <terom@fixme.fi>
parents:
46
diff
changeset
|
121 |
""" |
f13cf27a360b
implement more LogSource features (logs for date, cleanup last_logs), implement irssi parser, formatter, other misc. stuff
Tero Marttila <terom@fixme.fi>
parents:
46
diff
changeset
|
122 |
Initialize with given values |
f13cf27a360b
implement more LogSource features (logs for date, cleanup last_logs), implement irssi parser, formatter, other misc. stuff
Tero Marttila <terom@fixme.fi>
parents:
46
diff
changeset
|
123 |
""" |
64
cdb6403c2498
beginnings of a LogSearchIndex class
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
124 |
|
86
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
125 |
self.channel = channel |
64
cdb6403c2498
beginnings of a LogSearchIndex class
Tero Marttila <terom@fixme.fi>
parents:
50
diff
changeset
|
126 |
self.offset = offset |
50
f13cf27a360b
implement more LogSource features (logs for date, cleanup last_logs), implement irssi parser, formatter, other misc. stuff
Tero Marttila <terom@fixme.fi>
parents:
46
diff
changeset
|
127 |
self.type = type |
f13cf27a360b
implement more LogSource features (logs for date, cleanup last_logs), implement irssi parser, formatter, other misc. stuff
Tero Marttila <terom@fixme.fi>
parents:
46
diff
changeset
|
128 |
self.timestamp = timestamp |
f13cf27a360b
implement more LogSource features (logs for date, cleanup last_logs), implement irssi parser, formatter, other misc. stuff
Tero Marttila <terom@fixme.fi>
parents:
46
diff
changeset
|
129 |
self.source = source |
86
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
130 |
self.target = target |
50
f13cf27a360b
implement more LogSource features (logs for date, cleanup last_logs), implement irssi parser, formatter, other misc. stuff
Tero Marttila <terom@fixme.fi>
parents:
46
diff
changeset
|
131 |
self.data = data |
86
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
132 |
|
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
133 |
def __repr__ (self) : |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
134 |
return "channel=%s, offset=%s, type=%s, timestamp=%s, source=%s, target=%s, data=%s" % ( |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
135 |
self.channel, self.offset, LogTypes.name_from_code(self.type), self.timestamp, self.source, self.target, self.data |
645cf9c4441e
implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents:
64
diff
changeset
|
136 |
) |
50
f13cf27a360b
implement more LogSource features (logs for date, cleanup last_logs), implement irssi parser, formatter, other misc. stuff
Tero Marttila <terom@fixme.fi>
parents:
46
diff
changeset
|
137 |