From 957a3174d8490f24f8af7ea2099c6484af347037 Mon Sep 17 00:00:00 2001 From: printfuck Date: Wed, 22 Apr 2020 06:23:26 +0200 Subject: [PATCH] spline optimization experiments + fixes --- main.py | 20 ++++++++++++++------ math.py => spline.py | 14 +++++++++++++- 2 files changed, 27 insertions(+), 7 deletions(-) rename math.py => spline.py (80%) diff --git a/main.py b/main.py index 90a1976..8549503 100755 --- a/main.py +++ b/main.py @@ -9,12 +9,13 @@ from threading import Timer, Lock import selenium from selenium import webdriver +from selenium.webdriver.common.action_chains import ActionChains import lxml.etree as etree from cssselect import HTMLTranslator, SelectorError import requests as req from io import StringIO -import math +from spline import gcv,bspline #import web DB_HOST = "127.0.0.1" @@ -118,14 +119,18 @@ def getContent(entryUrl, session_cookies, selector): return a.tostring() #p1 = (23.,23.) -def move_mouse(p1, p2, driver, time=1000, n=400, click=False): +def move_mouse(p1, p2, driver, time_=1000, n=400, click=False): action = ActionChains(driver); - points = bspline(gcv(p1,p2,5), degree=3, n=n) + points = bspline(gcv(p1,p2,12), degree=5, n=n) + print(points) for point in points: - action.move_to_element(point[0],point[1]); + if point[0] < 0 or point[1] < 0: + continue + print(point[0],point[1]) + action.move_by_offset(int(point[0]),int(point[1])); action.perform(); - sleep(time/(1000*n)) + time.sleep(time_/(1000*n)) if click: action.click() @@ -135,11 +140,14 @@ def get_loc(e): def getSession(user, password, url="https://accounts.ft.com/login"): #selenium driver = selenium.webdriver.Chrome() + driver.set_window_position(0, 0) + driver.set_window_size(3840, 1920) driver.get(url) email = driver.find_element_by_id("enter-email") pos1 = get_loc(email) - move_mouse((128.3, 345.2),pos1,driver, n=200) + print(pos1) + move_mouse((123.3, 334.2),pos1,driver, n=200) email.send_keys(user) time.sleep(2) diff --git a/math.py b/spline.py similarity index 80% rename from math.py rename to spline.py index f88acd6..7145c15 100644 --- a/math.py +++ b/spline.py @@ -43,6 +43,18 @@ def bspline(cv, n=100, degree=3, periodic=False): # Calculate result return np.array(si.splev(u, (kv,cv.T,degree))).T + #a_d = dist.euclidean(cv[0],v[0]) + #b_d = dist.euclidean(v[-1],cv[-1]) + + #a = np.array(list(zip( + # np.linspace(cv[0][0],v[0][0],a_d*2), + # np.linspace(cv[0][1],v[0][1],a_d*2)))) + + #b = np.array(list(zip( + # np.linspace(v[-1][0],cv[-1][0],b_d*2), + # np.linspace(v[-1][1],cv[-1][1],b_d*2)))) + #return np.concatenate(a,v,b) + def gcv(p1,p2, n): d = distance.euclidean(p1,p2) @@ -53,5 +65,5 @@ def gcv(p1,p2, n): r_ = np.random.random_sample((n-2,)) s = np.array(list(zip(x_lst + d *(r_-0.5),y_lst + d *(r-0.5)))) b = np.concatenate((np.array([[p1[0],p1[1]]]),np.concatenate((s,np.array([[p2[0],p2[1]]]))))) - return s + return b