Spaces:
Running
Running
import pdb | |
import pyperclip | |
from typing import Optional, Type | |
from pydantic import BaseModel | |
from browser_use.agent.views import ActionResult | |
from browser_use.browser.context import BrowserContext | |
from browser_use.controller.service import Controller, DoneAction | |
from main_content_extractor import MainContentExtractor | |
from browser_use.controller.views import ( | |
ClickElementAction, | |
DoneAction, | |
ExtractPageContentAction, | |
GoToUrlAction, | |
InputTextAction, | |
OpenTabAction, | |
ScrollAction, | |
SearchGoogleAction, | |
SendKeysAction, | |
SwitchTabAction, | |
) | |
import logging | |
logger = logging.getLogger(__name__) | |
class CustomController(Controller): | |
def __init__(self, exclude_actions: list[str] = [], | |
output_model: Optional[Type[BaseModel]] = None | |
): | |
super().__init__(exclude_actions=exclude_actions, output_model=output_model) | |
self._register_custom_actions() | |
def _register_custom_actions(self): | |
"""Register all custom browser actions""" | |
def copy_to_clipboard(text: str): | |
pyperclip.copy(text) | |
return ActionResult(extracted_content=text) | |
async def paste_from_clipboard(browser: BrowserContext): | |
text = pyperclip.paste() | |
# send text to browser | |
page = await browser.get_current_page() | |
await page.keyboard.type(text) | |
return ActionResult(extracted_content=text) | |