diff --git a/src/muneem/etaoin.clj b/src/muneem/etaoin.clj index 04364f2..895aaff 100644 --- a/src/muneem/etaoin.clj +++ b/src/muneem/etaoin.clj @@ -3,14 +3,18 @@ [clojure.java.shell :refer [sh]] [etaoin.keys :as k])) -(def driver (e/chrome {:headless true +(def driver (e/chrome {;:headless true + :user-agent "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36" :args ["--disable-blink-features=AutomationControlled" "--maximize"] + :size [1920 1080] :prefs {:profile.default_content_setting_values.automatic_downloads 1}})) ;:download-dir "./documents/" (defn download-csv [] (e/js-execute driver "Object.defineProperty(navigator, 'webdriver', {get: () => undefined})") + #_(e/js-execute driver "window.chrome = { app: { isInstalled: false, InstallState: { DISABLED: disabled, INSTALLED: installed, NOT_INSTALLED: not_installed }, RunningState: { CANNOT_RUN: cannot_run, READY_TO_RUN: ready_to_run, RUNNING: running } } }") + (e/js-execute driver "const originalQuery = window.navigator.permissions.query; return window.navigator.permissions.query = (parameters) => ( parameters.name === 'notifications' ? Promise.resolve({ state: Notification.permission }) : originalQuery(parameters));") (e/go driver "https://ib.nab.com.au/nabib/index.jsp") (e/wait-visible driver [{:id :username}]) ; Don't advertise that we're a bot @@ -19,23 +23,29 @@ (e/fill driver {:id :password} k/enter) (e/wait 4) (e/click driver {:tag :button :id :hamburger-btn}) - (e/click-el driver (e/query driver {:css "li.selected>button"})) (e/click-el driver (e/query driver {:tag :a :fn/text "Transaction history"})) (e/wait 4) ; Update to last 7 days (e/js-execute driver "document.querySelector(\"#bodyContent > miniapp-transactions\").shadowRoot.querySelector(\"#dropdown-toggle-button-DateDropdown\").click()") (e/js-execute driver "document.querySelector(\"#bodyContent > miniapp-transactions\").shadowRoot.querySelector(\"#dropdown-listbox-DateDropdown-0\").click()") + ; update twice to be sure (e/js-execute driver "document.querySelector(\"#bodyContent > miniapp-transactions\").shadowRoot.querySelector(\"div > div > div > div.Containerstyle__StyledWrapper-sc-10ei1r0-0.dnudTa > div > div > div > div.StyledScreenView-jlloJx.gsnnCS > form > div > div:nth-child(3) > div > button\").click()") - (e/wait 2) + (e/wait 6) + (e/js-execute driver "document.querySelector(\"#bodyContent > miniapp-transactions\").shadowRoot.querySelector(\"div > div > div > div.Containerstyle__StyledWrapper-sc-10ei1r0-0.dnudTa > div > div > div > div.StyledScreenView-jlloJx.gsnnCS > form > div > div:nth-child(3) > div > button\").click()") + (e/wait 6) ; Download checking file (e/js-execute driver "document.querySelector(\"#bodyContent > miniapp-transactions\").shadowRoot.querySelector(\"#export-button > div\").click()") (e/js-execute driver "document.querySelector(\"#bodyContent > miniapp-transactions\").shadowRoot.querySelector(\"div > div > div > div:nth-child(2) > div > div > div > div > div.StyledScreenView-jlloJx.gsnnCS > div > div > div > div.StyledTopRow-cijGbF.StyledExportCol-fYxmhQ.ibndGm.cAjmIO.sc-dkPtRN.Colstyle__StyledCol-sc-1evc4kf-0.ketKXK.fqofCs > div > div > div > ul > li:nth-child(1) > button\").click()") (e/wait 3) - ; Download savings file + ; change to savings file (e/js-execute driver "document.querySelector(\"#bodyContent > miniapp-transactions\").shadowRoot.querySelector(\"#dropdown-toggle-button-accountsListDropdown > div\").click()") (e/js-execute driver "document.querySelector(\"#bodyContent > miniapp-transactions\").shadowRoot.querySelector(\"#dropdown-listbox-accountsListDropdown-1 > div > div > div.AccountCardstyle__StyledAccountTypeContainer-sc-16p3i3w-1.cLXpwB\").click()") + ; update twice to be sure (e/js-execute driver "document.querySelector(\"#bodyContent > miniapp-transactions\").shadowRoot.querySelector(\"div > div > div > div.Containerstyle__StyledWrapper-sc-10ei1r0-0.dnudTa > div > div > div > div.StyledScreenView-jlloJx.gsnnCS > form > div > div:nth-child(3) > div > button\").click()") - (e/wait 3) + (e/wait 6) + (e/js-execute driver "document.querySelector(\"#bodyContent > miniapp-transactions\").shadowRoot.querySelector(\"div > div > div > div.Containerstyle__StyledWrapper-sc-10ei1r0-0.dnudTa > div > div > div > div.StyledScreenView-jlloJx.gsnnCS > form > div > div:nth-child(3) > div > button\").click()") + (e/wait 6) + ; Download savings file (e/js-execute driver "document.querySelector(\"#bodyContent > miniapp-transactions\").shadowRoot.querySelector(\"#export-button > div\").click()") (e/js-execute driver "document.querySelector(\"#bodyContent > miniapp-transactions\").shadowRoot.querySelector(\"div > div > div > div:nth-child(2) > div > div > div > div > div.StyledScreenView-jlloJx.gsnnCS > div > div > div > div.StyledTopRow-cijGbF.StyledExportCol-fYxmhQ.ibndGm.cAjmIO.sc-dkPtRN.Colstyle__StyledCol-sc-1evc4kf-0.ketKXK.fqofCs > div > div > div > ul > li:nth-child(1) > button\").click()") (e/wait 3) diff --git a/src/muneem/import.clj b/src/muneem/import.clj index 61677ec..d701748 100644 --- a/src/muneem/import.clj +++ b/src/muneem/import.clj @@ -385,5 +385,5 @@ (mapv write-transaction-to-file (drop-last (take-csv csv))) (mapv write-transaction-to-file-savings (drop-last (take-csv csv)))) (write-accounts beancount-file) - #_(assert-balance (last (take-csv csv)) checking?) + (assert-balance (last (take-csv csv)) checking?) (reset! new-accounts #{}))