diff options
Diffstat (limited to 'python')
| -rw-r--r-- | python/report_ops/scotia.py | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/python/report_ops/scotia.py b/python/report_ops/scotia.py new file mode 100644 index 00000000..82a52075 --- /dev/null +++ b/python/report_ops/scotia.py @@ -0,0 +1,77 @@ +import os +import time +from selenium import webdriver +from selenium.webdriver.firefox.options import Options +from selenium.webdriver.support.ui import WebDriverWait +from report_ops.logger import get_logger + +from serenitas.utils.env import DAILY_DIR + +logger = get_logger(__name__) + + +def wait(driver): + WebDriverWait(driver, 10).until( + lambda driver: driver.execute_script("return document.readyState") == "complete" + ) + + +def download_report(account_username, password, report_dir): + driver = create_driver(report_dir) + login(driver, account_username, password) + navigate_to_inbox(driver) + attachment_element = get_attachment_element(driver) + fname = attachment_element.text.split()[0] + if not os.path.exists(os.path.join(report_dir, fname)): + attachment_element.click() + else: + logger.info(f"{fname} already exists in {report_dir}") + driver.quit() + + +def login(driver, account_username, password): + driver.get("https://web1.mail.scotiabank.com/webmail/do/Home") + wait(driver) + username_element = driver.find_element_by_id("username") + username_element.send_keys(account_username) + password_element = driver.find_element_by_id("passwordid") + password_element.send_keys(password) + login_button = driver.find_element_by_id("loginbutton") + login_button.click() + wait(driver) + + +def navigate_to_inbox(driver): + time.sleep(1) + login_button = driver.find_element_by_id("leftNavFolderLink") + login_button.click() + time.sleep(1) + login_button = driver.find_element_by_id("leftNavInboxFolderLink") + login_button.click() + time.sleep(1) + elements = driver.find_elements_by_class_name("zfolder-msg-clickable")[0] + elements.click() + time.sleep(1) + + +def get_attachment_element(driver): + return driver.find_elements_by_class_name("zmessage-attachment-link")[0] + + +def create_driver(download_dir): + options = Options() + options.add_argument("--headless") + fp = webdriver.FirefoxProfile() + fp.set_preference("browser.download.dir", str(download_dir)) + fp.set_preference("browser.download.folderList", 2) + fp.set_preference( + "browser.helperApps.neverAsk.saveToDisk", "application/octet-stream" + ) + return webdriver.Firefox(firefox_profile=fp, options=options) + + +def download_scotia_report(): + scotia_login = {"selene-ops@lmcg.com": "oeujG*UF!53o"} + for username, password in scotia_login.items(): + REPORT_DIR = DAILY_DIR / "Selene" / "Scotia_reports" + download_report(username, password, REPORT_DIR) |
