summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRosyid Haryadi <rosyid_haryadi@protonmail.com>2024-07-27 11:15:35 +0700
committerRosyid Haryadi <rosyid_haryadi@protonmail.com>2024-07-27 11:15:35 +0700
commit6674c2ecd650ead1aaf91f7e86710d9eb3c99eee (patch)
tree3e1fea2b728118524a60535e582cde9b3cb5053c
parent4c384373df753b7ad784b5613d05c1b8b2eb56b3 (diff)
use virtual display
-rw-r--r--bot.py8
-rw-r--r--downloader.py37
-rw-r--r--requirements.txt1
3 files changed, 32 insertions, 14 deletions
diff --git a/bot.py b/bot.py
index ba7b96b..6550111 100644
--- a/bot.py
+++ b/bot.py
@@ -1,3 +1,9 @@
"""
Tergantung hasil pembacaan csvReader, ketrigger kalo bacaan lookerstudio masih di bawah 70%
-""" \ No newline at end of file
+"""
+
+
+class Bot:
+ # ngga perlu library lah
+ def __init__(self):
+ pass
diff --git a/downloader.py b/downloader.py
index 58b5f42..7ab3c79 100644
--- a/downloader.py
+++ b/downloader.py
@@ -10,6 +10,7 @@ from selenium.common import TimeoutException
from selenium.webdriver import ActionChains
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
+from pyvirtualdisplay import Display
from util import setupLogger
@@ -18,21 +19,31 @@ load_dotenv()
logger = setupLogger()
-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
+class Browser:
+ def __init__(self, url):
+ self.display = Display(visible=False, size=(800, 600))
+ self.display.start()
+ 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")
+ self.driver = webdriver.Chrome(options=op)
+ self.driver.get(url)
+
+ def getDriver(self):
+ return self.driver
+
+ def close(self):
+ self.driver.quit()
+ self.display.stop()
def downloadCsv():
- driver = driverSetup(os.getenv('URL'))
+ browser = Browser(os.getenv('URL'))
+ driver = browser.getDriver()
action = ActionChains(driver)
try:
@@ -60,7 +71,7 @@ def downloadCsv():
logger.error("Timed out while downloading report")
finally:
- driver.quit()
+ browser.close()
if __name__ == '__main__':
diff --git a/requirements.txt b/requirements.txt
index 63e822a..c8adcb3 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -5,6 +5,7 @@ idna==3.7
outcome==1.3.0.post0
PySocks==1.7.1
python-dotenv==1.0.1
+PyVirtualDisplay==3.0
selenium==4.23.1
sniffio==1.3.1
sortedcontainers==2.4.0