|
from selenium.webdriver.common.by import By |
|
from selenium.webdriver.common.keys import Keys |
|
from selenium.webdriver.support.ui import WebDriverWait |
|
from selenium.webdriver.support import expected_conditions as EC |
|
import time |
|
|
|
def searchQuery(user_search, driver, elem, mode=0, score="", isLoggedIn=True): |
|
if isLoggedIn == False: |
|
anchors = driver.find_elements(By.XPATH, '//*[@class="sc-93qi7v-2 hbGpVM"]//a') |
|
for n_iter,anchor in enumerate(anchors): |
|
if anchor.get_attribute("lang") =="en": |
|
driver.execute_script("arguments[0].click();", anchor) |
|
|
|
user_search = user_search.lower() |
|
try: |
|
WebDriverWait(driver, timeout=5).until(EC.presence_of_element_located((By.XPATH, elem))) |
|
except: |
|
driver.refresh() |
|
WebDriverWait(driver, timeout=20).until(EC.presence_of_element_located((By.XPATH, elem))) |
|
search_bar = driver.find_element(By.XPATH, elem) |
|
|
|
try: |
|
search_bar.click() |
|
if not mode: |
|
time.sleep(1.8) |
|
driver.execute_script('arguments[0].value=arguments[1]', search_bar, user_search) |
|
except: |
|
time.sleep(3) |
|
driver.execute_script('arguments[0].value=arguments[1]', search_bar, user_search) |
|
|
|
if not mode: |
|
specific_Query(driver=driver, search_bar=search_bar, user_search=user_search) |
|
else: |
|
search_bar.send_keys(Keys.ARROW_DOWN) |
|
time.sleep(2) |
|
|
|
if mode: |
|
search_bar.send_keys(Keys.ARROW_DOWN) |
|
time.sleep(1.2) |
|
search_bar.send_keys(Keys.ENTER) |
|
time.sleep(0.3) |
|
|
|
try: |
|
driver.execute_script("arguments[0].value+=arguments[1]", search_bar, score) |
|
search_bar.send_keys(Keys.ENTER) |
|
except: |
|
pass |
|
|
|
|
|
def save_Search(driver, mode=0): |
|
try: |
|
with open("./commands/url.txt", "r+") as file: |
|
lines = file.readlines() |
|
|
|
line_to_modify = mode + 1 |
|
new_line_content = driver.current_url |
|
|
|
if line_to_modify > len(lines): |
|
lines.extend(['\n'] * (line_to_modify - len(lines))) |
|
elif lines[line_to_modify - 1].strip() == new_line_content: |
|
|
|
return |
|
|
|
lines[line_to_modify - 1] = new_line_content + '\n' |
|
|
|
file.seek(0) |
|
file.writelines(lines) |
|
file.truncate() |
|
except: |
|
line_to_modify = mode + 1 |
|
new_line_content = driver.current_url |
|
|
|
with open("./commands/url.txt", "w") as file: |
|
lines = ['\n'] * line_to_modify |
|
lines[line_to_modify - 1] = new_line_content + '\n' |
|
file.writelines(lines) |
|
|
|
|
|
|
|
def continue_Search(driver, link, mode=0): |
|
try: |
|
with open("./commands/url.txt", "r") as file: |
|
lines = file.readlines() |
|
|
|
line_to_read = mode + 1 |
|
|
|
if len(lines) >= line_to_read and lines[line_to_read - 1].strip() != '': |
|
url = lines[line_to_read - 1].strip() |
|
driver.get(url) |
|
else: |
|
driver.get(link) |
|
except: |
|
driver.get(link) |
|
|
|
|
|
def specific_Query(driver, search_bar, user_search): |
|
user_search = user_search.replace("_"," ").split() |
|
try: |
|
for user_word in user_search: |
|
time.sleep(1.2) |
|
driver.execute_script('arguments[0].value=arguments[1]', search_bar, user_word) |
|
time.sleep(0.6) |
|
search_bar.send_keys(Keys.SPACE) |
|
time.sleep(2.2) |
|
|
|
checker = 0 |
|
tag_pos = 0 |
|
|
|
search_bar_queries = driver.find_element(By.XPATH, '//*[@class="sc-1974j38-2 kjWkkt"]').find_elements(By.XPATH, './/*[@class="sc-d98f2c-0"]') |
|
for n_iter, query in enumerate(search_bar_queries): |
|
query_text = query.find_element(By.XPATH, './/div//div[2]').text.lower() |
|
|
|
for text in user_search: |
|
if query_text.find(text) != -1: |
|
checker += 1 |
|
|
|
if checker == len(user_search): |
|
tag_pos = n_iter |
|
break |
|
else: |
|
checker = 0 |
|
|
|
if checker == len(user_search): |
|
for i in range(tag_pos+1): |
|
time.sleep(0.5) |
|
search_bar.send_keys(Keys.ARROW_DOWN) |
|
break |
|
except: |
|
driver.execute_script('arguments[0].value=arguments[1]', search_bar, user_search) |
|
search_bar.send_keys(Keys.ENTER) |
|
|
|
def contains_works(driver, elem): |
|
try: |
|
WebDriverWait(driver, timeout=9).until(EC.presence_of_element_located((By.XPATH, elem))) |
|
return True |
|
except: |
|
return False |