File size: 4,858 Bytes
f4d52c1 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 |
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 # Line number to modify based on mode
new_line_content = driver.current_url # Content to write to the line
if line_to_modify > len(lines):
lines.extend(['\n'] * (line_to_modify - len(lines)))
elif lines[line_to_modify - 1].strip() == new_line_content:
# If the line already has the same content, no action is needed
return
lines[line_to_modify - 1] = new_line_content + '\n'
file.seek(0)
file.writelines(lines)
file.truncate()
except:
line_to_modify = mode + 1 # Line number to modify based on mode
new_line_content = driver.current_url # Content to write to the line
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 # Line number to read based on mode
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 |