# # # 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() )