summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.env.template8
-rw-r--r--.idea/.gitignore8
-rw-r--r--.idea/inspectionProfiles/Project_Default.xml50
-rw-r--r--.idea/inspectionProfiles/profiles_settings.xml6
-rw-r--r--.idea/misc.xml7
-rw-r--r--.idea/modules.xml8
-rw-r--r--.idea/task-watcher.iml10
-rw-r--r--.idea/vcs.xml6
-rw-r--r--README1
-rw-r--r--bot.py3
-rw-r--r--csvReader.py0
-rw-r--r--downloader.py58
-rw-r--r--main.py3
-rw-r--r--requirements.txt16
14 files changed, 184 insertions, 0 deletions
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 @@
+<component name="InspectionProjectProfileManager">
+ <profile version="1.0">
+ <option name="myName" value="Project Default" />
+ <inspection_tool class="DuplicatedCode" enabled="true" level="WEAK WARNING" enabled_by_default="true">
+ <Languages>
+ <language minSize="85" name="Python" />
+ </Languages>
+ </inspection_tool>
+ <inspection_tool class="PyPackageRequirementsInspection" enabled="true" level="WARNING" enabled_by_default="true">
+ <option name="ignoredPackages">
+ <value>
+ <list size="11">
+ <item index="0" class="java.lang.String" itemvalue="pandas" />
+ <item index="1" class="java.lang.String" itemvalue="greenlet" />
+ <item index="2" class="java.lang.String" itemvalue="six" />
+ <item index="3" class="java.lang.String" itemvalue="pyodbc" />
+ <item index="4" class="java.lang.String" itemvalue="python-dateutil" />
+ <item index="5" class="java.lang.String" itemvalue="SQLAlchemy" />
+ <item index="6" class="java.lang.String" itemvalue="psycopg2" />
+ <item index="7" class="java.lang.String" itemvalue="python-dotenv" />
+ <item index="8" class="java.lang.String" itemvalue="numpy" />
+ <item index="9" class="java.lang.String" itemvalue="pytz" />
+ <item index="10" class="java.lang.String" itemvalue="typing_extensions" />
+ </list>
+ </value>
+ </option>
+ </inspection_tool>
+ <inspection_tool class="PyPep8Inspection" enabled="true" level="WEAK WARNING" enabled_by_default="true">
+ <option name="ignoredErrors">
+ <list>
+ <option value="E402" />
+ </list>
+ </option>
+ </inspection_tool>
+ <inspection_tool class="PyPep8NamingInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true">
+ <option name="ignoredErrors">
+ <list>
+ <option value="N806" />
+ <option value="N802" />
+ <option value="N803" />
+ </list>
+ </option>
+ </inspection_tool>
+ <inspection_tool class="SpellCheckingInspection" enabled="false" level="TYPO" enabled_by_default="false">
+ <option name="processCode" value="true" />
+ <option name="processLiterals" value="true" />
+ <option name="processComments" value="true" />
+ </inspection_tool>
+ </profile>
+</component> \ 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 @@
+<component name="InspectionProjectProfileManager">
+ <settings>
+ <option name="USE_PROJECT_PROFILE" value="false" />
+ <version value="1.0" />
+ </settings>
+</component> \ 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 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="Black">
+ <option name="sdkName" value="Python 3.12 (task-watcher)" />
+ </component>
+ <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.12 (task-watcher)" project-jdk-type="Python SDK" />
+</project> \ 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 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="ProjectModuleManager">
+ <modules>
+ <module fileurl="file://$PROJECT_DIR$/.idea/task-watcher.iml" filepath="$PROJECT_DIR$/.idea/task-watcher.iml" />
+ </modules>
+ </component>
+</project> \ 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 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="PYTHON_MODULE" version="4">
+ <component name="NewModuleRootManager">
+ <content url="file://$MODULE_DIR$">
+ <excludeFolder url="file://$MODULE_DIR$/.venv" />
+ </content>
+ <orderEntry type="inheritedJdk" />
+ <orderEntry type="sourceFolder" forTests="false" />
+ </component>
+</module> \ 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 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="VcsDirectoryMappings">
+ <mapping directory="$PROJECT_DIR$" vcs="Git" />
+ </component>
+</project> \ 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
--- /dev/null
+++ b/csvReader.py
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