Finish Chrome example loading v1
This commit is contained in:
@@ -46,6 +46,10 @@ def get_default_search_engine(env, config: Dict[str, str]):
|
||||
|
||||
|
||||
def get_cookie_data(env, config: Dict[str, str]):
|
||||
"""
|
||||
Get the cookies from the Chrome browser.
|
||||
Assume the cookies are stored in the default location, not encrypted and not large in size.
|
||||
"""
|
||||
os_type = env.vm_platform
|
||||
if os_type == 'Windows':
|
||||
chrome_cookie_file_path = env.controller.execute_python_command("""import os; print(os.path.join(os.getenv('LOCALAPPDATA'),
|
||||
@@ -61,21 +65,23 @@ def get_cookie_data(env, config: Dict[str, str]):
|
||||
else:
|
||||
raise Exception('Unsupported operating system')
|
||||
|
||||
# todo: add a new controller function to connect the cookie database
|
||||
#############
|
||||
try:
|
||||
conn = sqlite3.connect(chrome_cookie_file_path)
|
||||
content = env.controller.get_file(chrome_cookie_file_path)
|
||||
_path = os.path.join(env.cache_dir, config["dest"])
|
||||
|
||||
with open(_path, "wb") as f:
|
||||
f.write(content)
|
||||
|
||||
conn = sqlite3.connect(_path)
|
||||
cursor = conn.cursor()
|
||||
|
||||
# Query to check for OpenAI cookies
|
||||
cursor.execute("SELECT * FROM cookies")
|
||||
cookies = cursor.fetchall()
|
||||
|
||||
return cookies
|
||||
except Exception as e:
|
||||
logger.error(f"Error: {e}")
|
||||
return None
|
||||
#############
|
||||
|
||||
|
||||
def get_bookmarks(env, config: Dict[str, str]):
|
||||
@@ -94,17 +100,12 @@ def get_bookmarks(env, config: Dict[str, str]):
|
||||
else:
|
||||
raise Exception('Unsupported operating system')
|
||||
|
||||
try:
|
||||
content = env.controller.get_file(preference_file_path)
|
||||
# make content json variable
|
||||
data = json.load(content)
|
||||
|
||||
bookmarks = data.get('roots', {})
|
||||
return bookmarks
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"Error: {e}")
|
||||
return None
|
||||
content = env.controller.get_file(preference_file_path)
|
||||
if not content:
|
||||
return []
|
||||
data = json.loads(content)
|
||||
bookmarks = data.get('roots', {})
|
||||
return bookmarks
|
||||
|
||||
|
||||
# todo: move this to the main.py
|
||||
@@ -190,3 +191,83 @@ def get_active_tab_info(env, config: Dict[str, str]):
|
||||
|
||||
browser.close()
|
||||
return active_tab_info
|
||||
|
||||
|
||||
def get_pdf_from_url(env, config: Dict[str, str]) -> str:
|
||||
"""
|
||||
Download a PDF from a URL.
|
||||
"""
|
||||
_url = config["path"]
|
||||
_path = os.path.join(env.cache_dir, config["dest"])
|
||||
|
||||
host = env.vm_ip
|
||||
port = 9222 # fixme: this port is hard-coded, need to be changed from config file
|
||||
|
||||
remote_debugging_url = f"http://{host}:{port}"
|
||||
|
||||
with sync_playwright() as p:
|
||||
browser = p.chromium.connect_over_cdp(remote_debugging_url)
|
||||
page = browser.new_page()
|
||||
page.goto(_url)
|
||||
page.pdf(path=_path)
|
||||
browser.close()
|
||||
|
||||
return _path
|
||||
|
||||
|
||||
# fixme: needs to be changed (maybe through post-processing) since it's not working
|
||||
def get_chrome_saved_address(env, config: Dict[str, str]):
|
||||
# host = env.vm_ip
|
||||
host = "192.168.13.130"
|
||||
port = 9222 # fixme: this port is hard-coded, need to be changed from config file
|
||||
|
||||
remote_debugging_url = f"http://{host}:{port}"
|
||||
with sync_playwright() as p:
|
||||
# connect to remote Chrome instance
|
||||
browser = p.chromium.connect_over_cdp(remote_debugging_url)
|
||||
|
||||
page = browser.new_page()
|
||||
|
||||
# Navigate to Chrome's settings page for autofill
|
||||
page.goto("chrome://settings/addresses")
|
||||
|
||||
# Get the HTML content of the page
|
||||
content = page.content()
|
||||
|
||||
browser.close()
|
||||
|
||||
return content
|
||||
|
||||
|
||||
def get_shortcuts_on_desktop(env, config: Dict[str, str]):
|
||||
# Find out the operating system
|
||||
os_name = env.vm_platform
|
||||
|
||||
# Depending on the OS, define the shortcut file extension
|
||||
if os_name == 'Windows':
|
||||
# Windows shortcuts are typically .url or .lnk files
|
||||
shortcut_extension = '.lnk'
|
||||
elif os_name == 'Darwin':
|
||||
# macOS's shortcuts are .webloc files
|
||||
shortcut_extension = '.webloc'
|
||||
elif os_name == 'Linux':
|
||||
# Linux (Ubuntu, etc.) shortcuts are typically .desktop files
|
||||
shortcut_extension = '.desktop'
|
||||
else:
|
||||
logger.error(f"Unsupported operating system: {os_name}")
|
||||
return []
|
||||
|
||||
# Get the path to the desktop folder
|
||||
desktop_path = env.controller.get_vm_desktop_path()
|
||||
desktop_directory_tree = env.controller.get_vm_directory_tree(desktop_path)
|
||||
|
||||
shortcuts_paths = [file['name'] for file in desktop_directory_tree['children'] if
|
||||
file['name'].endswith(shortcut_extension)]
|
||||
|
||||
short_cuts = {}
|
||||
|
||||
for shortcut_path in shortcuts_paths:
|
||||
short_cuts[shortcut_path] = env.controller.get_file(env.controller.execute_python_command(
|
||||
f"import os; print(os.path.join(os.path.expanduser('~'), 'Desktop', '{shortcut_path}'))")['output'].strip()).decode('utf-8')
|
||||
|
||||
return short_cuts
|
||||
|
||||
Reference in New Issue
Block a user