From ca16de589479995a9ceb9874d9dc8e6a043ac2bd Mon Sep 17 00:00:00 2001 From: Rosyid Haryadi Date: Fri, 26 Jul 2024 20:47:47 +0700 Subject: init --- .env.template | 8 ++++ .idea/.gitignore | 8 ++++ .idea/inspectionProfiles/Project_Default.xml | 50 ++++++++++++++++++++++ .idea/inspectionProfiles/profiles_settings.xml | 6 +++ .idea/misc.xml | 7 ++++ .idea/modules.xml | 8 ++++ .idea/task-watcher.iml | 10 +++++ .idea/vcs.xml | 6 +++ README | 1 + bot.py | 3 ++ csvReader.py | 0 downloader.py | 58 ++++++++++++++++++++++++++ main.py | 3 ++ requirements.txt | 16 +++++++ 14 files changed, 184 insertions(+) create mode 100644 .env.template create mode 100644 .idea/.gitignore create mode 100644 .idea/inspectionProfiles/Project_Default.xml create mode 100644 .idea/inspectionProfiles/profiles_settings.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/task-watcher.iml create mode 100644 .idea/vcs.xml create mode 100644 README create mode 100644 bot.py create mode 100644 csvReader.py create mode 100644 downloader.py create mode 100644 main.py create mode 100644 requirements.txt diff --git a/.env.template b/.env.template new file mode 100644 index 0000000..e983322 --- /dev/null +++ b/.env.template @@ -0,0 +1,8 @@ +URL= +DOWNLOAD_PATH= +REPORT_AREA_SELECTOR_TYPE="css selector" +REPORT_AREA= +EXPORT_BUTTON_SELECTOR_TYPE="xpath" +EXPORT_BUTTON='//*[@id="mat-menu-panel-0"]/div/span[3]/button' +DOWNLOAD_BUTTON_SELECTOR_TYPE="xpath" +DOWNLOAD_BUTTON='//*[@id="mat-mdc-dialog-0"]/div/div/data-export-dialog/div/mat-dialog-actions/button[2]' diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..ac5c5ac --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,50 @@ + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..105ce2d --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..4664caf --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..ae315dc --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/task-watcher.iml b/.idea/task-watcher.iml new file mode 100644 index 0000000..2c80e12 --- /dev/null +++ b/.idea/task-watcher.iml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/README b/README new file mode 100644 index 0000000..c31b9b0 --- /dev/null +++ b/README @@ -0,0 +1 @@ +Pengingat ngisi leantime \ No newline at end of file diff --git a/bot.py b/bot.py new file mode 100644 index 0000000..ba7b96b --- /dev/null +++ b/bot.py @@ -0,0 +1,3 @@ +""" +Tergantung hasil pembacaan csvReader, ketrigger kalo bacaan lookerstudio masih di bawah 70% +""" \ No newline at end of file diff --git a/csvReader.py b/csvReader.py new file mode 100644 index 0000000..e69de29 diff --git a/downloader.py b/downloader.py new file mode 100644 index 0000000..8b74611 --- /dev/null +++ b/downloader.py @@ -0,0 +1,58 @@ +""" +Ini nanti periodik +""" +import os +import time + +from dotenv import load_dotenv +from selenium import webdriver +from selenium.webdriver import ActionChains +from selenium.webdriver.support import expected_conditions as EC +from selenium.webdriver.support.wait import WebDriverWait + +load_dotenv() + + +def driverSetup(url): + op = webdriver.ChromeOptions() + op.add_experimental_option('prefs', { + 'download.default_directory': os.getenv('DOWNLOAD_PATH') + }) + op.add_argument('--headless') + op.add_argument("--no-sandbox") + op.add_argument("--disable-dev-shm-usage") + driver = webdriver.Chrome(options=op) + driver.get(url) + return driver + + +def downloadCsv(): + driver = driverSetup(os.getenv('URL')) + action = ActionChains(driver) + + try: + reportArea = WebDriverWait(driver, 10).until( + EC.visibility_of_element_located((os.getenv('REPORT_AREA_SELECTOR_TYPE'), os.getenv('REPORT_AREA'))) + ) + action.move_to_element(reportArea).perform() + action.context_click(reportArea).perform() + + exportButton = WebDriverWait(driver, 10).until( + EC.element_to_be_clickable((os.getenv('EXPORT_BUTTON_SELECTOR_TYPE'), os.getenv('EXPORT_BUTTON'))) + ) + exportButton.click() + + downloadButton = WebDriverWait(driver, 10).until( + EC.element_to_be_clickable( + (os.getenv('DOWNLOAD_BUTTON_SELECTOR_TYPE'), os.getenv('DOWNLOAD_BUTTON'))) + ) + downloadButton.click() + + time.sleep(5) + + finally: + driver.quit() + + +if __name__ == '__main__': + downloadCsv() diff --git a/main.py b/main.py new file mode 100644 index 0000000..5a7e9f7 --- /dev/null +++ b/main.py @@ -0,0 +1,3 @@ +from downloader import downloadCsv + +downloadCsv() \ No newline at end of file diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..63e822a --- /dev/null +++ b/requirements.txt @@ -0,0 +1,16 @@ +attrs==23.2.0 +certifi==2024.7.4 +h11==0.14.0 +idna==3.7 +outcome==1.3.0.post0 +PySocks==1.7.1 +python-dotenv==1.0.1 +selenium==4.23.1 +sniffio==1.3.1 +sortedcontainers==2.4.0 +trio==0.26.0 +trio-websocket==0.11.1 +typing_extensions==4.12.2 +urllib3==2.2.2 +websocket-client==1.8.0 +wsproto==1.2.0 -- cgit v1.2.3-70-g09d2