diff options
author | Rosyid Haryadi <rosyid_haryadi@protonmail.com> | 2024-07-27 11:15:35 +0700 |
---|---|---|
committer | Rosyid Haryadi <rosyid_haryadi@protonmail.com> | 2024-07-27 11:15:35 +0700 |
commit | 6674c2ecd650ead1aaf91f7e86710d9eb3c99eee (patch) | |
tree | 3e1fea2b728118524a60535e582cde9b3cb5053c | |
parent | 4c384373df753b7ad784b5613d05c1b8b2eb56b3 (diff) |
use virtual display
-rw-r--r-- | bot.py | 8 | ||||
-rw-r--r-- | downloader.py | 37 | ||||
-rw-r--r-- | requirements.txt | 1 |
3 files changed, 32 insertions, 14 deletions
@@ -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 |