Source code for replay_wizard.replay.replay

"""
Replay core module
"""
import time
from .keyboard import push_button
from .mouse import move_mouse, click_mouse, scroll_action


[docs] def replay(action, true_time=False): """ Replay one Action """ replayer = get_replayer(action.subtype, true_time) replayer(action)
[docs] def create_timedelta_list(timestamp_list): """ Create timedelta list :param timestamp_list: List with timedelta """ timedelta_list = [0] for i in range(1, len(timestamp_list)): value = timestamp_list[i] - timestamp_list[i-1] timedelta_list.append(value) return timedelta_list
[docs] def compare(sequence, other_sequence): """ Compare two sequences """ td_list = create_timedelta_list(sequence.timestamp_list) other_td_list = create_timedelta_list(other_sequence.timestamp_list) deltas = [] for one, two in zip(td_list, other_td_list): deltas.append(two-one) return sum(deltas)/len(deltas)
# def schedule_strategy(sequence): # """ # Thirst create schedule # Then try to run action by schedule in cycle # # :param sequence: current sequence # """ # if len(sequence) == 0: # return # schedule_list = [] # old_start_time = sequence.timestamp_list[0] # adjustment = 0.00018 # new_start_time = time.time() + adjustment # delta_time = new_start_time - old_start_time # for item in sequence.timestamp_list: # new_item = item+delta_time # schedule_list.append(new_item) # # current_action_index = 0 # schedule_list_len = len(schedule_list) # while current_action_index < schedule_list_len: # current_action = sequence.actions[current_action_index] # current_schedule_point = schedule_list[current_action_index] # current_time = time.time() # if current_time >= current_schedule_point: # replay(current_action, true_time=True) # current_action_index += 1
[docs] def schedule_strategy(sequence): """ Thirst create schedule Then try to run action by schedule in cycle :param sequence: current sequence """ if len(sequence) == 0: return schedule_list = [] old_start_time = sequence.start_time adjustment = 0.00018 new_start_time = time.time() + adjustment delta_time = new_start_time - old_start_time for item in sequence.timestamp_list: new_item = item+delta_time schedule_list.append(new_item) current_action_index = 0 schedule_list_len = len(schedule_list) while current_action_index < schedule_list_len: current_action = sequence.actions[current_action_index] current_schedule_point = schedule_list[current_action_index] current_time = time.time() if current_time >= current_schedule_point: replay(current_action, true_time=True) current_action_index += 1
[docs] def replay_simple_sequence(sequence): """ Just repeat all actions :param sequence: current sequence """ for action in sequence: replay(action, true_time=False)
[docs] def get_replayer(subtype: str, true_time=False): """ Get replayer for action subtype """ replayers = { 'KeyboardAction': push_button, 'MouseAction': move_mouse, 'ClickAction': click_mouse, 'ScrollAction': scroll_action, 'TimeSequence': schedule_strategy if true_time else replay_simple_sequence } return replayers[subtype]