Skip to content

Commit 819b323

Browse files
committed
FIX: Adjust atexit in edge and chrome
1 parent 07525af commit 819b323

File tree

4 files changed

+34
-6
lines changed

4 files changed

+34
-6
lines changed

botcity/web/bot.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,42 @@
4646

4747

4848
def _cleanup(bot: ReferenceType[WebBot]):
49+
50+
def get_user_data_dir(opt, browser_name):
51+
browsers = {
52+
Browser.CHROME: ("--user-data-dir=", opt.arguments if opt else []),
53+
Browser.EDGE: ("--user-data-dir=", opt.arguments if opt else []),
54+
Browser.UNDETECTED_CHROME: ("--user-data-dir=", opt.arguments if opt else []),
55+
Browser.FIREFOX: None,
56+
Browser.IE: None
57+
}
58+
59+
items = browsers.get(browser_name, None)
60+
if not items:
61+
return None
62+
63+
result = next(filter(lambda x: x.startswith(items[0]), items[1]), None)
64+
if not result:
65+
return None
66+
67+
match_result = re.search(rf'{items[0]}([^ ]+)', result)
68+
69+
if not match_result:
70+
return None
71+
72+
return match_result.group(1)
73+
4974
if bot() is not None:
5075
try:
76+
options = bot().options
77+
name = bot().browser
5178
bot().stop_browser()
79+
if not bot():
80+
return None
81+
user_data_dir = get_user_data_dir(options, name)
82+
if not user_data_dir or "botcity_" not in user_data_dir:
83+
return None
84+
shutil.rmtree(user_data_dir, ignore_errors=True)
5285
except Exception:
5386
pass
5487

botcity/web/browsers/chrome.py

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import atexit
21
import json
32
import os
43
import tempfile
@@ -8,7 +7,6 @@
87
from selenium.webdriver.chrome.options import Options as ChromeOptions
98
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
109
from selenium.webdriver.chrome.service import Service as ChromeService # noqa: F401, F403
11-
from ..util import cleanup_temp_dir
1210

1311

1412
def default_options(headless=False, download_folder_path=None, user_data_dir=None,
@@ -76,7 +74,6 @@ def default_options(headless=False, download_folder_path=None, user_data_dir=Non
7674
if not user_data_dir:
7775
temp_dir = tempfile.TemporaryDirectory(prefix="botcity_")
7876
user_data_dir = temp_dir.name
79-
atexit.register(cleanup_temp_dir, temp_dir)
8077

8178
chrome_options.add_argument(f"--user-data-dir={user_data_dir}")
8279

botcity/web/browsers/edge.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
99
from selenium.webdriver import Edge, EdgeOptions # noqa: F401, F403
1010
from selenium.webdriver.edge.service import Service as EdgeService # noqa: F401, F403
11-
from ..util import cleanup_temp_dir
1211

1312

1413
def default_options(headless=False, download_folder_path=None, user_data_dir=None,
@@ -73,7 +72,6 @@ def default_options(headless=False, download_folder_path=None, user_data_dir=Non
7372
if not user_data_dir:
7473
temp_dir = tempfile.TemporaryDirectory(prefix="botcity_")
7574
user_data_dir = temp_dir.name
76-
atexit.register(cleanup_temp_dir, temp_dir)
7775

7876
edge_options.add_argument(f"--user-data-dir={user_data_dir}")
7977

botcity/web/browsers/firefox.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from selenium.webdriver.firefox.options import Options as FirefoxOptions
99
from selenium.webdriver.firefox.service import Service as FirefoxService # noqa: F401, F403
1010

11-
from ..util import cleanup_temp_dir
11+
from botcity.web.util import cleanup_temp_dir
1212

1313
FIREFOX_MIMETYPES_TO_DOWNLOAD = ['application/vnd.hzn-3d-crossword', 'video/3gpp', 'video/3gpp2',
1414
'application/vnd.mseq', 'application/vnd.3m.post-it-notes',

0 commit comments

Comments
 (0)