136 lines
4.0 KiB
Python
136 lines
4.0 KiB
Python
#
|
|
#
|
|
# Fetcher for my otter and pinterest accounts. And whatever else.
|
|
|
|
from selenium import webdriver
|
|
from selenium.webdriver.common.keys import Keys
|
|
from selenium.webdriver.support.ui import WebDriverWait, Select
|
|
from selenium.webdriver.common.by import By
|
|
from selenium.webdriver.support import expected_conditions as EC
|
|
import re
|
|
|
|
import time
|
|
|
|
from canvas_secrets import banner_url1, banner_url2, GOO, GOO_PIN, otter_login, otter_pw
|
|
|
|
|
|
|
|
# Use Firefox and log in to ssb and get full schedule
|
|
def login():
|
|
#todo: my data here.... secret
|
|
url = banner_url2
|
|
un = GOO
|
|
pw = GOO_PIN
|
|
text = ''
|
|
try:
|
|
driver = webdriver.Firefox()
|
|
driver.get(url)
|
|
driver.find_element_by_id("username").clear()
|
|
driver.find_element_by_id("username").send_keys(un)
|
|
driver.find_element_by_name("password").send_keys(pw)
|
|
driver.find_element_by_name("loginForm").submit()
|
|
driver.implicitly_wait(5)
|
|
|
|
print(driver.title)
|
|
|
|
driver.find_element_by_link_text("Students").click()
|
|
driver.implicitly_wait(5)
|
|
print(driver.title)
|
|
|
|
driver.find_element_by_link_text("Registration").click()
|
|
driver.implicitly_wait(5)
|
|
print(driver.title)
|
|
|
|
driver.find_element_by_link_text("Search for Classes").click()
|
|
driver.implicitly_wait(15)
|
|
print(driver.title)
|
|
|
|
dd = Select(driver.find_element_by_name("p_term"))
|
|
if (dd):
|
|
dd.select_by_visible_text(SEMESTER)
|
|
driver.find_element_by_xpath("/html/body/div/div[4]/form").submit()
|
|
driver.implicitly_wait(15)
|
|
print(driver.title)
|
|
|
|
driver.find_element_by_xpath("/html/body/div/div[4]/form/input[18]").click()
|
|
driver.implicitly_wait(10)
|
|
print(driver.title)
|
|
|
|
driver.find_element_by_name("SUB_BTN").click()
|
|
driver.implicitly_wait(10)
|
|
print(driver.title)
|
|
text = driver.page_source
|
|
|
|
|
|
except Exception as e:
|
|
print("Got an exception: ", e)
|
|
finally:
|
|
print("")
|
|
driver.quit()
|
|
return text
|
|
|
|
|
|
|
|
|
|
|
|
def filename_friendly(str):
|
|
str1 = re.sub(r'\s+','_',str)
|
|
return "".join([c for c in str1 if c.isalpha() or c.isdigit() or c==' ']).rstrip()
|
|
|
|
def otter():
|
|
driver = webdriver.Firefox()
|
|
driver.get("https://otter.ai/signin")
|
|
#assert "Python" in driver.title
|
|
elem = driver.find_element_by_css_selector('#mat-input-0')
|
|
elem.clear()
|
|
elem.send_keys(otter_login)
|
|
elem.send_keys(Keys.RETURN)
|
|
|
|
|
|
elem = WebDriverWait(driver, 10).until(
|
|
EC.presence_of_element_located((By.CSS_SELECTOR, "#mat-input-1")))
|
|
elem.clear()
|
|
elem.send_keys(otter_pw)
|
|
elem.send_keys(Keys.RETURN)
|
|
time.sleep(5)
|
|
#driver.implicitly_wait(15)
|
|
|
|
driver.get("https://otter.ai/my-notes")
|
|
driver.implicitly_wait(10)
|
|
|
|
items = driver.find_elements_by_css_selector('div.__conversation-title')
|
|
print("I found %i conversations" % len(items))
|
|
titles = []
|
|
for i in items:
|
|
print(i.text)
|
|
titles.append(i.text)
|
|
|
|
count = len(items)
|
|
|
|
n = 0
|
|
while n < count:
|
|
items[n].click()
|
|
element = WebDriverWait(driver, 15).until(
|
|
EC.presence_of_element_located((By.CSS_SELECTOR, "div.conversation-detail__content")))
|
|
|
|
date_elem = driver.find_element_by_css_selector('.conversation-detail__title__meta')
|
|
kw_elem = driver.find_element_by_css_selector('.conversation-detail__title__keywords-list')
|
|
|
|
myfile = filename_friendly(date_elem.text) + '_' + filename_friendly(titles[n]) + '.txt'
|
|
ff = open('otter/%i.txt' % n, 'w')
|
|
ff.write("Title: %s\n" % titles[n])
|
|
ff.write("Keywords: %s\n\n" % kw_elem.text)
|
|
ff.write(element.text)
|
|
ff.close()
|
|
|
|
driver.get("https://otter.ai/my-notes")
|
|
driver.implicitly_wait(10)
|
|
|
|
items = driver.find_elements_by_css_selector('div.__conversation-title')
|
|
n += 1
|
|
driver.close()
|
|
print("OK")
|
|
|
|
#otter()
|
|
|
|
print(login() ) |