From b44190f82a942754beb07872740635b37b4ee7c2 Mon Sep 17 00:00:00 2001 From: msglm Date: Fri, 17 Feb 2023 02:01:03 -0600 Subject: draft of new headless feature implemented --- indeedwatcher.nimble | 2 +- src/indeedwatcher.nim | 16 +++++++++++++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/indeedwatcher.nimble b/indeedwatcher.nimble index cf69199..528c547 100644 --- a/indeedwatcher.nimble +++ b/indeedwatcher.nimble @@ -12,5 +12,5 @@ binDir = "bin" requires "nim >= 1.6.10" requires "rss" -requires "webdriver" +requires "https://github.com/dom96/webdriver#699d3b9959ed94724521a768f11fcabed47c712b" requires "parsetoml" diff --git a/src/indeedwatcher.nim b/src/indeedwatcher.nim index 3fdb55a..9c280bb 100644 --- a/src/indeedwatcher.nim +++ b/src/indeedwatcher.nim @@ -7,6 +7,7 @@ import strutils import parsetoml import sequtils import uri +import json if not fileExists(getConfigDir() & "/indeedwatcher/config.toml"): createDir(getConfigDir() & "/indeedwatcher/") @@ -16,7 +17,9 @@ if not fileExists(getConfigDir() & "/indeedwatcher/config.toml"): #Port you wish chromedriver to use port = 9515 #Location of chromedriver - chromedriver = "" + chromedriver = "/usr/bin/chromedriver" + #If you would like headless mode enabled or not + headless = true #Array of RSS urls that you wish the program to parse feeds = [ \"https://rss.indeed.com/rss?q=Information%20Technology&l=Remote&jt=contract&explvl=entry_level\", \"https://rss.indeed.com/rss?q=Information%20Technology&l=Remote&jt=temporary&explvl=entry_level\"] @@ -46,9 +49,15 @@ let cache = open(cachefileloc, fmAppend) ##Filtering section of config let titleblacklist = config["blacklist"]["title"].getElems().mapIt(it.getStr()) +##Does the user desire headlessness? +var args: JsonNode +if config["headless"].getBool(): + args = %*{ "capabilities": {"alwaysMatch": { "goog:chromeOptions": { "args": ["--headless", "--lang=en_US", "--window-size=1920,1080", "--start-maximized", "--user-agent=\"Mozilla/5.0 (Windows NT 10.0; rv:109.0) Gecko/20100101 Firefox/109.0\""], } } } } +else: + args = %*{"capabilities": {"browserName": "chrome"}} #Webdriver -let chromedriver = startProcess(chromedriverloc, "", ["--headless"]) +let chromedriver = startProcess(chromedriverloc) sleep 5000 echo "connecting" #TODO make the port configurable, some users may have something running here @@ -71,7 +80,8 @@ proc terminate() {.noconv.} = setControlCHook(terminate) for feed in feeds: - session = driver.createSession() + #let args = %*{"desiredCapabilities":{"browserName":"chromium"}} + session = driver.createSession(args) if feedcounter > 3: echo "resting for 20 seconds ..." sleep 20000 -- cgit v1.2.3