You could have an addon as simple as
local Player
local function LogEvent(event, ...)
tinsert(Blitzvogel_DATA[Player], { time=GetTime(), event=event, playload = {...}, })
end
local f = CreateFrame("Frame")
f:RegisterEvent("PLAYER_LOGIN")
f:SetScript("OnEvent", function(self, event, ...)
Player = UnitName("player") .. "-" .. GetRealmName()
Blitzvogel_DATA = Blitzvogel_DATA or {}
Blitzvogel_DATA[Player] = Blitzvogel_DATA[Player] or {}
hooksecurefunc("ChatFrame_OnEvent", function(self, event, ...)
if event == "CHAT_MSG_SKILL" then
LogEvent(event, ...)
-- or maybe something different
elseif event == "CHAT_MSG_LOOT" or event == "CHAT_MSG_CURRENCY" then
LogEvent(event, ...)
-- or maybe something different
end
end)
end)
and end up with a SavedVariables file (on logout) looking like:
Blitzvogel_DATA = {
["Blitzvogel-Azjol-Nerub"] = {
[1] = {
["playload"] = {
"You receive currency: |cffffffff|Hcurrency:2778:0|h[Bronze]|h|rx2",
"",
"",
"",
"",
"",
0,
0,
"",
0,
33,
[1] = nil,
0,
false,
false,
false,
false,
},
["time"] = 82961.849,
["event"] = "CHAT_MSG_CURRENCY",
},
[2] = {
["playload"] = {
"You receive loot: |cff1eff00|Hitem:220367::::::::13:64:::::::::|h[Chipped Stalwart Pearl]|h|r",
"Akala-AzjolNerub",
"",
"",
"Akala-AzjolNerub",
"",
0,
0,
"",
0,
37,
"Player-121-0ACC1109",
0,
false,
false,
false,
false,
},
["time"] = 82983.791,
["event"] = "CHAT_MSG_LOOT",
},
},
}
Which has a timestamp, event name and payload information for your Python script to process.