Josedcape commited on
Commit
1620ca9
·
verified ·
1 Parent(s): 00eb688

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +15 -37
app.py CHANGED
@@ -1,32 +1,32 @@
1
  import os
2
- import glob
3
- import asyncio
4
  import argparse
5
  import logging
6
  from selenium import webdriver
7
  from selenium.webdriver.chrome.service import Service
8
- from selenium.webdriver.common.by import By
9
  from selenium.webdriver.chrome.options import Options
10
  from webdriver_manager.chrome import ChromeDriverManager
11
  import gradio as gr
12
 
13
- # Logger setup
14
- logger = logging.getLogger(__name__)
 
 
 
 
 
15
 
16
- # Global variables for browser persistence
17
  _global_browser = None
18
 
19
  def setup_browser(headless=True, window_size=(1280, 720)):
20
- """Initialize a Selenium browser instance."""
21
  global _global_browser
22
-
23
  chrome_options = Options()
24
  if headless:
25
  chrome_options.add_argument("--headless")
26
  chrome_options.add_argument("--no-sandbox")
27
  chrome_options.add_argument("--disable-dev-shm-usage")
28
  chrome_options.add_argument(f"--window-size={window_size[0]},{window_size[1]}")
29
- chrome_options.binary_location = "/usr/bin/google-chrome-stable" # Ruta correcta en Hugging Face
30
 
31
  service = Service(ChromeDriverManager().install())
32
  _global_browser = webdriver.Chrome(service=service, options=chrome_options)
@@ -34,54 +34,33 @@ def setup_browser(headless=True, window_size=(1280, 720)):
34
  return _global_browser
35
 
36
  def close_browser():
37
- """Close the Selenium browser instance."""
38
  global _global_browser
39
  if _global_browser:
40
  _global_browser.quit()
41
  _global_browser = None
42
 
43
  async def run_agent(task_description, headless=True, window_size=(1280, 720)):
44
- """Run a Selenium-based agent."""
45
  global _global_browser
46
-
47
  if not _global_browser:
48
  setup_browser(headless=headless, window_size=window_size)
49
-
50
  try:
51
  logger.info(f"Executing task: {task_description}")
52
- _global_browser.get("https://example.com") # Replace with your target URL
53
-
54
- # Simulate some task
55
  result = f"Task executed successfully on {task_description}"
56
- return result, None # Return result and errors
57
  except Exception as e:
58
  logger.error(f"Error while running agent: {e}")
59
- return None, str(e) # Return None result and error message
60
 
61
  def create_ui():
62
- """Create the Gradio UI."""
63
  with gr.Blocks() as demo:
64
  gr.Markdown("# Selenium-based Browser Automation")
65
-
66
- task_input = gr.Textbox(
67
- label="Task Description",
68
- placeholder="Describe the task you want to execute...",
69
- )
70
-
71
- headless_mode = gr.Checkbox(
72
- label="Run in Headless Mode", value=True, interactive=True
73
- )
74
-
75
  run_button = gr.Button("Run Task")
76
  output_result = gr.Textbox(label="Result")
77
  output_error = gr.Textbox(label="Error")
78
-
79
- run_button.click(
80
- run_agent,
81
- inputs=[task_input, headless_mode],
82
- outputs=[output_result, output_error],
83
- )
84
-
85
  return demo
86
 
87
  def main():
@@ -89,7 +68,6 @@ def main():
89
  parser.add_argument("--ip", type=str, default="0.0.0.0", help="IP address to bind to")
90
  parser.add_argument("--port", type=int, default=7860, help="Port to listen on")
91
  args = parser.parse_args()
92
-
93
  demo = create_ui()
94
  demo.launch(server_name="0.0.0.0", server_port=args.port)
95
 
 
1
  import os
 
 
2
  import argparse
3
  import logging
4
  from selenium import webdriver
5
  from selenium.webdriver.chrome.service import Service
 
6
  from selenium.webdriver.chrome.options import Options
7
  from webdriver_manager.chrome import ChromeDriverManager
8
  import gradio as gr
9
 
10
+ def install_chrome():
11
+ os.system("apt update && apt install -y curl")
12
+ os.system("curl -fsSL https://dl.google.com/linux/linux_signing_key.pub | gpg --dearmor -o /usr/share/keyrings/google-chrome-keyring.gpg")
13
+ os.system("echo 'deb [signed-by=/usr/share/keyrings/google-chrome-keyring.gpg] http://dl.google.com/linux/chrome/deb/ stable main' | tee /etc/apt/sources.list.d/google-chrome.list")
14
+ os.system("apt update && apt install -y google-chrome-stable")
15
+
16
+ install_chrome()
17
 
18
+ logger = logging.getLogger(__name__)
19
  _global_browser = None
20
 
21
  def setup_browser(headless=True, window_size=(1280, 720)):
 
22
  global _global_browser
 
23
  chrome_options = Options()
24
  if headless:
25
  chrome_options.add_argument("--headless")
26
  chrome_options.add_argument("--no-sandbox")
27
  chrome_options.add_argument("--disable-dev-shm-usage")
28
  chrome_options.add_argument(f"--window-size={window_size[0]},{window_size[1]}")
29
+ chrome_options.binary_location = "/usr/bin/google-chrome-stable"
30
 
31
  service = Service(ChromeDriverManager().install())
32
  _global_browser = webdriver.Chrome(service=service, options=chrome_options)
 
34
  return _global_browser
35
 
36
  def close_browser():
 
37
  global _global_browser
38
  if _global_browser:
39
  _global_browser.quit()
40
  _global_browser = None
41
 
42
  async def run_agent(task_description, headless=True, window_size=(1280, 720)):
 
43
  global _global_browser
 
44
  if not _global_browser:
45
  setup_browser(headless=headless, window_size=window_size)
 
46
  try:
47
  logger.info(f"Executing task: {task_description}")
48
+ _global_browser.get("https://example.com")
 
 
49
  result = f"Task executed successfully on {task_description}"
50
+ return result, None
51
  except Exception as e:
52
  logger.error(f"Error while running agent: {e}")
53
+ return None, str(e)
54
 
55
  def create_ui():
 
56
  with gr.Blocks() as demo:
57
  gr.Markdown("# Selenium-based Browser Automation")
58
+ task_input = gr.Textbox(label="Task Description", placeholder="Describe the task you want to execute...")
59
+ headless_mode = gr.Checkbox(label="Run in Headless Mode", value=True, interactive=True)
 
 
 
 
 
 
 
 
60
  run_button = gr.Button("Run Task")
61
  output_result = gr.Textbox(label="Result")
62
  output_error = gr.Textbox(label="Error")
63
+ run_button.click(run_agent, inputs=[task_input, headless_mode], outputs=[output_result, output_error])
 
 
 
 
 
 
64
  return demo
65
 
66
  def main():
 
68
  parser.add_argument("--ip", type=str, default="0.0.0.0", help="IP address to bind to")
69
  parser.add_argument("--port", type=int, default=7860, help="Port to listen on")
70
  args = parser.parse_args()
 
71
  demo = create_ui()
72
  demo.launch(server_name="0.0.0.0", server_port=args.port)
73