albibong 1.0.7__py3-none-any.whl → 1.1.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- albibong/__init__.py +92 -8
- albibong/__main__.py +6 -0
- albibong/classes/character.py +7 -23
- albibong/classes/dungeon.py +53 -32
- albibong/classes/event_handler/__init__.py +17 -1
- albibong/classes/event_handler/handle_event_character_equipment_changed.py +2 -10
- albibong/classes/event_handler/handle_event_might_and_favor_received_event.py +18 -0
- albibong/classes/event_handler/handle_event_other_grabbed_loot.py +9 -0
- albibong/classes/event_handler/handle_event_party.py +6 -13
- albibong/classes/event_handler/handle_event_update_fame.py +9 -0
- albibong/classes/event_handler/handle_event_update_re_spec_points.py +9 -0
- albibong/classes/event_handler/handle_operation_change_cluster.py +17 -22
- albibong/classes/event_handler/handle_operation_farmable_harvest.py +17 -0
- albibong/classes/event_handler/handle_operation_join.py +14 -36
- albibong/classes/event_handler/world_data_utils.py +62 -30
- albibong/classes/item.py +19 -4
- albibong/classes/location.py +136 -5
- albibong/classes/utils.py +20 -0
- albibong/gui_dist/assets/index-B31tZ4Ku.css +1 -0
- albibong/gui_dist/assets/index-BkyL_QUY.js +168 -0
- albibong/gui_dist/favor.png +0 -0
- albibong/gui_dist/index.html +2 -2
- albibong/gui_dist/might.png +0 -0
- albibong/migrations/001_init.py +97 -0
- albibong/migrations/002_alter_dungeon_table.py +53 -0
- albibong/models/__init__.py +0 -0
- albibong/models/models.py +12 -0
- albibong/requirements.txt +2 -0
- albibong/resources/items_by_unique_name.json +55282 -0
- albibong/resources/maps.json +259 -259
- albibong/threads/http_server.py +4 -0
- albibong/threads/sniffer_thread.py +39 -2
- albibong/threads/websocket_server.py +80 -43
- {albibong-1.0.7.dist-info → albibong-1.1.1.dist-info}/METADATA +3 -1
- {albibong-1.0.7.dist-info → albibong-1.1.1.dist-info}/RECORD +39 -32
- albibong/gui_dist/assets/index-DZvgNqlG.css +0 -1
- albibong/gui_dist/assets/index-Dt6hyZiS.css +0 -1
- albibong/gui_dist/assets/index-E7pha23k.js +0 -161
- albibong/gui_dist/assets/index-WIuC9Mnh.js +0 -161
- /albibong/resources/{items.json → items_by_id.json} +0 -0
- {albibong-1.0.7.dist-info → albibong-1.1.1.dist-info}/WHEEL +0 -0
- {albibong-1.0.7.dist-info → albibong-1.1.1.dist-info}/entry_points.txt +0 -0
- {albibong-1.0.7.dist-info → albibong-1.1.1.dist-info}/licenses/LICENSE +0 -0
albibong/threads/http_server.py
CHANGED
|
@@ -45,6 +45,7 @@ class HttpServerThread(threading.Thread):
|
|
|
45
45
|
def run(self):
|
|
46
46
|
# Create an object of the above class
|
|
47
47
|
handler_object = HttpRequestHandler
|
|
48
|
+
handler_object.extensions_map.update({".js": "application/javascript"})
|
|
48
49
|
|
|
49
50
|
self.http_server = socketserver.TCPServer(("", self.port), handler_object)
|
|
50
51
|
self.http_server.allow_reuse_address = True
|
|
@@ -54,6 +55,9 @@ class HttpServerThread(threading.Thread):
|
|
|
54
55
|
server_thread.daemon = True
|
|
55
56
|
server_thread.start()
|
|
56
57
|
logger.info(f"Thread {self.name} started at port {self.port}")
|
|
58
|
+
logger.info(
|
|
59
|
+
f"\n==\n\nYou can access the GUI using a browser using below url\n\nhttp://localhost:{self.port}/\n\n==\n\n"
|
|
60
|
+
)
|
|
57
61
|
|
|
58
62
|
def stop(self):
|
|
59
63
|
self.http_server.shutdown()
|
|
@@ -1,28 +1,65 @@
|
|
|
1
|
+
import os
|
|
1
2
|
import threading
|
|
3
|
+
from time import sleep
|
|
2
4
|
|
|
3
|
-
from scapy.all import AsyncSniffer
|
|
5
|
+
from scapy.all import AsyncSniffer, wrpcapng
|
|
4
6
|
|
|
5
7
|
from albibong.classes.logger import Logger
|
|
8
|
+
from albibong.threads.websocket_server import send_event
|
|
9
|
+
|
|
10
|
+
home_dir = os.path.expanduser("~")
|
|
11
|
+
pcap_file = home_dir + "/Albibong/Debug/debug.pcapng"
|
|
6
12
|
|
|
7
13
|
logger = Logger(__name__, stdout=True, log_to_file=False)
|
|
8
14
|
|
|
9
15
|
|
|
10
16
|
class SnifferThread(threading.Thread):
|
|
11
|
-
def __init__(self, name, out_queue, sentinel):
|
|
17
|
+
def __init__(self, name, out_queue, sentinel, is_debug=False):
|
|
12
18
|
super().__init__()
|
|
13
19
|
self.name = name
|
|
14
20
|
self.out_queue = out_queue
|
|
15
21
|
self.sentinel = sentinel
|
|
22
|
+
self.is_debug = is_debug
|
|
16
23
|
self.sniffer = AsyncSniffer(filter="udp and port 5056", prn=self.push_packet)
|
|
24
|
+
self.packet_counter = 0
|
|
25
|
+
self.timer_exit = threading.Event()
|
|
26
|
+
self.all_packets = []
|
|
17
27
|
|
|
18
28
|
def push_packet(self, packet):
|
|
19
29
|
self.out_queue.put(packet)
|
|
30
|
+
self.all_packets.append(packet)
|
|
31
|
+
self.packet_counter += 1
|
|
20
32
|
|
|
21
33
|
def run(self):
|
|
22
34
|
logger.info(f"Thread {self.name} started")
|
|
23
35
|
self.sniffer.start()
|
|
36
|
+
timer = threading.Thread(target=self.start_timer, args=[5], daemon=True)
|
|
37
|
+
timer.run()
|
|
24
38
|
|
|
25
39
|
def stop(self):
|
|
26
40
|
logger.info(f"Thread {self.name} stopped")
|
|
27
41
|
self.sniffer.stop()
|
|
28
42
|
self.out_queue.put(self.sentinel)
|
|
43
|
+
self.quit_timer()
|
|
44
|
+
if self.is_debug:
|
|
45
|
+
wrpcapng(pcap_file, self.all_packets)
|
|
46
|
+
|
|
47
|
+
def start_timer(self, seconds):
|
|
48
|
+
while not self.timer_exit.is_set():
|
|
49
|
+
self.timer_exit.wait(seconds)
|
|
50
|
+
|
|
51
|
+
if self.packet_counter > 0:
|
|
52
|
+
msg = {
|
|
53
|
+
"type": "health_check",
|
|
54
|
+
"payload": {"status": "passed", "message": "Passed"},
|
|
55
|
+
}
|
|
56
|
+
else:
|
|
57
|
+
msg = {
|
|
58
|
+
"type": "health_check",
|
|
59
|
+
"payload": {"status": "failed", "message": "No Packets Received"},
|
|
60
|
+
}
|
|
61
|
+
send_event(msg)
|
|
62
|
+
self.packet_counter = 0
|
|
63
|
+
|
|
64
|
+
def quit_timer(self):
|
|
65
|
+
self.timer_exit.set()
|
|
@@ -1,21 +1,18 @@
|
|
|
1
1
|
import asyncio
|
|
2
|
-
from datetime import timedelta
|
|
3
2
|
import json
|
|
4
|
-
import os
|
|
5
3
|
import queue
|
|
6
4
|
import threading
|
|
5
|
+
from datetime import datetime, timedelta
|
|
7
6
|
|
|
8
7
|
import websockets
|
|
9
8
|
|
|
10
9
|
from albibong.classes.dungeon import Dungeon
|
|
10
|
+
from albibong.classes.location import Island
|
|
11
11
|
from albibong.classes.logger import Logger
|
|
12
12
|
|
|
13
13
|
logger = Logger(__name__, stdout=True, log_to_file=False)
|
|
14
14
|
logger_file = Logger(__name__)
|
|
15
15
|
|
|
16
|
-
home_dir = os.path.expanduser("~")
|
|
17
|
-
FILENAME = f"{home_dir}/Albibong/list_dungeon.json"
|
|
18
|
-
|
|
19
16
|
|
|
20
17
|
class WebsocketServer(threading.Thread):
|
|
21
18
|
def __init__(self, name, in_queue) -> None:
|
|
@@ -32,7 +29,6 @@ class WebsocketServer(threading.Thread):
|
|
|
32
29
|
try:
|
|
33
30
|
world_data = get_world_data()
|
|
34
31
|
me = world_data.me
|
|
35
|
-
# if me.id != None:
|
|
36
32
|
event_init_world = {
|
|
37
33
|
"type": "init_world",
|
|
38
34
|
"payload": {
|
|
@@ -41,41 +37,42 @@ class WebsocketServer(threading.Thread):
|
|
|
41
37
|
"fame": me.fame_gained,
|
|
42
38
|
"re_spec": me.re_spec_gained,
|
|
43
39
|
"silver": me.silver_gained,
|
|
40
|
+
"might": me.might_gained,
|
|
41
|
+
"favor": me.favor_gained,
|
|
44
42
|
},
|
|
45
43
|
"world": {
|
|
46
44
|
"map": (
|
|
47
45
|
world_data.current_map.name
|
|
48
46
|
if world_data.current_map
|
|
49
|
-
else "
|
|
47
|
+
else "zone in to other map to initialize"
|
|
50
48
|
),
|
|
51
49
|
"dungeon": (
|
|
52
|
-
|
|
50
|
+
world_data.current_dungeon.name
|
|
53
51
|
if world_data.current_dungeon
|
|
54
|
-
else
|
|
52
|
+
else "zone in to other map to initialize"
|
|
55
53
|
),
|
|
56
54
|
"isDPSMeterRunning": world_data.is_dps_meter_running,
|
|
57
55
|
},
|
|
58
56
|
},
|
|
59
57
|
}
|
|
60
|
-
# logger.info(f"initializing character: {event}")
|
|
61
58
|
await websocket.send(json.dumps(event_init_world))
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
"type": "update_dungeon",
|
|
67
|
-
"payload": {"list_dungeon": list_dungeon},
|
|
68
|
-
}
|
|
69
|
-
except:
|
|
70
|
-
event_init_dungeon_list = {
|
|
71
|
-
"type": "update_dungeon",
|
|
72
|
-
"payload": {"list_dungeon": []},
|
|
73
|
-
}
|
|
59
|
+
event_init_dungeon_list = {
|
|
60
|
+
"type": "update_dungeon",
|
|
61
|
+
"payload": {"list_dungeon": Dungeon.get_all_dungeon()},
|
|
62
|
+
}
|
|
74
63
|
await websocket.send(json.dumps(event_init_dungeon_list))
|
|
75
|
-
|
|
64
|
+
event_init_island_list = {
|
|
65
|
+
"type": "update_island",
|
|
66
|
+
"payload": {"list_island": Island.get_all_island()},
|
|
67
|
+
}
|
|
68
|
+
await websocket.send(json.dumps(event_init_island_list))
|
|
69
|
+
total_harvest_reply = {
|
|
70
|
+
"type": "update_total_harvest_by_date",
|
|
71
|
+
"payload": Island.get_total_harvest_by_date(),
|
|
72
|
+
}
|
|
73
|
+
await websocket.send(json.dumps(total_harvest_reply))
|
|
76
74
|
async for message in websocket:
|
|
77
75
|
event = json.loads(message)
|
|
78
|
-
# print(event)
|
|
79
76
|
if event["type"] == "update_is_dps_meter_running":
|
|
80
77
|
world_data.is_dps_meter_running = event["payload"]["value"]
|
|
81
78
|
reply = {
|
|
@@ -92,7 +89,7 @@ class WebsocketServer(threading.Thread):
|
|
|
92
89
|
char.healing_dealt = 0
|
|
93
90
|
char.total_combat_duration = timedelta(0, 0)
|
|
94
91
|
reply = {
|
|
95
|
-
"type": "
|
|
92
|
+
"type": "update_damage_meter",
|
|
96
93
|
"payload": {
|
|
97
94
|
"party_members": world_data.serialize_party_members()
|
|
98
95
|
},
|
|
@@ -102,6 +99,9 @@ class WebsocketServer(threading.Thread):
|
|
|
102
99
|
world_data.me.fame_gained = 0
|
|
103
100
|
world_data.me.re_spec_gained = 0
|
|
104
101
|
world_data.me.silver_gained = 0
|
|
102
|
+
world_data.me.might_gained = 0
|
|
103
|
+
world_data.me.favor_gained = 0
|
|
104
|
+
|
|
105
105
|
fame = {
|
|
106
106
|
"type": "update_fame",
|
|
107
107
|
"payload": {
|
|
@@ -123,33 +123,70 @@ class WebsocketServer(threading.Thread):
|
|
|
123
123
|
"silver_gained": world_data.me.silver_gained,
|
|
124
124
|
},
|
|
125
125
|
}
|
|
126
|
+
might_and_favor = {
|
|
127
|
+
"type": "update_might_and_favor",
|
|
128
|
+
"payload": {
|
|
129
|
+
"username": world_data.me.username,
|
|
130
|
+
"favor_gained": world_data.me.favor_gained,
|
|
131
|
+
"might_gained": world_data.me.might_gained,
|
|
132
|
+
},
|
|
133
|
+
}
|
|
126
134
|
await websocket.send(json.dumps(fame))
|
|
127
135
|
await websocket.send(json.dumps(re_spec))
|
|
128
136
|
await websocket.send(json.dumps(silver))
|
|
137
|
+
await websocket.send(json.dumps(might_and_favor))
|
|
138
|
+
|
|
129
139
|
elif event["type"] == "refresh_dungeon_list":
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
"type": "update_dungeon",
|
|
135
|
-
"payload": {"list_dungeon": list_dungeon},
|
|
136
|
-
}
|
|
137
|
-
except:
|
|
138
|
-
reply = {
|
|
139
|
-
"type": "update_dungeon",
|
|
140
|
-
"payload": {"list_dungeon": []},
|
|
141
|
-
}
|
|
140
|
+
reply = {
|
|
141
|
+
"type": "update_dungeon",
|
|
142
|
+
"payload": {"list_dungeon": Dungeon.get_all_dungeon()},
|
|
143
|
+
}
|
|
142
144
|
await websocket.send(json.dumps(reply))
|
|
143
|
-
elif event["type"] == "
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
145
|
+
elif event["type"] == "update_dungeon_tier":
|
|
146
|
+
id = event["payload"]["id"]
|
|
147
|
+
value = event["payload"]["value"]
|
|
148
|
+
dungeon: Dungeon = Dungeon.update(tier=value).where(
|
|
149
|
+
Dungeon.id == id
|
|
150
|
+
)
|
|
151
|
+
dungeon.execute()
|
|
152
|
+
reply = {
|
|
153
|
+
"type": "update_dungeon",
|
|
154
|
+
"payload": {"list_dungeon": Dungeon.get_all_dungeon()},
|
|
155
|
+
}
|
|
156
|
+
await websocket.send(json.dumps(reply))
|
|
157
|
+
elif event["type"] == "update_dungeon_name":
|
|
158
|
+
id = event["payload"]["id"]
|
|
159
|
+
value = event["payload"]["value"]
|
|
160
|
+
dungeon: Dungeon = Dungeon.update(name=value).where(
|
|
161
|
+
Dungeon.id == id
|
|
162
|
+
)
|
|
163
|
+
dungeon.execute()
|
|
148
164
|
reply = {
|
|
149
165
|
"type": "update_dungeon",
|
|
150
|
-
"payload": {"list_dungeon":
|
|
166
|
+
"payload": {"list_dungeon": Dungeon.get_all_dungeon()},
|
|
151
167
|
}
|
|
152
168
|
await websocket.send(json.dumps(reply))
|
|
169
|
+
elif event["type"] == "refresh_island_list":
|
|
170
|
+
refresh_island_reply = {
|
|
171
|
+
"type": "update_island",
|
|
172
|
+
"payload": {"list_island": Island.get_all_island()},
|
|
173
|
+
}
|
|
174
|
+
total_harvest_reply = {
|
|
175
|
+
"type": "update_total_harvest_by_date",
|
|
176
|
+
"payload": Island.get_total_harvest_by_date(),
|
|
177
|
+
}
|
|
178
|
+
await websocket.send(json.dumps(refresh_island_reply))
|
|
179
|
+
await websocket.send(json.dumps(total_harvest_reply))
|
|
180
|
+
elif event["type"] == "update_total_harvested_date_range":
|
|
181
|
+
date = event["payload"]["date"]
|
|
182
|
+
format = "%Y-%m-%d"
|
|
183
|
+
total_harvest_reply = {
|
|
184
|
+
"type": "update_total_harvest_by_date",
|
|
185
|
+
"payload": Island.get_total_harvest_by_date(
|
|
186
|
+
date=datetime.strptime(date, format)
|
|
187
|
+
),
|
|
188
|
+
}
|
|
189
|
+
await websocket.send(json.dumps(total_harvest_reply))
|
|
153
190
|
|
|
154
191
|
event = {}
|
|
155
192
|
send_event(event)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: albibong
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.1.1
|
|
4
4
|
Summary: A cross-platform Albion Online damage, fame, and dungeon tracker
|
|
5
5
|
Project-URL: Homepage, https://github.com/imjangkar/albibong
|
|
6
6
|
Project-URL: Issues, https://github.com/imjangkar/albibong/issues
|
|
@@ -10,6 +10,8 @@ Classifier: License :: OSI Approved :: MIT License
|
|
|
10
10
|
Classifier: Operating System :: OS Independent
|
|
11
11
|
Classifier: Programming Language :: Python :: 3
|
|
12
12
|
Requires-Python: >=3.10
|
|
13
|
+
Requires-Dist: peewee-migrate==1.13.0
|
|
14
|
+
Requires-Dist: peewee==3.17.6
|
|
13
15
|
Requires-Dist: pywebview==5.1
|
|
14
16
|
Requires-Dist: scapy==2.5.0
|
|
15
17
|
Requires-Dist: websockets==12.0
|
|
@@ -1,41 +1,47 @@
|
|
|
1
|
-
albibong/__init__.py,sha256=
|
|
2
|
-
albibong/__main__.py,sha256=
|
|
3
|
-
albibong/requirements.txt,sha256=
|
|
1
|
+
albibong/__init__.py,sha256=TFp1uv5XC6ZwGJHqbDdgpIk2Et_RiTUX3zZ4fA_h_yM,5139
|
|
2
|
+
albibong/__main__.py,sha256=evemoPcehqpwrr4uZQ_4x4p8kq04OcSSNjNXWEW8a7M,290
|
|
3
|
+
albibong/requirements.txt,sha256=HzAZc3BiHT5i1UIYa6yiUhSo8FoJvyAVMht103J8GHA,82
|
|
4
4
|
albibong/assets/boom_small.mp3,sha256=XEeYaifS3kBu7jxJo4j8cwGjher8Ml0CpMvu3YNk4y0,16722
|
|
5
5
|
albibong/classes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
6
|
-
albibong/classes/character.py,sha256=
|
|
6
|
+
albibong/classes/character.py,sha256=EsG6TEig5DnF4GzCp63p4KKvH0ABYFQb-W7FKllDaus,2961
|
|
7
7
|
albibong/classes/coords.py,sha256=wjCO7YnKXzH9IsJ9YFObbpMYfVFT5o38RndWjQhjVEg,189
|
|
8
|
-
albibong/classes/dungeon.py,sha256=
|
|
9
|
-
albibong/classes/item.py,sha256=
|
|
10
|
-
albibong/classes/location.py,sha256=
|
|
8
|
+
albibong/classes/dungeon.py,sha256=Nyc5hXFRRJqJeFu-4TLZktyNHTV7zpVmmuQdZowCGoI,2543
|
|
9
|
+
albibong/classes/item.py,sha256=tjAqXAexrqjrFaRAMPQfccmsMnI0FGafoEurJq_iAdc,1612
|
|
10
|
+
albibong/classes/location.py,sha256=VrzHuDkWDDJgNrNyuHDOcb_sg3P44j-lQStegP8Rjqo,4321
|
|
11
11
|
albibong/classes/logger.py,sha256=5DQoUqrvA2wf28XdRm2xwC4RBhIpP4d70PqRohRKNwM,4442
|
|
12
12
|
albibong/classes/packet_handler.py,sha256=1DpAZf5sMWO06qnjP62zxn3e9mU50_c5o1y6EUnxW68,1792
|
|
13
|
-
albibong/classes/utils.py,sha256=
|
|
13
|
+
albibong/classes/utils.py,sha256=mZ4xSASSVGAIJcj8LfIWOMlMvSHyjqI7o8Pmd4oYoPE,987
|
|
14
14
|
albibong/classes/world_data.py,sha256=mUhgXNzS0GjNGSxIDzhw55KDB8rKt661zeAotE4WBds,3466
|
|
15
|
-
albibong/classes/event_handler/__init__.py,sha256=
|
|
16
|
-
albibong/classes/event_handler/handle_event_character_equipment_changed.py,sha256=
|
|
15
|
+
albibong/classes/event_handler/__init__.py,sha256=7QAS91XhkAjvIKI4dK4CiPsNBqIPH9PY6kXSBRYAGS0,5204
|
|
16
|
+
albibong/classes/event_handler/handle_event_character_equipment_changed.py,sha256=QT6SfYfRLUipWWgyd1uOYXPnrA4jR-T9mkLzKbqCdwE,783
|
|
17
17
|
albibong/classes/event_handler/handle_event_health.py,sha256=0RPvv0C-nklmKsp3UflN9qhpAkcLtd5bmmoN3cf-WM4,1078
|
|
18
18
|
albibong/classes/event_handler/handle_event_in_combat_state_update.py,sha256=sWDu5RdupNAT5ESCY1RJ7rMAKq1b4HwYM272UFHI9h8,517
|
|
19
|
+
albibong/classes/event_handler/handle_event_might_and_favor_received_event.py,sha256=Q3L2Zn5mPXic_8_jAv_9z3y1uOZaADNcBkxKu2NFrJY,628
|
|
19
20
|
albibong/classes/event_handler/handle_event_new_character.py,sha256=t9bdwe1-k2TVWAQ_HuBEmx2HO4-lgPoZJR0qKGcS6Vw,1507
|
|
20
|
-
albibong/classes/event_handler/handle_event_other_grabbed_loot.py,sha256=
|
|
21
|
-
albibong/classes/event_handler/handle_event_party.py,sha256=
|
|
22
|
-
albibong/classes/event_handler/handle_event_update_fame.py,sha256=
|
|
23
|
-
albibong/classes/event_handler/handle_event_update_re_spec_points.py,sha256=
|
|
24
|
-
albibong/classes/event_handler/handle_operation_change_cluster.py,sha256=
|
|
25
|
-
albibong/classes/event_handler/
|
|
21
|
+
albibong/classes/event_handler/handle_event_other_grabbed_loot.py,sha256=vm9gylmpg-I34U_PNwAjP4fyYSQ0RV6521oWSWjzM-M,813
|
|
22
|
+
albibong/classes/event_handler/handle_event_party.py,sha256=LNdgsi4hxzESD7gPut88RBTnV1JbEbLIT_amAy9BvXM,1094
|
|
23
|
+
albibong/classes/event_handler/handle_event_update_fame.py,sha256=8FQT75mdU3S4uOGfvtqDXfxRlFSc-N0KwefnhBbc_-0,517
|
|
24
|
+
albibong/classes/event_handler/handle_event_update_re_spec_points.py,sha256=zIdlkoBvJ_IqKMsmDlVFPXmnmE1IPPpWeEpi-M3t_Ds,593
|
|
25
|
+
albibong/classes/event_handler/handle_operation_change_cluster.py,sha256=Pc9E27JL1oJwc3iKgTsFlGWUz6iRVHtySN59jV8gLo0,1644
|
|
26
|
+
albibong/classes/event_handler/handle_operation_farmable_harvest.py,sha256=PH0UONCmjdoTdlcYa70x2oKC5j7PXmrrsRS8pl9clZM,680
|
|
27
|
+
albibong/classes/event_handler/handle_operation_join.py,sha256=RxN5X-Dv4jfIFn3e0zqrJOufgDJlMPqYIM0wlJadcGc,2290
|
|
26
28
|
albibong/classes/event_handler/handle_operation_move.py,sha256=vg_wTPQ4nA4-xyw9axtFmKkVCUoCkUq3RV74wFLbc_4,200
|
|
27
|
-
albibong/classes/event_handler/world_data_utils.py,sha256=
|
|
29
|
+
albibong/classes/event_handler/world_data_utils.py,sha256=9BHsgzA2EBnBC26SJf0T2fiDlwj1MpYTb2EFLcmzmlU,5109
|
|
28
30
|
albibong/gui_dist/Albibong.png,sha256=vFWgJSosXfnSCy_U7Uu9hCYDCHiYtcmR1lpPA0XQRhY,38093
|
|
29
31
|
albibong/gui_dist/No Equipment.png,sha256=HdVR3WJ0ktF5v606QyURdHscjOgCqiXJnqI8k8IlSgE,131
|
|
30
32
|
albibong/gui_dist/fame.png,sha256=X2tUCmgR5TkGLUVvFB2lInH_RrXkC1pSLqpw_ply-rE,6015
|
|
31
|
-
albibong/gui_dist/
|
|
33
|
+
albibong/gui_dist/favor.png,sha256=0e2z8GZ8_1gWw14UFFVo3QG9vKUmaGFqVmoKyJRU9mU,1859
|
|
34
|
+
albibong/gui_dist/index.html,sha256=TdC4ngLxJ8HbhTKQ__ujkZfaErdZhcs1GToWpBsEjEs,477
|
|
35
|
+
albibong/gui_dist/might.png,sha256=J7mi_99lkCJ253ctTixISeaTuQWbGSLbIQ9BlBPQaEA,3412
|
|
32
36
|
albibong/gui_dist/re_spec.png,sha256=1KTzGT1u1wjmNk9svS5ZOV7zCDIEmiFy0USh6A_vhPA,6230
|
|
33
37
|
albibong/gui_dist/silver.png,sha256=tqXvZdf9zr0YoOQZoR2vG8NRffl4xvz0LY5XgwIrYD8,11533
|
|
34
38
|
albibong/gui_dist/vite.svg,sha256=SnSK_UQ5GLsWWRyDTEAdrjPoeGGrXbrQgRw6O0qSFPs,1497
|
|
35
|
-
albibong/gui_dist/assets/index-
|
|
36
|
-
albibong/gui_dist/assets/index-
|
|
37
|
-
albibong/
|
|
38
|
-
albibong/
|
|
39
|
+
albibong/gui_dist/assets/index-B31tZ4Ku.css,sha256=L5X0kNcjz8FOEUdcZ3kSGpHOgTcewoXHwqY1FsWMrwI,3265
|
|
40
|
+
albibong/gui_dist/assets/index-BkyL_QUY.js,sha256=oPc3TTDVB7uh24OZLPLx9CsYKPnKEl_ThbXVqZSTHFU,655519
|
|
41
|
+
albibong/migrations/001_init.py,sha256=RYp53geL5KHhT9ClwhkgAEsn_RWJ6mNdcLp3h8W4KkQ,3210
|
|
42
|
+
albibong/migrations/002_alter_dungeon_table.py,sha256=Ke84RajqSOCYoAkBqylHfa18Yj4r5Kl-fK5e8x4bjm0,2057
|
|
43
|
+
albibong/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
44
|
+
albibong/models/models.py,sha256=V9uv99x0GHwZcD8cNFQVUt2klTuao7xK5ywoT_JT4vs,210
|
|
39
45
|
albibong/photon_packet_parser/__init__.py,sha256=Y_XwBGLl0ufhLr7d6phhfA6qL1RrG6mJ3qAC5lNKM_c,301
|
|
40
46
|
albibong/photon_packet_parser/command_type.py,sha256=-LSdpsQgViDygDJsjaoCUuLbBkK4-pmQuM8ESHG1BNk,137
|
|
41
47
|
albibong/photon_packet_parser/crc_calculator.py,sha256=rnhmknjiZBaSXBwS2cJacwLlnXaT74u9yEmvLknIh2o,402
|
|
@@ -51,16 +57,17 @@ albibong/photon_packet_parser/segmented_packet.py,sha256=pftqyVO0D7ZX8m1ZL2w2Xt_
|
|
|
51
57
|
albibong/resources/EventCode.py,sha256=WSKFXuaABz3FBugHmlTSHAvMaNfa4JaRQo5xqdcn3aI,19349
|
|
52
58
|
albibong/resources/OperationCode.py,sha256=9l5xdNhVCs4i-zaAPYC9BXPDBavX1D7VdpESmFQtKyE,16509
|
|
53
59
|
albibong/resources/event_code.json,sha256=vIHnrH1T0qaGM4t4qYyoknAYEjiSO543RNu4zhYWOGs,20483
|
|
54
|
-
albibong/resources/
|
|
55
|
-
albibong/resources/
|
|
60
|
+
albibong/resources/items_by_id.json,sha256=UoU4OSbB09DyxOpia2Ye1Hm4HR_4QlYqvhL_DKn6eQ8,1400109
|
|
61
|
+
albibong/resources/items_by_unique_name.json,sha256=VLixfNoc6RbMjfdBna2IdtG2PAwBbaYzsHSC8b96qp8,1635865
|
|
62
|
+
albibong/resources/maps.json,sha256=jEXIhIlPYO8fXk9xHOVpFKxw4_KUb72TBICvJy4-gBE,129753
|
|
56
63
|
albibong/resources/operation_code.json,sha256=zV9kgHtZ_fs1Pm7ntQxNbjfZbdiHRdUIhEkKAIJPLhU,17457
|
|
57
64
|
albibong/threads/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
58
|
-
albibong/threads/http_server.py,sha256=
|
|
65
|
+
albibong/threads/http_server.py,sha256=qg87iVD7AaKg32eJ5qeqL3RUo-B7sVywC4_qTxEhH2U,2172
|
|
59
66
|
albibong/threads/packet_handler_thread.py,sha256=bqgYQUeCaTtnWgx4bGoqw-cWQcXRJohIse2hwCbVLmo,949
|
|
60
|
-
albibong/threads/sniffer_thread.py,sha256=
|
|
61
|
-
albibong/threads/websocket_server.py,sha256=
|
|
62
|
-
albibong-1.
|
|
63
|
-
albibong-1.
|
|
64
|
-
albibong-1.
|
|
65
|
-
albibong-1.
|
|
66
|
-
albibong-1.
|
|
67
|
+
albibong/threads/sniffer_thread.py,sha256=m7y0dlv8SPxGganodjxMrGKN40Ma2Dg1pFHAiRzgFWo,2024
|
|
68
|
+
albibong/threads/websocket_server.py,sha256=6Mi7ylFIC3FE5zSNXUNrOuPvdwMNhLdPuiMu-BCptFY,9709
|
|
69
|
+
albibong-1.1.1.dist-info/METADATA,sha256=LsOaOf1POlqvr165vblsKL56iGcMhznzw-wD5r8sqME,649
|
|
70
|
+
albibong-1.1.1.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
|
|
71
|
+
albibong-1.1.1.dist-info/entry_points.txt,sha256=pLvUeo6eUwvsDQXsxdP9mRdSPufUlrz_9mFxsov0nm0,43
|
|
72
|
+
albibong-1.1.1.dist-info/licenses/LICENSE,sha256=7EI8xVBu6h_7_JlVw-yPhhOZlpY9hP8wal7kHtqKT_E,1074
|
|
73
|
+
albibong-1.1.1.dist-info/RECORD,,
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
*{box-sizing:border-box}:root{font-family:Inter,system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}p{margin:0}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}#root,body{margin:auto;display:flex;flex-direction:column;justify-content:start;align-items:center;min-width:320px;min-height:100vh;color:#fff;width:100%}h1{font-size:2em;line-height:1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media (prefers-color-scheme: light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}._dmgBar_zdqdf_1{background:linear-gradient(135deg,#ff6486,#6486ff);height:6px;border-radius:8px;margin-bottom:2px}._healBar_zdqdf_8{background:linear-gradient(135deg,#64ffde,#64ff90);height:2px;border-radius:4px}._dpsContainer_zdqdf_14{display:flex;flex-direction:column;justify-content:flex-start;width:100%;gap:4px;box-sizing:content-box;padding:16px}._dpsRow_zdqdf_24{display:flex;flex-direction:row;justify-content:space-between;align-items:center}._dpsNumber_zdqdf_31{width:128px;text-align:right}._hidden_zdqdf_36{display:none}._player_zdqdf_40{flex-grow:1}._checkboxColor_zdqdf_44{accent-color:#64d3ff}._dungeonContainer_3nxyx_1{border-radius:1rem;width:100%;padding:2rem;display:flex;flex-direction:column;gap:1rem}._tag_3nxyx_12{background-color:#64d3ff;padding:0 1rem;border-radius:1rem;color:#0f3c4e;font-weight:700}._stickToTop_3nxyx_20{z-index:10;position:sticky;top:64px;left:0;width:100%;padding:24px 0}._container_pkz1i_1{display:flex;flex-direction:column;align-items:center;gap:8px;width:100%;gap:1.5rem}._snackbar_pkz1i_10{position:fixed;right:64px}._stats_pkz1i_15{display:flex;flex-direction:row;align-items:center;gap:.5rem}._options_pkz1i_22{display:flex;flex-direction:row;align-items:center;gap:2rem}._row_pkz1i_29{display:flex;width:100%;justify-content:space-between}._hidden_pkz1i_35{display:none}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
*{box-sizing:border-box}:root{font-family:Inter,system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}p{margin:0}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}#root,body{margin:auto;display:flex;flex-direction:column;justify-content:start;align-items:center;min-width:320px;min-height:100vh;color:#fff;width:100%}h1{font-size:2em;line-height:1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media (prefers-color-scheme: light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}._dmgBar_uvx94_1{background:linear-gradient(135deg,#ff6486,#6486ff);height:6px;border-radius:8px;margin-bottom:2px}._healBar_uvx94_8{background:linear-gradient(135deg,#64ffde,#64ff90);height:2px;border-radius:4px}._dpsContainer_uvx94_14{display:flex;flex-direction:column;justify-content:flex-start;width:100%;gap:4px;box-sizing:content-box;padding:16px}._dpsRow_uvx94_24{display:flex;flex-direction:row;justify-content:space-between;align-items:center}._dpsNumber_uvx94_31{width:128px;text-align:right}._dpsButton_uvx94_36{display:flex;flex-grow:1;gap:1rem}._hidden_uvx94_42{display:none}._player_uvx94_46{flex-grow:1}._checkboxColor_uvx94_50{accent-color:#64d3ff}._dungeonContainer_3nxyx_1{border-radius:1rem;width:100%;padding:2rem;display:flex;flex-direction:column;gap:1rem}._tag_3nxyx_12{background-color:#64d3ff;padding:0 1rem;border-radius:1rem;color:#0f3c4e;font-weight:700}._stickToTop_3nxyx_20{z-index:10;position:sticky;top:64px;left:0;width:100%;padding:24px 0}._container_pkz1i_1{display:flex;flex-direction:column;align-items:center;gap:8px;width:100%;gap:1.5rem}._snackbar_pkz1i_10{position:fixed;right:64px}._stats_pkz1i_15{display:flex;flex-direction:row;align-items:center;gap:.5rem}._options_pkz1i_22{display:flex;flex-direction:row;align-items:center;gap:2rem}._row_pkz1i_29{display:flex;width:100%;justify-content:space-between}._hidden_pkz1i_35{display:none}
|