dunossauro / dunossauro/live-de-python

[Sugestão] Live sobre - Estruturação Logs de eventos usando Python

Open
#395 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
1.3k
Forks
217
PR merge metrics
No merged PRs in 30d

Description

Olá, Eduardo!

Venho me dedicando a um projeto que acredito ser fascinante: transformar logs complexos do World of Warcraft em estruturas JSON compreensíveis. A proposta é criar um processo que facilite a análise desses dados, e penso que uma live abordando esse desafio seria extremamente enriquecedora.

Os logs que estou analisando são compostos por múltiplos blocos de informações, semelhantes a um quebra-cabeça com várias peças distintas. Por exemplo, veja uma linha de log abaixo:

```lua
['COMBATANT_INFO', 'Player-4587-0WEBX871', '0', '371', '1772', '3133', '306', '0', '0', '0', '533', '533', '533', '0', '0', '332', '332', '332', '0', '523', '799', '799', '799', '740', '577', '[(91008@112928@1)', '(91018@112939@1)', '(91030@112953@1)', '(91007@112927@1)', '(90914@112823@1)', '(90925@112834@1)', '(90932@112842@1)', '(90941@112852@2)', '(91028@112951@2)', '(90940@112851@1)', '(91015@112936@2)', '(90933@112844@1)', '(90922@112831@1)', '(90936@112847@2)', '(90921@112830@1)', '(91026@112949@2)', '(91003@112923@1)', '(90993@112911@1)', '(91027@112950@1)', '(90992@112909@1)', '(90938@112849@1)', '(90915@112824@1)', '(90935@112846@2)', '(91002@112921@1)', '(90927@112837@1)', '(90926@112836@1)', '(91000@112918@2)', '(91004@112924@2)', '(91006@112926@1)', '(90924@112833@1)', '(90934@112845@1)', '(90939@112850@1)', '(90948@112861@1)', '(91019@112940@1)', '(90920@112829@2)', '(91014@112935@1)', '(90916@112825@2)', '(90917@112826@1)', '(90918@112827@1)', '(90919@112828@1)', '(91013@112934@1)', '(90942@112853@1)]', '(0@356510@205604@213480)', '[4', '4', '[]', '[(1122)', '(1123)', '(1124)', '(1126)', '(1128)', '(1130)', '(1135)', '(1136)', '(1819)', '(1821)', '(1823)', '(1824)]', '[(151@226)', '(130@226)', '(131@226)', '(153@226)', '(200@226)', '(135@226)]]', '[(193800', '278', '()', '(9158@6652@7937@1500@4785)', '())', '(199383', '252', '()', '(6652@7578@8936)', '())', '(199361', '252', '()', '(6652@8936)', '())', '(0', '0', '()', '()', '())', '(172250', '262', '()', '(6893@7881@7960)', '())', '(199362', '252', '()', '(6652@7578@8936)', '())', '(190627', '252', '()', '(7189@8133@8116@6652@1498@6646)', '())', '(192327', '281', '()', '(8302@1576@6646)', '())', '(199363', '252', '()', '(6652@7578@8936)', '())', '(199358', '252', '()', '(6652@8936)', '())', '(192391', '265', '()', '(8290@1543@6616)', '())', '(199381', '252', '()', '(6652@7578@8936)', '())', '(192412', '265', '()', '(8290@1543@6616)', '())', '(188775', '262', '()', '(7534@1521@6646)', '())', '(199384', '252', '()', '(6652@8936)', '())', '(201305', '278', '()', '(6652)', '())', '(199416', '252', '()', '(6652@8936)', '())', '(0', '0', '()', '()', '())]', '[]', '90', '0', '863', '312']

```

Aqui, cada conjunto de parênteses representa os talentos do personagem dentro do jogo, com números que codificam informações específicas. O desafio é como segmentar e extrair esses dados de maneira eficiente e precisa.

Além disso, os logs apresentam variações significativas, que podem incluir ainda mais camadas de complexidade. Por exemplo, do agrupamento dos talentos do personagem:

```lua
'[(91008@112928@1)', '(91018@112939@1)', '(91030@112953@1)', '(91007@112927@1)', '(90914@112823@1)', '(90925@112834@1)', '(90932@112842@1)', '(90941@112852@2)', '(91028@112951@2)', '(90940@112851@1)', '(91015@112936@2)', '(90933@112844@1)', '(90922@112831@1)', '(90936@112847@2)', '(90921@112830@1)', '(91026@112949@2)', '(91003@112923@1)', '(90993@112911@1)', '(91027@112950@1)', '(90992@112909@1)', '(90938@112849@1)', '(90915@112824@1)', '(90935@112846@2)', '(91002@112921@1)', '(90927@112837@1)', '(90926@112836@1)', '(91000@112918@2)', '(91004@112924@2)', '(91006@112926@1)', '(90924@112833@1)', '(90934@112845@1)', '(90939@112850@1)', '(90948@112861@1)', '(91019@112940@1)', '(90920@112829@2)', '(91014@112935@1)', '(90916@112825@2)', '(90917@112826@1)', '(90918@112827@1)', '(90919@112828@1)', '(91013@112934@1)', '(90942@112853@1)]
```

Essa parte do agrupamento corresponde aos atributos básicos do player, como força, inteligencia, estamina e etc...
Existe uma ordem específica de apresentação, porem o número dos elementos podem variar, observe abaixo os atributos básicos:

```lua
'0', '371', '1772', '3133', '306', '0', '0', '0', '533', '533', '533', '0', '0', '332', '332', '332', '0', '523', '799', '799', '799', '740',
```

Aqui a ordem que se encontra cada atributo:
> COMBATANT_INFO,playerGUID,Strength,Agility,Stamina,Intelligence,Dodge,Parry,Block,CritMelee,CritRanged,CritSpell,Speed,Lifesteal,HasteMelee,HasteRanged,HasteSpell,Avoidance,Mastery,VersatilityDamageDone,VersatilityHealingDone,VersatilityDamageTaken,Armor,CurrentSpecID,(Class Talent 1, ...),(PvP Talent 1, ...),[Artifact Trait ID 1, Trait Effective Level 1, ...],[(Equipped Item ID 1,Equipped Item iLvL 1,(Permanent Enchant ID, Temp Enchant ID, On Use Spell Enchant ID),(Bonus List ID 1, ...),(Gem ID 1, Gem iLvL 1, ...)) ...],[Interesting Aura Caster GUID 1, Interesting Aura Spell ID 1, ...]

Informaceos mais completas sobre com os atributos do log encontrasse na documentação: [https://wowpedia.fandom.com/wiki/COMBAT_LOG_EVENT](url)

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.