From 6674c2ecd650ead1aaf91f7e86710d9eb3c99eee Mon Sep 17 00:00:00 2001 From: Rosyid Haryadi Date: Sat, 27 Jul 2024 11:15:35 +0700 Subject: use virtual display --- bot.py | 8 +++++++- downloader.py | 37 ++++++++++++++++++++++++------------- requirements.txt | 1 + 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 -- cgit v1.2.3-70-g09d2