mirror of
https://github.com/internetarchive/brozzler.git
synced 2025-09-24 22:48:33 -04:00
create temp dir for user profile rather than rely on --temp-profile
This commit is contained in:
parent
b4846e1063
commit
b96d8856d4
1 changed files with 18 additions and 14 deletions
|
@ -12,6 +12,7 @@ import threading
|
||||||
import subprocess
|
import subprocess
|
||||||
import signal
|
import signal
|
||||||
from kombu import Connection, Exchange, Queue
|
from kombu import Connection, Exchange, Queue
|
||||||
|
import tempfile
|
||||||
|
|
||||||
class UmbraWorker:
|
class UmbraWorker:
|
||||||
logger = logging.getLogger('umbra.UmbraWorker')
|
logger = logging.getLogger('umbra.UmbraWorker')
|
||||||
|
@ -31,19 +32,20 @@ class UmbraWorker:
|
||||||
with self.lock:
|
with self.lock:
|
||||||
self.url = url
|
self.url = url
|
||||||
self.url_metadata = url_metadata
|
self.url_metadata = url_metadata
|
||||||
with Chrome(self.chrome_port, self.chrome_exe, self.chrome_wait) as websocket_url:
|
with tempfile.TemporaryDirectory() as user_data_dir:
|
||||||
websock = websocket.WebSocketApp(websocket_url,
|
with Chrome(self.chrome_port, self.chrome_exe, self.chrome_wait, user_data_dir) as websocket_url:
|
||||||
on_open=self.visit_page, on_message=self.handle_message)
|
websock = websocket.WebSocketApp(websocket_url,
|
||||||
websock_thread = threading.Thread(target=websock.run_forever)
|
on_open=self.visit_page, on_message=self.handle_message)
|
||||||
websock_thread.start()
|
websock_thread = threading.Thread(target=websock.run_forever)
|
||||||
|
websock_thread.start()
|
||||||
|
|
||||||
self.page_done.clear()
|
self.page_done.clear()
|
||||||
self._reset_idle_timer()
|
self._reset_idle_timer()
|
||||||
while not self.page_done.is_set():
|
while not self.page_done.is_set():
|
||||||
time.sleep(0.5)
|
time.sleep(0.5)
|
||||||
|
|
||||||
websock.close()
|
websock.close()
|
||||||
self.idle_timer = None
|
self.idle_timer = None
|
||||||
|
|
||||||
def _reset_idle_timer(self):
|
def _reset_idle_timer(self):
|
||||||
if self.idle_timer:
|
if self.idle_timer:
|
||||||
|
@ -83,7 +85,7 @@ class UmbraWorker:
|
||||||
elif "method" in message.keys() and message["method"] == "Page.loadEventFired":
|
elif "method" in message.keys() and message["method"] == "Page.loadEventFired":
|
||||||
self.logger.debug("got Page.loadEventFired, starting behaviors for {}".format(self.url))
|
self.logger.debug("got Page.loadEventFired, starting behaviors for {}".format(self.url))
|
||||||
from umbra import behaviors
|
from umbra import behaviors
|
||||||
behaviors.execute(self.url, websock, self.command_id)
|
behaviors.execute(self.url, websock, self.command_id)
|
||||||
|
|
||||||
def get_message_handler(self, url, url_metadata, command_id):
|
def get_message_handler(self, url, url_metadata, command_id):
|
||||||
this_watchdog = self.watchdog(command_id)
|
this_watchdog = self.watchdog(command_id)
|
||||||
|
@ -159,10 +161,11 @@ class Umbra:
|
||||||
class Chrome:
|
class Chrome:
|
||||||
logger = logging.getLogger('umbra.Chrome')
|
logger = logging.getLogger('umbra.Chrome')
|
||||||
|
|
||||||
def __init__(self, port, executable, browser_wait):
|
def __init__(self, port, executable, browser_wait, user_data_dir):
|
||||||
self.port = port
|
self.port = port
|
||||||
self.executable = executable
|
self.executable = executable
|
||||||
self.browser_wait = browser_wait
|
self.browser_wait = browser_wait
|
||||||
|
self.user_data_dir = user_data_dir
|
||||||
|
|
||||||
def fetch_debugging_json():
|
def fetch_debugging_json():
|
||||||
raw_json = urllib.request.urlopen("http://localhost:%s/json" % self.port).read()
|
raw_json = urllib.request.urlopen("http://localhost:%s/json" % self.port).read()
|
||||||
|
@ -171,7 +174,8 @@ class Chrome:
|
||||||
|
|
||||||
# returns websocket url to chrome window with about:blank loaded
|
# returns websocket url to chrome window with about:blank loaded
|
||||||
def __enter__(self):
|
def __enter__(self):
|
||||||
chrome_args = [self.executable, "--temp-profile",
|
chrome_args = [self.executable,
|
||||||
|
"--user-data-dir={}".format(self.user_data_dir),
|
||||||
"--remote-debugging-port=%s" % self.port,
|
"--remote-debugging-port=%s" % self.port,
|
||||||
"--disable-web-sockets", "--disable-cache",
|
"--disable-web-sockets", "--disable-cache",
|
||||||
"--window-size=1100,900", "--enable-logging",
|
"--window-size=1100,900", "--enable-logging",
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue