Skip to content

Commit e454b84

Browse files
authored
Merge pull request #6 from DataStrike/5-featureconnect_python_to_adonis
5 featureconnect python to adonis
2 parents 869edb5 + 6428866 commit e454b84

File tree

10 files changed

+72
-61
lines changed

10 files changed

+72
-61
lines changed

deploy/docker-compose.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ services:
1313
depends_on:
1414
- zookeeper
1515
ports:
16-
- 29093:29092
16+
- 29092:29092
1717
environment:
1818
KAFKA_BROKER_ID: 1
1919
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181

src/kafka_lib.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,6 @@ def __init__(self, url, date=None, nb_try_connection=10):
1818
self.date = date
1919
self.nb_try_connection = nb_try_connection
2020

21-
22-
2321
self.init_producer_ok, self.producer = self.init_producer(url)
2422
self.queue_sender = queue.Queue(2)
2523

src/log_analyser/log_analyser.py

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import os
22
from datetime import datetime, timedelta
3-
from objects.match import Match
3+
from log_analyser.objects.map import Map
44

55

66
class LogAnalyser:
@@ -12,9 +12,9 @@ def __init__(self, path_csv, name) -> None:
1212

1313
self.date = self.name2datetime()
1414

15-
self.match = None
15+
self.map = None
1616

17-
self.actions = {"match_start": self.process_match_start}
17+
self.actions = {"match_start": self.process_map_start}
1818

1919
def run(self):
2020

@@ -29,8 +29,8 @@ def run(self):
2929
if type in self.actions:
3030
self.actions[type](line_split)
3131

32-
with open("../logs_process/{}.json".format(self.name.split(".")[0]), "w") as file:
33-
file.write(self.match.export_json())
32+
# with open("../logs_process/{}.json".format(self.name.split(".")[0]), "w") as file:
33+
# file.write(self.map.export_json())
3434

3535

3636
def name2datetime(self):
@@ -40,9 +40,9 @@ def name2datetime(self):
4040

4141
return date_object
4242

43-
def process_match_start(self, data):
43+
def process_map_start(self, data):
4444

45-
self.match = Match.from_json({"rounds": [],
45+
self.map = Map.from_json({"rounds": [],
4646
"date": self.date,
4747
"map_name": data[3],
4848
"map_type": data[4],
@@ -52,30 +52,30 @@ def process_match_start(self, data):
5252
"score_team2": 0,
5353
})
5454

55-
self.actions = {"match_start": self.process_match_start,
56-
"round_start": self.match.add_round,
57-
"round_end": self.match.end_round,
55+
self.actions = {"match_start": self.process_map_start,
56+
"round_start": self.map.add_round,
57+
"round_end": self.map.end_round,
5858
"hero_spawn": self.process_hero_spawn,
5959
"hero_swap": self.process_hero_swap,
60-
"kill": self.match.add_kill,
61-
"ultimate_charged": self.match.add_ultimate_charged,
62-
"ultimate_start": self.match.add_ultimate_start,
63-
"ultimate_end": self.match.add_ultimate_end,
64-
"objective_captured": self.match.add_objective_captured,
65-
"player_stat": self.match.add_player_stat,
66-
"point_progress": self.match.add_objective_progress,
67-
"payload_progress": self.match.add_objective_progress,
60+
"kill": self.map.add_kill,
61+
"ultimate_charged": self.map.add_ultimate_charged,
62+
"ultimate_start": self.map.add_ultimate_start,
63+
"ultimate_end": self.map.add_ultimate_end,
64+
"objective_captured": self.map.add_objective_captured,
65+
"player_stat": self.map.add_player_stat,
66+
"point_progress": self.map.add_objective_progress,
67+
"payload_progress": self.map.add_objective_progress,
6868
}
6969

7070
def process_hero_spawn(self, data):
7171

7272
player_data = {"time": data[2], "team_name": data[3], "player_name": data[4], "character_name": data[5]}
73-
self.match.add_player(player_data)
73+
self.map.add_player(player_data)
7474

7575
def process_hero_swap(self, data):
7676

7777
hero_data = {"time": data[2], "team_name": data[3], "player_name": data[4], "character_name": data[5], "character_swap": data[6]}
78-
self.match.add_hero_swap(hero_data)
78+
self.map.add_hero_swap(hero_data)
7979

8080
def convert_timefile_to_datetime(self, time_string):
8181

@@ -87,11 +87,11 @@ def convert_timefile_to_datetime(self, time_string):
8787
return duration
8888

8989

90-
for file in os.listdir("../logs"):
91-
if file.endswith(".txt"):
92-
print(file)
93-
la = LogAnalyser('../logs/{}'.format(file), file)
94-
la.run()
90+
# for file in os.listdir("../logs"):
91+
# if file.endswith(".txt"):
92+
# print(file)
93+
# la = LogAnalyser('../logs/{}'.format(file), file)
94+
# la.run()
9595

9696
# la = LogAnalyser('../logs/Log-2023-12-22-21-12-32.txt', "Log-2023-12-22-21-12-32.txt")
9797
# la.run()

src/log_analyser/objects/character.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from objects.object import Object
1+
from log_analyser.objects.object import Object
22

33

44
class Character(Object):
@@ -8,9 +8,7 @@ def __init__(self, **kwargs):
88
"stats": dict,
99
"played_time": list,
1010
"kills": list,
11-
"deads": list,
12-
"offensive_assists": list,
13-
"defensive_assists": list,
11+
"deaths": list,
1412
"ultimate_charged": list,
1513
"ultimate_use": list}
1614

@@ -24,7 +22,7 @@ def add_kill(self, data):
2422
self.kills.append(data)
2523

2624
def add_death(self, data):
27-
self.deads.append(data)
25+
self.deaths.append(data)
2826

2927
def add_offensive_assist(self, data):
3028
self.offensive_assists.append(data)
Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
from objects.object import Object
2-
from objects.round import Round
3-
from objects.team import Team
1+
from log_analyser.objects.object import Object
2+
from log_analyser.objects.round import Round
3+
from log_analyser.objects.team import Team
44
from datetime import datetime
55

66

7-
class Match(Object):
7+
class Map(Object):
88

99
def __init__(self, **kwargs):
1010

@@ -50,7 +50,7 @@ def add_character(self, data):
5050
if data["character_name"] in self.rounds[self.actual_round].teams[data["team_name"]].players[data["player_name"]].characters:
5151
return -2
5252
else:
53-
self.rounds[self.actual_round].teams[data["team_name"]].players[data["player_name"]].add_character({"name": data["character_name"], "stats": {}, "played_time": [], "kills": [], "deads": [], "offensive_assists": [], "defensive_assists": [], "ultimate_charged": [], "ultimate_use": []})
53+
self.rounds[self.actual_round].teams[data["team_name"]].players[data["player_name"]].add_character({"name": data["character_name"], "stats": {}, "played_time": [], "kills": [], "deaths": [], "ultimate_charged": [], "ultimate_use": []})
5454

5555
if len(self.rounds[self.actual_round].teams[data["team_name"]].players[data["player_name"]].characters[data["character_name"]].played_time) > 0:
5656
self.rounds[self.actual_round].teams[data["team_name"]].players[data["player_name"]].characters[data["character_name"]].played_time[-1]["end"] = data["time"]
@@ -152,9 +152,9 @@ def end_round(self, data):
152152
self.score_team2 = end_round_data["score_team2"]
153153
print("###### END ROUND {} #######\n".format(self.actual_round))
154154

155-
def end_match(self, data):
155+
def end_map(self, data):
156156

157-
end_match_data = {"time": data[2], "score_team1": data[4], "score_team2": data[5]}
157+
end_map_data = {"time": data[2], "score_team1": data[4], "score_team2": data[5]}
158158

159-
self.score_team1 = end_match_data["score_team1"]
160-
self.score_team2 = end_match_data["score_team2"]
159+
self.score_team1 = end_map_data["score_team1"]
160+
self.score_team2 = end_map_data["score_team2"]

src/log_analyser/objects/object.py

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ def __init__(self, class_model, **kwargs):
66

77
self.from_json_ok = True
88
self.class_name = self.__class__.__name__
9+
self.class_model = class_model
910

1011
for key, value in kwargs.items():
1112
if key in class_model:
@@ -25,9 +26,15 @@ def __init__(self, class_model, **kwargs):
2526

2627
def export_json_recursive(self, data):
2728
if issubclass(type(data), Object):
29+
2830
dict_class = data.__dict__.copy()
29-
dict_class.pop("from_json_ok")
30-
return data.export_json_recursive(dict_class)
31+
dict_class_final = dict_class.copy()
32+
33+
for key, value in dict_class.items():
34+
if not key in data.class_model and key != "class_name":
35+
dict_class_final.pop(key)
36+
37+
return data.export_json_recursive(dict_class_final)
3138
elif isinstance(data, datetime):
3239
return data.strftime("%Y-%m-%d %H:%M:%S")
3340
elif isinstance(data, list):
@@ -40,12 +47,16 @@ def export_json_recursive(self, data):
4047
def export_json(self):
4148

4249
dict_class = self.__dict__.copy()
43-
dict_class.pop("from_json_ok")
44-
for key, value in dict_class.items():
45-
dict_class[key] = self.export_json_recursive(value)
4650

47-
return json.dumps(dict_class, indent=4, sort_keys=True, default=str)
51+
dict_class_final = dict_class.copy()
4852

53+
for key, value in dict_class.items():
54+
if not key in self.class_model and key != "class_name":
55+
dict_class_final.pop(key)
56+
else:
57+
dict_class_final[key] = self.export_json_recursive(value)
58+
# return json.dumps(dict_class_final, indent=4, sort_keys=True, default=str)
59+
return json.dumps(dict_class_final, skipkeys=False, ensure_ascii=True, check_circular=True)
4960
def convert_timefile_to_datetime(self, time_string):
5061

5162

src/log_analyser/objects/player.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# from src.log_analyser.character import Character
2-
from objects.object import Object
3-
from objects.character import Character
2+
from log_analyser.objects.object import Object
3+
from log_analyser.objects.character import Character
44

55

66
class Player(Object):

src/log_analyser/objects/round.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
from objects.object import Object
2-
from objects.team import Team
1+
from log_analyser.objects.object import Object
2+
from log_analyser.objects.team import Team
33

44

55
class Round(Object):

src/log_analyser/objects/team.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
from objects.object import Object
2-
from objects.player import Player
1+
from log_analyser.objects.object import Object
2+
from log_analyser.objects.player import Player
3+
34

45
class Team(Object):
56

src/main.py

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,31 +2,34 @@
22
import time
33
import sys
44
from kafka_lib import ProducerThread, ConsumerThread
5+
from log_analyser.log_analyser import LogAnalyser
56

67

78
class DatastrikePythonProcessing:
89
def __init__(self):
910

1011
self.running = True
12+
13+
self.producer_thread = ProducerThread("localhost:29092")
1114

12-
13-
self.producer_thread = ProducerThread("localhost:29093")
14-
15-
self.consumer_thread = ConsumerThread("localhost:29093")
16-
self.consumer_thread.add_topics("test", self.on_callback_test)
15+
self.consumer_thread = ConsumerThread("localhost:29092")
16+
self.consumer_thread.add_topics("analyse", self.on_callback_test)
1717

1818
self.consumer_thread.start()
1919
self.producer_thread.start()
2020

2121

2222
def on_callback_test(self, topic, data):
2323
print("message receive : ", topic, data)
24-
print("a")
24+
25+
la = LogAnalyser('logs/Log-2023-12-22-21-12-32.txt', "Log-2023-12-22-21-12-32.txt")
26+
la.run()
27+
self.producer_thread.send("analyse.report", la.map.export_json())
2528

2629
def run(self):
2730

2831
while self.running:
29-
print("Service en cours d'exécution...")
32+
# print("Service en cours d'exécution...")
3033
time.sleep(1)
3134

3235
print("Service stop.")

0 commit comments

Comments
 (0)