Fsg-Pp / commands /universal.py
Kyo-Kai's picture
Upload 18 files
f4d52c1 verified
raw
history blame
No virus
4.86 kB
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