Skip to content

Commit 1e6d406

Browse files
committed
feat: improve task configuration handling and datetime efficiency
- Add support for task-specific overrides using extra_id to differentiate tasks with same name - Optimize datetime operations by reusing current datetime object instead of repeated calls - Make standby_stage handling more robust by using get() and conditional removal - This improves performance by reducing redundant datetime calculations and provides more flexible task configuration options
1 parent ffef9d1 commit 1e6d406

File tree

2 files changed

+15
-8
lines changed

2 files changed

+15
-8
lines changed

src/maa_runner.py

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -206,8 +206,13 @@ def get_full_task(config: dict):
206206
for maatask in template:
207207
final_task_config: dict = copy.deepcopy(maatask["task_config"])
208208
final_task_name = copy.deepcopy(maatask["task_name"])
209+
task_extra_id = maatask.get("extra_id")
209210

210-
preference_task_config = overrides.get(final_task_name, {})
211+
if task_extra_id:
212+
override_key = final_task_name + "@" + task_extra_id
213+
else:
214+
override_key = final_task_name
215+
preference_task_config = overrides.get(override_key, {})
211216

212217
def update_and_match_case():
213218
nonlocal final_task_config
@@ -218,22 +223,23 @@ def get_config(key):
218223
config = final_task_config[key]
219224

220225
def aval_expression():
226+
current_datetime = datetime.now()
227+
221228
def time_between(time_start, time_end):
222-
current_time = datetime.now().strftime("%H:%M")
229+
current_time = current_datetime.strftime("%H:%M")
223230
start_time_obj = datetime.strptime(time_start, "%H:%M")
224231
end_time_obj = datetime.strptime(time_end, "%H:%M")
225232
current_time_obj = datetime.strptime(current_time, "%H:%M")
226233
return start_time_obj <= current_time_obj <= end_time_obj
227234

228235
def date_between(date_start, date_end):
229-
current_date = datetime.now().strftime("%Y-%m-%d")
236+
current_date = current_datetime.strftime("%Y-%m-%d")
230237
start_date_obj = datetime.strptime(date_start, "%Y-%m-%d")
231238
end_date_obj = datetime.strptime(date_end, "%Y-%m-%d")
232239
current_date_obj = datetime.strptime(current_date, "%Y-%m-%d")
233240
return start_date_obj <= current_date_obj <= end_date_obj
234241

235242
def datetime_between(datetime_start, datetime_end):
236-
current_datetime = datetime.now()
237243
start_datetime_obj = datetime.strptime(
238244
datetime_start, "%Y-%m-%d %H:%M:%S"
239245
)
@@ -244,8 +250,8 @@ def datetime_between(datetime_start, datetime_end):
244250
start_datetime_obj <= current_datetime <= end_datetime_obj
245251
)
246252

247-
AM = in_game_time(datetime.now(), server).hour < 12
248-
weekday = datetime.now().weekday()
253+
AM = in_game_time(current_datetime, server).hour < 12
254+
weekday = current_datetime.weekday()
249255
# excuted_time_in_cur_gameday =
250256

251257
return locals().copy()

src/model.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -236,8 +236,9 @@ def run_maatask(self, maatask, time_remain) -> "MaataskRunResult":
236236

237237
if type == "Fight":
238238
stage = config["stage"]
239-
standby_stage = config["standby_stage"]
240-
config.pop("standby_stage")
239+
standby_stage = config.get("standby_stage")
240+
if standby_stage:
241+
config.pop("standby_stage")
241242
fight_ok = True
242243
fight_reason = ""
243244

0 commit comments

Comments
 (0)