Add Activepieces integration for workflow automation
- Add Activepieces fork with SmoothSchedule custom piece - Create integrations app with Activepieces service layer - Add embed token endpoint for iframe integration - Create Automations page with embedded workflow builder - Add sidebar visibility fix for embed mode - Add list inactive customers endpoint to Public API - Include SmoothSchedule triggers: event created/updated/cancelled - Include SmoothSchedule actions: create/update/cancel events, list resources/services/customers 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,209 @@
|
||||
{
|
||||
"Browserless is a headless browser automation tool that allows you to scrape websites, take screenshots, and more.": "Browserless ist ein kopfloses Browser-Automatisierungstool mit dem Sie Websites kratzen, Screenshots machen und vieles mehr.",
|
||||
"API Token": "API Token",
|
||||
"Region": "Region",
|
||||
"Custom Base URL": "Eigene Basis-URL",
|
||||
"Your Browserless API token (found in your dashboard)": "Ihr Browserless-API-Token (gefunden in Ihrem Dashboard)",
|
||||
"Choose the regional endpoint closest to you for optimal performance": "Wählen Sie den Ihnen am nächsten liegenden regionalen Endpunkt für optimale Leistung",
|
||||
"Enter your custom Browserless endpoint URL": "Geben Sie Ihre benutzerdefinierte Browserless-Endpunkt-URL ein",
|
||||
"US West (San Francisco)": "US West (San Francisco)",
|
||||
"Europe UK (London)": "Europa UK (London)",
|
||||
"Europe (Amsterdam)": "Europa (Amsterdam)",
|
||||
"Custom Endpoint": "Eigener Endpunkt",
|
||||
"\n To obtain your API credentials:\n\n 1. Sign up for a free Browserless account at https://www.browserless.io\n 2. Navigate to your dashboard\n 3. Find your API Key/Token in the account settings\n 4. Choose your preferred regional endpoint for optimal performance\n\n Regional Endpoints:\n • US West (SFO): https://production-sfo.browserless.io\n • Europe UK (London): https://production-lon.browserless.io\n • Europe (Amsterdam): https://production-ams.browserless.io\n\n For custom/dedicated ": "\n Um Ihre API-Zugangsdaten zu erhalten:\n\n 1. Melden Sie sich für einen kostenlosen Browserless-Account unter https://www an. rowserless.io\n 2. Navigieren Sie zu Ihrem Dashboard\n 3. Finden Sie Ihren API-Schlüssel/Token in den Kontoeinstellungen\n . Wählen Sie Ihren bevorzugten regionalen Endpunkt für optimale Performance\n\n Regionale Endpunkte:\n • US West (SFO): https://production-sfo. rowserless.io\n • Europe UK (London): https://production-lon.browserless.io\n • Europe (Amsterdam): https://production-ams. rowserless.io\n\n Für kunden/dedizierte Instanzen wählen Sie \"Custom\" und geben Sie Ihre spezifische Endpunkt-URL ein.\n ",
|
||||
"Capture Screenshot": "Screenshot aufnehmen",
|
||||
"Generate PDF": "PDF generieren",
|
||||
"Scrape URL": "Scrape URL",
|
||||
"Run BQL Query": "BQL-Abfrage ausführen",
|
||||
"Get Website Performance": "Website-Performance abrufen",
|
||||
"Take a screenshot of a web page": "Bildschirmfoto einer Webseite machen",
|
||||
"Convert a web page to PDF": "Eine Webseite in PDF umwandeln",
|
||||
"Extract content from a web page": "Inhalte von einer Webseite extrahieren",
|
||||
"Execute Browser Query Language (BQL) GraphQL-based queries for advanced browser automation": "Führen Sie Browser-Abfragesprache (BQL) GraphQL-basierte Abfragen für erweiterte Browser-Automatisierung aus",
|
||||
"Analyze website performance metrics using Lighthouse": "Website-Performance-Metriken mit Lighthouse analysieren",
|
||||
"URL": "URL",
|
||||
"Image Type": "Bildtyp",
|
||||
"Quality": "Qualität",
|
||||
"Full Page": "Vollseite",
|
||||
"Viewport Width": "Viewport-Breite",
|
||||
"Viewport Height": "Viewport Höhe",
|
||||
"Wait for Selector": "Warte auf Auswahl",
|
||||
"Delay (ms)": "Verzögerung (ms)",
|
||||
"Omit Background": "Hintergrund auslassen",
|
||||
"Clip X Position": "Clip X-Position",
|
||||
"Clip Y Position": "Clip Y Position",
|
||||
"Clip Width": "Clip Width",
|
||||
"Clip Height": "Clip-Höhe",
|
||||
"HTML Content": "HTML-Inhalt",
|
||||
"Paper Format": "Papierformat",
|
||||
"Landscape": "Querformat",
|
||||
"Print Background": "Hintergrund drucken",
|
||||
"Top Margin": "Oberer Rand",
|
||||
"Right Margin": "Rechter Rand",
|
||||
"Bottom Margin": "Unterer Rand",
|
||||
"Left Margin": "Linker Rand",
|
||||
"Header Template": "Kopfzeile Vorlage",
|
||||
"Footer Template": "Fußzeile-Vorlage",
|
||||
"Display Header/Footer": "Header/Fußzeile anzeigen",
|
||||
"Scale": "Maßstab",
|
||||
"Wait for Selector Timeout": "Warte auf Selektor-Timeout",
|
||||
"Wait for Selector Visible": "Auf Auswahl sichtbar warten",
|
||||
"Wait for Selector Hidden": "Warte auf Selektor Versteckt",
|
||||
"Prefer CSS Page Size": "Prefer CSS Page Size",
|
||||
"Page Ranges": "Seitenbereiche",
|
||||
"Custom Width": "Eigene Breite",
|
||||
"Custom Height": "Eigene Höhe",
|
||||
"Tagged PDF": "Markierte PDF",
|
||||
"Generate Outline": "Kontur generieren",
|
||||
"Timeout (ms)": "Timeout (ms)",
|
||||
"Wait for Function": "Warten auf Funktion",
|
||||
"Wait for Function Polling": "Warte auf Funktionsabfragung",
|
||||
"Wait for Function Timeout": "Warte auf Funktions-Timeout",
|
||||
"User Agent": "User-Agent",
|
||||
"Wait Timeout (ms)": "Wartezeit (ms)",
|
||||
"Best Attempt": "Bester Versuch",
|
||||
"Elements to Extract": "Zu extrahierende Elemente",
|
||||
"Wait for Event": "Warte auf Event",
|
||||
"Wait for Event Timeout": "Warte auf Event Timeout",
|
||||
"Debug Console": "Debug Console",
|
||||
"Debug Cookies": "Debug-Cookies",
|
||||
"Debug Network": "Netzwerk debuggen",
|
||||
"Cookies": "Kekse",
|
||||
"Wait Until": "Warten bis",
|
||||
"BQL Query": "BQL-Abfrage",
|
||||
"Query Variables": "Abfrage-Variablen",
|
||||
"Operation Name": "Operationsname",
|
||||
"Stealth Mode": "Tarnung Modus",
|
||||
"Headless Mode": "Kopfloser Modus",
|
||||
"Human-like Behavior": "Menschliches Verhalten",
|
||||
"Proxy Type": "Proxy-Typ",
|
||||
"Proxy Country": "Proxy-Land",
|
||||
"Sticky Proxy": "Fixierter Proxy",
|
||||
"Block Ads": "Werbung blockieren",
|
||||
"Block Consent Modals": "Einwilligungsmodelle blockieren",
|
||||
"Record Session": "Sitzung aufzeichnen",
|
||||
"Slow Motion (ms)": "Langsame Bewegung (ms)",
|
||||
"Ignore HTTPS Errors": "HTTPS-Fehler ignorieren",
|
||||
"Performance Categories": "Leistungskategorien",
|
||||
"Device Type": "Gerätetyp",
|
||||
"Network Throttling": "Netzwerk-Drosseln",
|
||||
"Only Category Scores": "Nur Kategorie-Punkte",
|
||||
"Locale": "Lokal",
|
||||
"Emulate Media Type": "Medientyp emulieren",
|
||||
"Performance Budgets": "Performance-Budgets",
|
||||
"The URL of the page to capture": "Die URL der zu erfassenden Seite",
|
||||
"Format of the screenshot image": "Format des Screenshot-Bildes",
|
||||
"Image quality (0-100, only for JPEG)": "Bildqualität (0-100, nur für JPEG)",
|
||||
"Capture the full scrollable page": "Erfassen Sie die vollständige scrollbare Seite",
|
||||
"Width of the browser viewport in pixels": "Breite des Browser-Viewports in Pixeln",
|
||||
"Height of the browser viewport in pixels": "Höhe des Browser-Viewports in Pixeln",
|
||||
"CSS selector to wait for before taking screenshot": "CSS-Selektor, auf den gewartet wird, bevor ein Screenshot gemacht wird",
|
||||
"Delay in milliseconds before taking screenshot": "Verzögerung in Millisekunden vor dem Screenshot",
|
||||
"Hide default white background for transparent screenshots": "Standardweißer Hintergrund für transparente Screenshots ausblenden",
|
||||
"X coordinate of the top-left corner for clipping": "X-Koordinate der oberen linken Ecke zum Clippen",
|
||||
"Y coordinate of the top-left corner for clipping": "Y-Koordinate der oberen linken Ecke zum Clippen",
|
||||
"Width of the clipping area": "Breite des Clipping-Bereichs",
|
||||
"Height of the clipping area": "Höhe des Clipping-Bereichs",
|
||||
"The URL of the page to convert to PDF": "Die URL der zu konvertierenden Seite",
|
||||
"HTML content to render as PDF (alternative to URL)": "HTML-Inhalt zum rendern als PDF (Alternative zur URL)",
|
||||
"Paper format for the PDF": "Papierformat für das PDF",
|
||||
"Use landscape orientation": "Querformat verwenden",
|
||||
"Include background graphics": "Hintergrundgrafiken einbeziehen",
|
||||
"Top margin (e.g., \"10mm\", \"0.4in\")": "Oberer Rand (z.B. \"10mm\", \"0.4in\")",
|
||||
"Right margin (e.g., \"10mm\", \"0.4in\")": "Rechter Rand (z.B. \"10mm\", \"0.4in\")",
|
||||
"Bottom margin (e.g., \"10mm\", \"0.4in\")": "Unterer Rand (z.B. \"10mm\", \"0.4in\")",
|
||||
"Left margin (e.g., \"10mm\", \"0.4in\")": "Linker Rand (z.B. \"10mm\", \"0.4in\")",
|
||||
"HTML template for the print header": "HTML-Vorlage für den Druckkopf",
|
||||
"HTML template for the print footer": "HTML-Template für den Druckfuß",
|
||||
"Display header and footer": "Kopf- und Fußzeile anzeigen",
|
||||
"Scale of the webpage rendering (0.1 - 2.0)": "Skalierung der Darstellung der Webseite (0.1 - 2.0)",
|
||||
"CSS selector to wait for before generating PDF": "CSS-Selektor, auf den gewartet wird, bevor PDF generiert wird",
|
||||
"Timeout in milliseconds for waiting for selector": "Timeout in Millisekunden für Warten auf Selektor",
|
||||
"Wait for selector to be visible": "Warten Sie, bis Selektor sichtbar ist",
|
||||
"Wait for selector to be hidden": "Warten Sie, bis Selektor ausgeblendet wird",
|
||||
"Give any CSS @page size declared in the page priority over format": "Geben Sie irgendeine CSS @page Größe die in der Seitenpriorität deklariert ist über das Format",
|
||||
"Paper ranges to print, e.g. \"1-5, 8, 11-13\"": "Papierbereiche zum Drucken, z.B. \"1-5, 8, 11-13\"",
|
||||
"Custom width of paper (e.g., \"8.5in\", \"210mm\")": "Eigene Papierbreite (z. B. \"8.5in\", \"210mm\")",
|
||||
"Custom height of paper (e.g., \"11in\", \"297mm\")": "Benutzerdefinierte Papierhöhe (z. B. \"11in\", \"297mm\")",
|
||||
"Hide default white background and allow transparent PDFs": "Standardweißer Hintergrund ausblenden und transparente PDFs erlauben",
|
||||
"Generate tagged (accessible) PDF": "Erstelle markierte (zugängliche) PDF",
|
||||
"Generate document outline": "Dokumentenumriss generieren",
|
||||
"Maximum time to wait for the page to load": "Maximale Wartezeit bis die Seite geladen wird",
|
||||
"JavaScript function to wait for before generating PDF": "JavaScript-Funktion, auf die gewartet wird, bevor PDF generiert wird",
|
||||
"Polling interval for wait function (\"raf\", \"mutation\", or number in ms)": "Abfrageintervall für Wartefunktion (\"raf\", \"Mutation\", oder Zahl in ms)",
|
||||
"Timeout in milliseconds for wait function (0 to disable)": "Timeout in Millisekunden für die Wartefunktion (0 zum deaktivieren)",
|
||||
"Custom user agent string to use for the request": "Benutzerdefinierte Benutzer-Agenten-Zeichenkette für die Anfrage",
|
||||
"Timeout in milliseconds to wait before generating PDF": "Timeout in Millisekunden warten bevor PDF erstellt wird",
|
||||
"Attempt to proceed when awaited events fail or timeout": "Versuch fortzufahren, wenn die erwarteten Ereignisse fehlschlagen oder Timeout",
|
||||
"The URL of the page to scrape": "Die URL der zu kratzenden Seite",
|
||||
"CSS selectors for elements to extract": "CSS-Selektoren für Elemente zum Extrahieren",
|
||||
"CSS selector to wait for before scraping": "CSS-Selektor, auf den gewartet werden soll, bevor man kratzt",
|
||||
"Timeout in milliseconds to wait before scraping": "Timeout in Millisekunden, die vor dem Scraping warten sollen",
|
||||
"Event name to wait for before scraping": "Event-Name vor dem Scraping",
|
||||
"Timeout in milliseconds for wait event": "Timeout in Millisekunden für Warteereignis",
|
||||
"Include console logs in debug output": "Konsolen-Logs in die Debug-Ausgabe einbeziehen",
|
||||
"Include cookies in debug output": "Cookies in Debug-Ausgabe einbeziehen",
|
||||
"Include network requests in debug output": "Netzwerk-Anfragen in die Debug-Ausgabe einbeziehen",
|
||||
"Custom user agent string": "Benutzerdefinierte Benutzer-Agenten-Zeichenkette",
|
||||
"Cookies to set before scraping": "Vor dem Scraping einzusetzende Cookies",
|
||||
"When to consider navigation complete": "Wann die Navigation abgeschlossen ist",
|
||||
"JavaScript function to wait for before scraping (should return true when ready)": "JavaScript-Funktion, auf die gewartet wird, bevor das Scraping beendet wird (sollte true zurückgeben, wenn fertig)",
|
||||
"Browser viewport width in pixels": "Browser-Ansichtsport Breite in Pixeln",
|
||||
"Browser viewport height in pixels": "Höhe des Browser-Viewport in Pixeln",
|
||||
"GraphQL-based BQL query for browser automation. Example: mutation { goto(url: \"https://example.com\") { status } }": "GraphQL-basierte BQL-Abfrage für Browserautomatisierung. Beispiel: Mutation { goto(url: \"https://example.com\") { status }}",
|
||||
"Variables to pass to the BQL query (JSON object)": "Variablen zur Übergabe an die BQL-Anfrage (JSON-Objekt)",
|
||||
"Name of the GraphQL operation to execute": "Name der auszuführenden GraphQL-Operation",
|
||||
"Maximum execution time in milliseconds": "Maximale Ausführungszeit in Millisekunden",
|
||||
"Enable stealth mode for bot detection bypass": "Stealth-Modus für Bot-Erkennung aktivieren",
|
||||
"Run browser in headless mode (set to false for GUI)": "Browser im kopflosen Modus ausführen (auf \"false\" für \"false\" für \"GUI\" setzen)",
|
||||
"Enable human-like mouse movement, typing, and delays": "menschenähnliche Mausbewegungen, Tippen und Verzögerungen aktivieren",
|
||||
"Type of proxy to use": "Typ des zu verwendenden Proxys",
|
||||
"Country code for residential proxy (e.g., us, gb, de)": "Landesvorwahl für Proxy für Wohnhäuser (z. B. us, gb, de)",
|
||||
"Maintain same proxy IP across session": "dieselbe Proxy-IP während der Sitzung beibehalten",
|
||||
"Enable ad blocker (uBlock Origin)": "Werbeblocker aktivieren (uBlock Origin)",
|
||||
"Automatically block/dismiss cookie consent banners": "Cookie-Zustimmungs-Banner automatisch sperren/verwerfen",
|
||||
"Enable session recording for debugging": "Sitzungsaufzeichnung für Debugging aktivieren",
|
||||
"Add delays between browser actions in milliseconds": "Verzögerung zwischen Browser-Aktionen in Millisekunden hinzufügen",
|
||||
"Ignore HTTPS certificate errors during navigation": "Fehler beim HTTPS-Zertifikat während der Navigation ignorieren",
|
||||
"Browser viewport width": "Browser viewport width",
|
||||
"Browser viewport height": "Höhe des Viewport-Browsers",
|
||||
"Cookies to set before executing BQL query": "Vor der Ausführung der BQL-Abfrage zu setzende Cookies",
|
||||
"The URL of the website to analyze": "Die URL der zu analysierenden Webseite",
|
||||
"Select which performance categories to analyze (performance, accessibility, best-practices, seo, pwa)": "Wählen Sie die zu analysierenden Leistungskategorien (Leistung, Zugänglichkeit, Best Practices, seo, pwa)",
|
||||
"Device type for performance analysis": "Gerätetyp für Leistungsanalyse",
|
||||
"Network throttling simulation": "Netzwerkdrosseln Simulation",
|
||||
"Return only category scores without detailed audit results": "Gibt nur Kategorie-Ergebnisse ohne detaillierte Audit-Ergebnisse zurück",
|
||||
"Locale for the analysis (e.g., en-US, de-DE)": "Sprache für die Analyse (z. B. en-US, de-DE)",
|
||||
"Maximum time to wait for the analysis to complete": "Maximale Wartezeit bis die Analyse abgeschlossen ist",
|
||||
"CSS selector to wait for before running performance analysis": "CSS-Selektor, auf den gewartet wird, bevor Performance-Analyse ausgeführt wird",
|
||||
"Emulate CSS media type": "CSS-Medientyp emulieren",
|
||||
"Lighthouse performance budgets for resource sizes": "Lighthouse Performance-Budgets für Ressourcengrößen",
|
||||
"Enable ad blocker during performance analysis": "Werbeblocker während der Leistungsanalyse aktivieren",
|
||||
"PNG": "PNG",
|
||||
"JPEG": "JPEG",
|
||||
"A0": "A0",
|
||||
"A1": "A1",
|
||||
"A2": "A2",
|
||||
"A3": "A3",
|
||||
"A4": "A4",
|
||||
"A5": "A5",
|
||||
"A6": "A6",
|
||||
"Letter": "Brief",
|
||||
"Legal": "Rechtlich",
|
||||
"Ledger": "Ledger",
|
||||
"Tabloid": "Tabloid",
|
||||
"Load Event": "Ereignis laden",
|
||||
"DOM Content Loaded": "DOM Inhalt geladen",
|
||||
"Network Idle 0": "Netzwerk Leerlauf 0",
|
||||
"Network Idle 2": "Netzwerk Leerlauf 2",
|
||||
"Residential": "Wohngebiet",
|
||||
"None": "Keine",
|
||||
"Desktop": "Desktop",
|
||||
"Mobile": "Mobil",
|
||||
"No Throttling": "Kein Drosseln",
|
||||
"Slow 4G": "Langsam 4G",
|
||||
"Regular 4G": "Normale 4G",
|
||||
"Fast 4G": "Fast 4G",
|
||||
"Screen": "Bildschirm",
|
||||
"Print": "Drucken"
|
||||
}
|
||||
@@ -0,0 +1,209 @@
|
||||
{
|
||||
"Browserless is a headless browser automation tool that allows you to scrape websites, take screenshots, and more.": "Browserless es una herramienta de automatización de navegadores sin cabeceras que le permite rascar sitios web, realizar capturas de pantalla, y más.",
|
||||
"API Token": "API Token",
|
||||
"Region": "Región",
|
||||
"Custom Base URL": "URL Base personalizada",
|
||||
"Your Browserless API token (found in your dashboard)": "Su token de API sin navegador (encontrado en su panel)",
|
||||
"Choose the regional endpoint closest to you for optimal performance": "Elija el punto final regional más cercano a usted para un rendimiento óptimo",
|
||||
"Enter your custom Browserless endpoint URL": "Introduzca su URL de punto final personalizado para Navegar",
|
||||
"US West (San Francisco)": "Oeste de Estados Unidos (San Francisco)",
|
||||
"Europe UK (London)": "Europa UK (Londres)",
|
||||
"Europe (Amsterdam)": "Europa (j)",
|
||||
"Custom Endpoint": "Endpoint personalizado",
|
||||
"\n To obtain your API credentials:\n\n 1. Sign up for a free Browserless account at https://www.browserless.io\n 2. Navigate to your dashboard\n 3. Find your API Key/Token in the account settings\n 4. Choose your preferred regional endpoint for optimal performance\n\n Regional Endpoints:\n • US West (SFO): https://production-sfo.browserless.io\n • Europe UK (London): https://production-lon.browserless.io\n • Europe (Amsterdam): https://production-ams.browserless.io\n\n For custom/dedicated ": "\n To obtain your API credentials:\n\n 1. Sign up for a free Browserless account at https://www.browserless.io\n 2. Navigate to your dashboard\n 3. Find your API Key/Token in the account settings\n 4. Choose your preferred regional endpoint for optimal performance\n\n Regional Endpoints:\n • US West (SFO): https://production-sfo.browserless.io\n • Europe UK (London): https://production-lon.browserless.io\n • Europe (Amsterdam): https://production-ams.browserless.io\n\n For custom/dedicated instances, select \"Custom\" and enter your specific endpoint URL.\n ",
|
||||
"Capture Screenshot": "Captura de pantalla",
|
||||
"Generate PDF": "Generar PDF",
|
||||
"Scrape URL": "URL del raspado",
|
||||
"Run BQL Query": "Ejecutar consulta BQL",
|
||||
"Get Website Performance": "Obtener rendimiento del sitio web",
|
||||
"Take a screenshot of a web page": "Captura de pantalla de una página web",
|
||||
"Convert a web page to PDF": "Convertir una página web a PDF",
|
||||
"Extract content from a web page": "Extraer contenido de una página web",
|
||||
"Execute Browser Query Language (BQL) GraphQL-based queries for advanced browser automation": "Ejecutar consultas del navegador (BQL) consultas basadas en gráficos para la automatización avanzada del navegador",
|
||||
"Analyze website performance metrics using Lighthouse": "Analizar métricas de rendimiento del sitio web usando Faro",
|
||||
"URL": "URL",
|
||||
"Image Type": "Tipo de imagen",
|
||||
"Quality": "Calidad",
|
||||
"Full Page": "Página completa",
|
||||
"Viewport Width": "Ancho de vista",
|
||||
"Viewport Height": "Vista Altura",
|
||||
"Wait for Selector": "Esperar al Selector",
|
||||
"Delay (ms)": "Retraso (ms)",
|
||||
"Omit Background": "Omitir fondo",
|
||||
"Clip X Position": "Posición X del clip",
|
||||
"Clip Y Position": "Clip Y Position",
|
||||
"Clip Width": "Clip Width",
|
||||
"Clip Height": "Altura del clip",
|
||||
"HTML Content": "Contenido HTML",
|
||||
"Paper Format": "Formato de papel",
|
||||
"Landscape": "Paisaje",
|
||||
"Print Background": "Imprimir fondo",
|
||||
"Top Margin": "Margen superior",
|
||||
"Right Margin": "Margen Derecho",
|
||||
"Bottom Margin": "Margen Inferior",
|
||||
"Left Margin": "Margen izquierdo",
|
||||
"Header Template": "Plantilla de cabecera",
|
||||
"Footer Template": "Plantilla de pie de página",
|
||||
"Display Header/Footer": "Mostrar cabeza/pie de página",
|
||||
"Scale": "Escala",
|
||||
"Wait for Selector Timeout": "Esperar al tiempo de espera del selector",
|
||||
"Wait for Selector Visible": "Esperar al Selector Visible",
|
||||
"Wait for Selector Hidden": "Esperar al Selector oculto",
|
||||
"Prefer CSS Page Size": "Prefer CSS Page Size",
|
||||
"Page Ranges": "Rangos de página",
|
||||
"Custom Width": "Ancho personalizado",
|
||||
"Custom Height": "Altura personalizada",
|
||||
"Tagged PDF": "PDF etiquetado",
|
||||
"Generate Outline": "Generar Outline",
|
||||
"Timeout (ms)": "Tiempo agotado (ms)",
|
||||
"Wait for Function": "Espere a la función",
|
||||
"Wait for Function Polling": "Espere a la Encuesta de Funciones",
|
||||
"Wait for Function Timeout": "Espere a que la función termine",
|
||||
"User Agent": "Agente de usuario",
|
||||
"Wait Timeout (ms)": "Esperar tiempo agotado (ms)",
|
||||
"Best Attempt": "Mejor intento",
|
||||
"Elements to Extract": "Elementos a extraer",
|
||||
"Wait for Event": "Esperar al evento",
|
||||
"Wait for Event Timeout": "Esperar al tiempo de espera del evento",
|
||||
"Debug Console": "Debug Console",
|
||||
"Debug Cookies": "Depurar Cookies",
|
||||
"Debug Network": "Depurar red",
|
||||
"Cookies": "Cookies",
|
||||
"Wait Until": "Esperar hasta",
|
||||
"BQL Query": "Consulta BQL",
|
||||
"Query Variables": "Variables de consulta",
|
||||
"Operation Name": "Nombre de la Operación",
|
||||
"Stealth Mode": "Modo Sigilo",
|
||||
"Headless Mode": "Modo sin cabeza",
|
||||
"Human-like Behavior": "Comportamiento humano",
|
||||
"Proxy Type": "Tipo de proxy",
|
||||
"Proxy Country": "País del proxy",
|
||||
"Sticky Proxy": "Proxy adherido",
|
||||
"Block Ads": "Bloquear anuncios",
|
||||
"Block Consent Modals": "Bloquear Modales por Consentimiento",
|
||||
"Record Session": "Grabar sesión",
|
||||
"Slow Motion (ms)": "Cámara lenta (ms)",
|
||||
"Ignore HTTPS Errors": "Ignorar errores HTTPS",
|
||||
"Performance Categories": "Categorías de rendimiento",
|
||||
"Device Type": "Tipo de dispositivo",
|
||||
"Network Throttling": "Lanzamiento de red",
|
||||
"Only Category Scores": "Sólo puntajes de categoría",
|
||||
"Locale": "Local",
|
||||
"Emulate Media Type": "Emular tipo de medio",
|
||||
"Performance Budgets": "Presupuestos de rendimiento",
|
||||
"The URL of the page to capture": "La URL de la página a capturar",
|
||||
"Format of the screenshot image": "Formato de la imagen de captura de pantalla",
|
||||
"Image quality (0-100, only for JPEG)": "Calidad de imagen (0-100, solo para JPEG)",
|
||||
"Capture the full scrollable page": "Capturar la página desplegable",
|
||||
"Width of the browser viewport in pixels": "Ancho de la vista del navegador en píxeles",
|
||||
"Height of the browser viewport in pixels": "Altura de la vista del navegador en píxeles",
|
||||
"CSS selector to wait for before taking screenshot": "Selector CSS a esperar antes de tomar una captura de pantalla",
|
||||
"Delay in milliseconds before taking screenshot": "Retardo en milisegundos antes de tomar una captura de pantalla",
|
||||
"Hide default white background for transparent screenshots": "Ocultar fondo blanco por defecto para las capturas de pantalla transparentes",
|
||||
"X coordinate of the top-left corner for clipping": "Coordenada X de la esquina superior izquierda para recortar",
|
||||
"Y coordinate of the top-left corner for clipping": "Coordenada Y de la esquina superior izquierda para recortar",
|
||||
"Width of the clipping area": "Ancho del área de recorte",
|
||||
"Height of the clipping area": "Altura del área de recorte",
|
||||
"The URL of the page to convert to PDF": "La URL de la página a convertir a PDF",
|
||||
"HTML content to render as PDF (alternative to URL)": "Contenido HTML a procesar como PDF (alternativa a la URL)",
|
||||
"Paper format for the PDF": "Formato de papel para el PDF",
|
||||
"Use landscape orientation": "Usar orientación horizontal",
|
||||
"Include background graphics": "Incluye gráficos de fondo",
|
||||
"Top margin (e.g., \"10mm\", \"0.4in\")": "Margen superior (por ej., \"10mm\", \"0.4in\")",
|
||||
"Right margin (e.g., \"10mm\", \"0.4in\")": "Margen derecho (por ej., \"10mm\", \"0.4in\")",
|
||||
"Bottom margin (e.g., \"10mm\", \"0.4in\")": "Margen de inicio (por ej., \"10mm\", \"0.4in\")",
|
||||
"Left margin (e.g., \"10mm\", \"0.4in\")": "Margen izquierdo (por ej., \"10mm\", \"0.4in\")",
|
||||
"HTML template for the print header": "Plantilla HTML para el encabezado de impresión",
|
||||
"HTML template for the print footer": "Plantilla HTML para el pie de página de impresión",
|
||||
"Display header and footer": "Mostrar cabecera y pie de página",
|
||||
"Scale of the webpage rendering (0.1 - 2.0)": "Escala del renderizado de la página web (0.1 - 2.0)",
|
||||
"CSS selector to wait for before generating PDF": "Selector CSS a esperar antes de generar PDF",
|
||||
"Timeout in milliseconds for waiting for selector": "Tiempo de espera en milisegundos para el selector",
|
||||
"Wait for selector to be visible": "Espere a que el selector sea visible",
|
||||
"Wait for selector to be hidden": "Espere a que el selector esté oculto",
|
||||
"Give any CSS @page size declared in the page priority over format": "Dar cualquier tamaño de página CSS @page declarado en la prioridad de la página sobre el formato",
|
||||
"Paper ranges to print, e.g. \"1-5, 8, 11-13\"": "Rango de papel para imprimir, por ejemplo, \"1-5, 8, 11-13\"",
|
||||
"Custom width of paper (e.g., \"8.5in\", \"210mm\")": "Ancho personalizado del papel (por ejemplo, \"8.5in\", \"210mm\")",
|
||||
"Custom height of paper (e.g., \"11in\", \"297mm\")": "Altura personalizada del papel (por ejemplo, \"11in\", \"297mm\")",
|
||||
"Hide default white background and allow transparent PDFs": "Ocultar fondo blanco por defecto y permitir PDFs transparentes",
|
||||
"Generate tagged (accessible) PDF": "Generar PDF etiquetado (accesible)",
|
||||
"Generate document outline": "Generar contorno del documento",
|
||||
"Maximum time to wait for the page to load": "Tiempo máximo de espera para cargar la página",
|
||||
"JavaScript function to wait for before generating PDF": "Función JavaScript a esperar antes de generar PDF",
|
||||
"Polling interval for wait function (\"raf\", \"mutation\", or number in ms)": "Intervalo de sondeo para función de espera (\"raf\", \"mutación\" o número en ms)",
|
||||
"Timeout in milliseconds for wait function (0 to disable)": "Tiempo de espera agotado en milisegundos para función de espera (0 para desactivar)",
|
||||
"Custom user agent string to use for the request": "Cadena personalizada de agente de usuario a usar para la solicitud",
|
||||
"Timeout in milliseconds to wait before generating PDF": "Tiempo de espera en milisegundos antes de generar PDF",
|
||||
"Attempt to proceed when awaited events fail or timeout": "Intento de proceder cuando los eventos esperados fallen o se agotan el tiempo de espera",
|
||||
"The URL of the page to scrape": "La URL de la página a raspar",
|
||||
"CSS selectors for elements to extract": "Selectores CSS para elementos a extraer",
|
||||
"CSS selector to wait for before scraping": "Selector CSS a esperar antes de rascar",
|
||||
"Timeout in milliseconds to wait before scraping": "Tiempo de espera en milisegundos para rascar",
|
||||
"Event name to wait for before scraping": "Nombre del evento a esperar antes de rascar",
|
||||
"Timeout in milliseconds for wait event": "Tiempo de espera en milisegundos para el evento de espera",
|
||||
"Include console logs in debug output": "Incluye registros de la consola en la salida de depuración",
|
||||
"Include cookies in debug output": "Incluye cookies en la salida de depuración",
|
||||
"Include network requests in debug output": "Incluye peticiones de red en la salida de depuración",
|
||||
"Custom user agent string": "Cadena de agente de usuario personalizado",
|
||||
"Cookies to set before scraping": "Cookies a definir antes de rascar",
|
||||
"When to consider navigation complete": "Cuándo considerar la navegación completa",
|
||||
"JavaScript function to wait for before scraping (should return true when ready)": "Función JavaScript a esperar antes de rascar (debería devolver true cuando esté listo)",
|
||||
"Browser viewport width in pixels": "Ancho de la vista del navegador en píxeles",
|
||||
"Browser viewport height in pixels": "Altura de la vista del navegador en píxeles",
|
||||
"GraphQL-based BQL query for browser automation. Example: mutation { goto(url: \"https://example.com\") { status } }": "Consulta BQL basada en gráficos para la automatización del navegador. Ejemplo: mutación { goto(url: \"https://example.com\") { status }}",
|
||||
"Variables to pass to the BQL query (JSON object)": "Variables a pasar a la consulta BQL (objeto JSON)",
|
||||
"Name of the GraphQL operation to execute": "Nombre de la operación GraphQL a ejecutar",
|
||||
"Maximum execution time in milliseconds": "Tiempo máximo de ejecución en milisegundos",
|
||||
"Enable stealth mode for bot detection bypass": "Activar modo sigiloso para evitar la detección de bots",
|
||||
"Run browser in headless mode (set to false for GUI)": "Ejecutar navegador en modo sin cabeceras (establecido en falso para GUI)",
|
||||
"Enable human-like mouse movement, typing, and delays": "Habilita el movimiento humano del ratón, la escritura y los retrasos",
|
||||
"Type of proxy to use": "Tipo de proxy a usar",
|
||||
"Country code for residential proxy (e.g., us, gb, de)": "Código del país para el proxy residencial (por ejemplo, nosotros, gb, de)",
|
||||
"Maintain same proxy IP across session": "Mantener el mismo proxy IP durante la sesión",
|
||||
"Enable ad blocker (uBlock Origin)": "Habilitar bloqueador de anuncios (uBlock Origin)",
|
||||
"Automatically block/dismiss cookie consent banners": "Bloquear/descartar automáticamente banners de consentimiento de cookies",
|
||||
"Enable session recording for debugging": "Activar grabación de sesión para depurar",
|
||||
"Add delays between browser actions in milliseconds": "Añadir retrasos entre las acciones del navegador en milisegundos",
|
||||
"Ignore HTTPS certificate errors during navigation": "Ignorar errores de certificado HTTPS durante la navegación",
|
||||
"Browser viewport width": "Browser viewport width",
|
||||
"Browser viewport height": "Alto de la vista del navegador",
|
||||
"Cookies to set before executing BQL query": "Cookies a configurar antes de ejecutar la consulta BQL",
|
||||
"The URL of the website to analyze": "La URL del sitio web para analizar",
|
||||
"Select which performance categories to analyze (performance, accessibility, best-practices, seo, pwa)": "Seleccione qué categorías de rendimiento analizar (rendimiento, accesibilidad, mejores prácticas, seo, pwa)",
|
||||
"Device type for performance analysis": "Tipo de dispositivo para análisis de rendimiento",
|
||||
"Network throttling simulation": "Simulación de acelerador de red",
|
||||
"Return only category scores without detailed audit results": "Devolver sólo puntuaciones de categorías sin resultados detallados de auditoría",
|
||||
"Locale for the analysis (e.g., en-US, de-DE)": "Locale para el análisis (por ej., en-US, de-de--",
|
||||
"Maximum time to wait for the analysis to complete": "Tiempo máximo de espera para completar el análisis",
|
||||
"CSS selector to wait for before running performance analysis": "Selector CSS a esperar antes de ejecutar el análisis de rendimiento",
|
||||
"Emulate CSS media type": "Emular tipo de medio CSS",
|
||||
"Lighthouse performance budgets for resource sizes": "Presupuestos de rendimiento del faro para tamaños de recursos",
|
||||
"Enable ad blocker during performance analysis": "Habilitar bloqueador de anuncios durante el análisis de rendimiento",
|
||||
"PNG": "PNG",
|
||||
"JPEG": "JPEG",
|
||||
"A0": "A0",
|
||||
"A1": "R1",
|
||||
"A2": "R2",
|
||||
"A3": "R3",
|
||||
"A4": "R4",
|
||||
"A5": "R5",
|
||||
"A6": "R6",
|
||||
"Letter": "Letra",
|
||||
"Legal": "Legal",
|
||||
"Ledger": "Libro",
|
||||
"Tabloid": "Tabloide",
|
||||
"Load Event": "Cargar evento",
|
||||
"DOM Content Loaded": "Contenido DOM cargado",
|
||||
"Network Idle 0": "Red inactiva 0",
|
||||
"Network Idle 2": "Red inactiva 2",
|
||||
"Residential": "Residencial",
|
||||
"None": "Ninguna",
|
||||
"Desktop": "Escritorio",
|
||||
"Mobile": "Móvil",
|
||||
"No Throttling": "Sin lanzamientos",
|
||||
"Slow 4G": "4G lento",
|
||||
"Regular 4G": "4G regular",
|
||||
"Fast 4G": "Fast 4G",
|
||||
"Screen": "Pantalla",
|
||||
"Print": "Imprimir"
|
||||
}
|
||||
@@ -0,0 +1,209 @@
|
||||
{
|
||||
"Browserless is a headless browser automation tool that allows you to scrape websites, take screenshots, and more.": "Browserless is a headless browser automation tool that allows you to scrape websites, take screenshots, and more.",
|
||||
"API Token": "API Token",
|
||||
"Region": "Région",
|
||||
"Custom Base URL": "Custom Base URL",
|
||||
"Your Browserless API token (found in your dashboard)": "Your Browserless API token (found in your dashboard)",
|
||||
"Choose the regional endpoint closest to you for optimal performance": "Choose the regional endpoint closest to you for optimal performance",
|
||||
"Enter your custom Browserless endpoint URL": "Enter your custom Browserless endpoint URL",
|
||||
"US West (San Francisco)": "US West (San Francisco)",
|
||||
"Europe UK (London)": "Europe UK (London)",
|
||||
"Europe (Amsterdam)": "Europe (Amsterdam)",
|
||||
"Custom Endpoint": "Custom Endpoint",
|
||||
"\n To obtain your API credentials:\n\n 1. Sign up for a free Browserless account at https://www.browserless.io\n 2. Navigate to your dashboard\n 3. Find your API Key/Token in the account settings\n 4. Choose your preferred regional endpoint for optimal performance\n\n Regional Endpoints:\n • US West (SFO): https://production-sfo.browserless.io\n • Europe UK (London): https://production-lon.browserless.io\n • Europe (Amsterdam): https://production-ams.browserless.io\n\n For custom/dedicated ": "\n To obtain your API credentials:\n\n 1. Sign up for a free Browserless account at https://www.browserless.io\n 2. Navigate to your dashboard\n 3. Find your API Key/Token in the account settings\n 4. Choose your preferred regional endpoint for optimal performance\n\n Regional Endpoints:\n • US West (SFO): https://production-sfo.browserless.io\n • Europe UK (London): https://production-lon.browserless.io\n • Europe (Amsterdam): https://production-ams.browserless.io\n\n For custom/dedicated instances, select \"Custom\" and enter your specific endpoint URL.\n ",
|
||||
"Capture Screenshot": "Capture d'écran",
|
||||
"Generate PDF": "Generate PDF",
|
||||
"Scrape URL": "Scrape URL",
|
||||
"Run BQL Query": "Run BQL Query",
|
||||
"Get Website Performance": "Get Website Performance",
|
||||
"Take a screenshot of a web page": "Take a screenshot of a web page",
|
||||
"Convert a web page to PDF": "Convert a web page to PDF",
|
||||
"Extract content from a web page": "Extract content from a web page",
|
||||
"Execute Browser Query Language (BQL) GraphQL-based queries for advanced browser automation": "Execute Browser Query Language (BQL) GraphQL-based queries for advanced browser automation",
|
||||
"Analyze website performance metrics using Lighthouse": "Analyze website performance metrics using Lighthouse",
|
||||
"URL": "URL",
|
||||
"Image Type": "Image Type",
|
||||
"Quality": "Qualité",
|
||||
"Full Page": "Page complète",
|
||||
"Viewport Width": "Largeur de la fenêtre",
|
||||
"Viewport Height": "Hauteur de la fenêtre d'affichage",
|
||||
"Wait for Selector": "Attendre le sélecteur",
|
||||
"Delay (ms)": "Delay (ms)",
|
||||
"Omit Background": "Omit Background",
|
||||
"Clip X Position": "Clip X Position",
|
||||
"Clip Y Position": "Clip Y Position",
|
||||
"Clip Width": "Clip Width",
|
||||
"Clip Height": "Clip Height",
|
||||
"HTML Content": "Contenu HTML",
|
||||
"Paper Format": "Paper Format",
|
||||
"Landscape": "Paysage",
|
||||
"Print Background": "Imprimer l'arrière-plan",
|
||||
"Top Margin": "Top Margin",
|
||||
"Right Margin": "Right Margin",
|
||||
"Bottom Margin": "Bottom Margin",
|
||||
"Left Margin": "Left Margin",
|
||||
"Header Template": "Header Template",
|
||||
"Footer Template": "Footer Template",
|
||||
"Display Header/Footer": "Afficher en-tête/pied de page",
|
||||
"Scale": "Échelle",
|
||||
"Wait for Selector Timeout": "Wait for Selector Timeout",
|
||||
"Wait for Selector Visible": "Wait for Selector Visible",
|
||||
"Wait for Selector Hidden": "Wait for Selector Hidden",
|
||||
"Prefer CSS Page Size": "Prefer CSS Page Size",
|
||||
"Page Ranges": "Intervalle de pages",
|
||||
"Custom Width": "Largeur personnalisée",
|
||||
"Custom Height": "Hauteur personnalisée",
|
||||
"Tagged PDF": "Tagged PDF",
|
||||
"Generate Outline": "Generate Outline",
|
||||
"Timeout (ms)": "Délai d'attente (ms)",
|
||||
"Wait for Function": "Wait for Function",
|
||||
"Wait for Function Polling": "Wait for Function Polling",
|
||||
"Wait for Function Timeout": "Wait for Function Timeout",
|
||||
"User Agent": "Agent Utilisateur",
|
||||
"Wait Timeout (ms)": "Délai d'attente (ms)",
|
||||
"Best Attempt": "Best Attempt",
|
||||
"Elements to Extract": "Elements to Extract",
|
||||
"Wait for Event": "Wait for Event",
|
||||
"Wait for Event Timeout": "Wait for Event Timeout",
|
||||
"Debug Console": "Debug Console",
|
||||
"Debug Cookies": "Debug Cookies",
|
||||
"Debug Network": "Debug Network",
|
||||
"Cookies": "Cookies",
|
||||
"Wait Until": "Wait Until",
|
||||
"BQL Query": "BQL Query",
|
||||
"Query Variables": "Query Variables",
|
||||
"Operation Name": "Operation Name",
|
||||
"Stealth Mode": "Stealth Mode",
|
||||
"Headless Mode": "Headless Mode",
|
||||
"Human-like Behavior": "Human-like Behavior",
|
||||
"Proxy Type": "Proxy Type",
|
||||
"Proxy Country": "Proxy Country",
|
||||
"Sticky Proxy": "Sticky Proxy",
|
||||
"Block Ads": "Block Ads",
|
||||
"Block Consent Modals": "Block Consent Modals",
|
||||
"Record Session": "Record Session",
|
||||
"Slow Motion (ms)": "Slow Motion (ms)",
|
||||
"Ignore HTTPS Errors": "Ignore HTTPS Errors",
|
||||
"Performance Categories": "Performance Categories",
|
||||
"Device Type": "Type de périphérique",
|
||||
"Network Throttling": "Network Throttling",
|
||||
"Only Category Scores": "Only Category Scores",
|
||||
"Locale": "Locale",
|
||||
"Emulate Media Type": "Emulate Media Type",
|
||||
"Performance Budgets": "Performance Budgets",
|
||||
"The URL of the page to capture": "The URL of the page to capture",
|
||||
"Format of the screenshot image": "Format of the screenshot image",
|
||||
"Image quality (0-100, only for JPEG)": "Image quality (0-100, only for JPEG)",
|
||||
"Capture the full scrollable page": "Capturer la page défilante complète",
|
||||
"Width of the browser viewport in pixels": "Width of the browser viewport in pixels",
|
||||
"Height of the browser viewport in pixels": "Height of the browser viewport in pixels",
|
||||
"CSS selector to wait for before taking screenshot": "CSS selector to wait for before taking screenshot",
|
||||
"Delay in milliseconds before taking screenshot": "Delay in milliseconds before taking screenshot",
|
||||
"Hide default white background for transparent screenshots": "Hide default white background for transparent screenshots",
|
||||
"X coordinate of the top-left corner for clipping": "X coordinate of the top-left corner for clipping",
|
||||
"Y coordinate of the top-left corner for clipping": "Y coordinate of the top-left corner for clipping",
|
||||
"Width of the clipping area": "Width of the clipping area",
|
||||
"Height of the clipping area": "Height of the clipping area",
|
||||
"The URL of the page to convert to PDF": "The URL of the page to convert to PDF",
|
||||
"HTML content to render as PDF (alternative to URL)": "HTML content to render as PDF (alternative to URL)",
|
||||
"Paper format for the PDF": "Paper format for the PDF",
|
||||
"Use landscape orientation": "Use landscape orientation",
|
||||
"Include background graphics": "Include background graphics",
|
||||
"Top margin (e.g., \"10mm\", \"0.4in\")": "Top margin (e.g., \"10mm\", \"0.4in\")",
|
||||
"Right margin (e.g., \"10mm\", \"0.4in\")": "Right margin (e.g., \"10mm\", \"0.4in\")",
|
||||
"Bottom margin (e.g., \"10mm\", \"0.4in\")": "Bottom margin (e.g., \"10mm\", \"0.4in\")",
|
||||
"Left margin (e.g., \"10mm\", \"0.4in\")": "Left margin (e.g., \"10mm\", \"0.4in\")",
|
||||
"HTML template for the print header": "HTML template for the print header",
|
||||
"HTML template for the print footer": "HTML template for the print footer",
|
||||
"Display header and footer": "Display header and footer",
|
||||
"Scale of the webpage rendering (0.1 - 2.0)": "Scale of the webpage rendering (0.1 - 2.0)",
|
||||
"CSS selector to wait for before generating PDF": "CSS selector to wait for before generating PDF",
|
||||
"Timeout in milliseconds for waiting for selector": "Timeout in milliseconds for waiting for selector",
|
||||
"Wait for selector to be visible": "Wait for selector to be visible",
|
||||
"Wait for selector to be hidden": "Wait for selector to be hidden",
|
||||
"Give any CSS @page size declared in the page priority over format": "Give any CSS @page size declared in the page priority over format",
|
||||
"Paper ranges to print, e.g. \"1-5, 8, 11-13\"": "Paper ranges to print, e.g. \"1-5, 8, 11-13\"",
|
||||
"Custom width of paper (e.g., \"8.5in\", \"210mm\")": "Custom width of paper (e.g., \"8.5in\", \"210mm\")",
|
||||
"Custom height of paper (e.g., \"11in\", \"297mm\")": "Custom height of paper (e.g., \"11in\", \"297mm\")",
|
||||
"Hide default white background and allow transparent PDFs": "Hide default white background and allow transparent PDFs",
|
||||
"Generate tagged (accessible) PDF": "Generate tagged (accessible) PDF",
|
||||
"Generate document outline": "Generate document outline",
|
||||
"Maximum time to wait for the page to load": "Maximum time to wait for the page to load",
|
||||
"JavaScript function to wait for before generating PDF": "JavaScript function to wait for before generating PDF",
|
||||
"Polling interval for wait function (\"raf\", \"mutation\", or number in ms)": "Polling interval for wait function (\"raf\", \"mutation\", or number in ms)",
|
||||
"Timeout in milliseconds for wait function (0 to disable)": "Timeout in milliseconds for wait function (0 to disable)",
|
||||
"Custom user agent string to use for the request": "Custom user agent string to use for the request",
|
||||
"Timeout in milliseconds to wait before generating PDF": "Timeout in milliseconds to wait before generating PDF",
|
||||
"Attempt to proceed when awaited events fail or timeout": "Attempt to proceed when awaited events fail or timeout",
|
||||
"The URL of the page to scrape": "The URL of the page to scrape",
|
||||
"CSS selectors for elements to extract": "CSS selectors for elements to extract",
|
||||
"CSS selector to wait for before scraping": "CSS selector to wait for before scraping",
|
||||
"Timeout in milliseconds to wait before scraping": "Timeout in milliseconds to wait before scraping",
|
||||
"Event name to wait for before scraping": "Event name to wait for before scraping",
|
||||
"Timeout in milliseconds for wait event": "Timeout in milliseconds for wait event",
|
||||
"Include console logs in debug output": "Include console logs in debug output",
|
||||
"Include cookies in debug output": "Include cookies in debug output",
|
||||
"Include network requests in debug output": "Include network requests in debug output",
|
||||
"Custom user agent string": "Custom user agent string",
|
||||
"Cookies to set before scraping": "Cookies to set before scraping",
|
||||
"When to consider navigation complete": "When to consider navigation complete",
|
||||
"JavaScript function to wait for before scraping (should return true when ready)": "JavaScript function to wait for before scraping (should return true when ready)",
|
||||
"Browser viewport width in pixels": "Browser viewport width in pixels",
|
||||
"Browser viewport height in pixels": "Browser viewport height in pixels",
|
||||
"GraphQL-based BQL query for browser automation. Example: mutation { goto(url: \"https://example.com\") { status } }": "GraphQL-based BQL query for browser automation. Example: mutation { goto(url: \"https://example.com\") { status } }",
|
||||
"Variables to pass to the BQL query (JSON object)": "Variables to pass to the BQL query (JSON object)",
|
||||
"Name of the GraphQL operation to execute": "Name of the GraphQL operation to execute",
|
||||
"Maximum execution time in milliseconds": "Maximum execution time in milliseconds",
|
||||
"Enable stealth mode for bot detection bypass": "Enable stealth mode for bot detection bypass",
|
||||
"Run browser in headless mode (set to false for GUI)": "Run browser in headless mode (set to false for GUI)",
|
||||
"Enable human-like mouse movement, typing, and delays": "Enable human-like mouse movement, typing, and delays",
|
||||
"Type of proxy to use": "Type of proxy to use",
|
||||
"Country code for residential proxy (e.g., us, gb, de)": "Country code for residential proxy (e.g., us, gb, de)",
|
||||
"Maintain same proxy IP across session": "Maintain same proxy IP across session",
|
||||
"Enable ad blocker (uBlock Origin)": "Enable ad blocker (uBlock Origin)",
|
||||
"Automatically block/dismiss cookie consent banners": "Automatically block/dismiss cookie consent banners",
|
||||
"Enable session recording for debugging": "Enable session recording for debugging",
|
||||
"Add delays between browser actions in milliseconds": "Add delays between browser actions in milliseconds",
|
||||
"Ignore HTTPS certificate errors during navigation": "Ignore HTTPS certificate errors during navigation",
|
||||
"Browser viewport width": "Browser viewport width",
|
||||
"Browser viewport height": "Browser viewport height",
|
||||
"Cookies to set before executing BQL query": "Cookies to set before executing BQL query",
|
||||
"The URL of the website to analyze": "The URL of the website to analyze",
|
||||
"Select which performance categories to analyze (performance, accessibility, best-practices, seo, pwa)": "Select which performance categories to analyze (performance, accessibility, best-practices, seo, pwa)",
|
||||
"Device type for performance analysis": "Device type for performance analysis",
|
||||
"Network throttling simulation": "Network throttling simulation",
|
||||
"Return only category scores without detailed audit results": "Return only category scores without detailed audit results",
|
||||
"Locale for the analysis (e.g., en-US, de-DE)": "Locale for the analysis (e.g., en-US, de-DE)",
|
||||
"Maximum time to wait for the analysis to complete": "Maximum time to wait for the analysis to complete",
|
||||
"CSS selector to wait for before running performance analysis": "CSS selector to wait for before running performance analysis",
|
||||
"Emulate CSS media type": "Emulate CSS media type",
|
||||
"Lighthouse performance budgets for resource sizes": "Lighthouse performance budgets for resource sizes",
|
||||
"Enable ad blocker during performance analysis": "Enable ad blocker during performance analysis",
|
||||
"PNG": "PNG",
|
||||
"JPEG": "JPEG",
|
||||
"A0": "A0",
|
||||
"A1": "A1",
|
||||
"A2": "A2",
|
||||
"A3": "A3",
|
||||
"A4": "A4",
|
||||
"A5": "A5",
|
||||
"A6": "A6",
|
||||
"Letter": "Lettre",
|
||||
"Legal": "Mentions légales",
|
||||
"Ledger": "Ledger",
|
||||
"Tabloid": "Tabloïde",
|
||||
"Load Event": "Charger un événement",
|
||||
"DOM Content Loaded": "Contenu DOM chargé",
|
||||
"Network Idle 0": "Inactivité du réseau 0",
|
||||
"Network Idle 2": "Inactivité réseau 2",
|
||||
"Residential": "Résidentiel",
|
||||
"None": "Aucun",
|
||||
"Desktop": "Bureau",
|
||||
"Mobile": "Téléphone mobile",
|
||||
"No Throttling": "Pas de bricolage",
|
||||
"Slow 4G": "Lente 4G",
|
||||
"Regular 4G": "4G normale",
|
||||
"Fast 4G": "Fast 4G",
|
||||
"Screen": "Ecran",
|
||||
"Print": "Imprimer"
|
||||
}
|
||||
@@ -0,0 +1,209 @@
|
||||
{
|
||||
"Browserless is a headless browser automation tool that allows you to scrape websites, take screenshots, and more.": "Browserless は Web サイトをスクレイプし、スクリーンショットを撮るなど、ヘッドレスブラウザーの自動化ツールです。",
|
||||
"API Token": "API Token",
|
||||
"Region": "地域",
|
||||
"Custom Base URL": "カスタムベースURL",
|
||||
"Your Browserless API token (found in your dashboard)": "ブラウザレス API トークン (ダッシュボードにあります)",
|
||||
"Choose the regional endpoint closest to you for optimal performance": "最適なパフォーマンスを得るために、最も近い地域のエンドポイントを選択してください",
|
||||
"Enter your custom Browserless endpoint URL": "カスタムブラウザレスエンドポイントURLを入力してください",
|
||||
"US West (San Francisco)": "US West (サンフランシスコ)",
|
||||
"Europe UK (London)": "ヨーロッパ英国 (ロンドン)",
|
||||
"Europe (Amsterdam)": "ヨーロッパ(アムステルダム)",
|
||||
"Custom Endpoint": "カスタムエンドポイント",
|
||||
"\n To obtain your API credentials:\n\n 1. Sign up for a free Browserless account at https://www.browserless.io\n 2. Navigate to your dashboard\n 3. Find your API Key/Token in the account settings\n 4. Choose your preferred regional endpoint for optimal performance\n\n Regional Endpoints:\n • US West (SFO): https://production-sfo.browserless.io\n • Europe UK (London): https://production-lon.browserless.io\n • Europe (Amsterdam): https://production-ams.browserless.io\n\n For custom/dedicated ": "\n To obtain your API credentials:\n\n 1. Sign up for a free Browserless account at https://www.browserless.io\n 2. Navigate to your dashboard\n 3. Find your API Key/Token in the account settings\n 4. Choose your preferred regional endpoint for optimal performance\n\n Regional Endpoints:\n • US West (SFO): https://production-sfo.browserless.io\n • Europe UK (London): https://production-lon.browserless.io\n • Europe (Amsterdam): https://production-ams.browserless.io\n\n For custom/dedicated instances, select \"Custom\" and enter your specific endpoint URL.\n ",
|
||||
"Capture Screenshot": "スクリーンショットを撮影",
|
||||
"Generate PDF": "PDFを生成",
|
||||
"Scrape URL": "スクレイプ URL",
|
||||
"Run BQL Query": "BQL クエリを実行",
|
||||
"Get Website Performance": "ウェブサイトのパフォーマンスを取得する",
|
||||
"Take a screenshot of a web page": "ウェブページのスクリーンショットを撮る",
|
||||
"Convert a web page to PDF": "Web ページを PDF に変換する",
|
||||
"Extract content from a web page": "ウェブページからコンテンツを抽出",
|
||||
"Execute Browser Query Language (BQL) GraphQL-based queries for advanced browser automation": "ブラウザ・クエリ言語(BQL)のGraphQLベースのクエリを実行します。",
|
||||
"Analyze website performance metrics using Lighthouse": "Lighthouseを使ってウェブサイトのパフォーマンス指標を分析する",
|
||||
"URL": "URL",
|
||||
"Image Type": "画像の種類",
|
||||
"Quality": "品質",
|
||||
"Full Page": "全ページ",
|
||||
"Viewport Width": "ビューポートの幅",
|
||||
"Viewport Height": "ビューポートの高さ",
|
||||
"Wait for Selector": "セレクターを待つ",
|
||||
"Delay (ms)": "遅延 (ミリ秒)",
|
||||
"Omit Background": "バックグラウンドを省略する",
|
||||
"Clip X Position": "クリップのX位置",
|
||||
"Clip Y Position": "Clip Y Position",
|
||||
"Clip Width": "Clip Width",
|
||||
"Clip Height": "クリップの高さ",
|
||||
"HTML Content": "HTML コンテンツ",
|
||||
"Paper Format": "用紙の書式",
|
||||
"Landscape": "ランドスケープ",
|
||||
"Print Background": "背景を印刷",
|
||||
"Top Margin": "上マージン(上)",
|
||||
"Right Margin": "右証拠金",
|
||||
"Bottom Margin": "下マージン(マージン)",
|
||||
"Left Margin": "左マージン(&L)",
|
||||
"Header Template": "ヘッダーテンプレート",
|
||||
"Footer Template": "フッターテンプレート",
|
||||
"Display Header/Footer": "ヘッダー/フッター",
|
||||
"Scale": "拡大縮小",
|
||||
"Wait for Selector Timeout": "セレクターのタイムアウトを待つ",
|
||||
"Wait for Selector Visible": "セレクターが表示されるまで待つ",
|
||||
"Wait for Selector Hidden": "セレクターが非表示になってから待つ",
|
||||
"Prefer CSS Page Size": "Prefer CSS Page Size",
|
||||
"Page Ranges": "ページ範囲",
|
||||
"Custom Width": "カスタム幅",
|
||||
"Custom Height": "カスタム高さ",
|
||||
"Tagged PDF": "タグ付けされたPDF",
|
||||
"Generate Outline": "アウトラインを生成",
|
||||
"Timeout (ms)": "タイムアウト (ミリ秒)",
|
||||
"Wait for Function": "Wait for Function",
|
||||
"Wait for Function Polling": "関数のポーリングを待つ",
|
||||
"Wait for Function Timeout": "関数のタイムアウトを待つ",
|
||||
"User Agent": "ユーザーエージェント",
|
||||
"Wait Timeout (ms)": "待機タイムアウト (ms)",
|
||||
"Best Attempt": "Best Attempt",
|
||||
"Elements to Extract": "抽出する要素",
|
||||
"Wait for Event": "イベントを待つ",
|
||||
"Wait for Event Timeout": "イベントのタイムアウトを待つ",
|
||||
"Debug Console": "Debug Console",
|
||||
"Debug Cookies": "クッキーのデバッグ",
|
||||
"Debug Network": "ネットワークデバッグ",
|
||||
"Cookies": "Cookie",
|
||||
"Wait Until": "まで待機する",
|
||||
"BQL Query": "BQL クエリ",
|
||||
"Query Variables": "クエリ変数",
|
||||
"Operation Name": "操作名",
|
||||
"Stealth Mode": "ステルスモード",
|
||||
"Headless Mode": "ヘッドレスモード",
|
||||
"Human-like Behavior": "人間のような行動",
|
||||
"Proxy Type": "プロキシタイプ",
|
||||
"Proxy Country": "プロキシの国",
|
||||
"Sticky Proxy": "スティッキープロキシ",
|
||||
"Block Ads": "広告をブロック",
|
||||
"Block Consent Modals": "同意モーダルをブロック",
|
||||
"Record Session": "セッションを記録",
|
||||
"Slow Motion (ms)": "スローモーション (ms)",
|
||||
"Ignore HTTPS Errors": "HTTPS エラーを無視",
|
||||
"Performance Categories": "パフォーマンスカテゴリー",
|
||||
"Device Type": "デバイスタイプ",
|
||||
"Network Throttling": "ネットワークスロットリング",
|
||||
"Only Category Scores": "カテゴリの得点のみ",
|
||||
"Locale": "ロケール",
|
||||
"Emulate Media Type": "エミュレートするメディアタイプ",
|
||||
"Performance Budgets": "パフォーマンス予算",
|
||||
"The URL of the page to capture": "キャプチャするページの URL",
|
||||
"Format of the screenshot image": "スクリーンショット画像のフォーマット",
|
||||
"Image quality (0-100, only for JPEG)": "画質(0-100、JPEGのみ)",
|
||||
"Capture the full scrollable page": "スクロール可能な全ページをキャプチャする",
|
||||
"Width of the browser viewport in pixels": "ブラウザのビューポートの幅 (ピクセル単位)",
|
||||
"Height of the browser viewport in pixels": "ブラウザのビューポートの高さ(ピクセル単位)",
|
||||
"CSS selector to wait for before taking screenshot": "スクリーンショットを撮る前に待つCSSセレクター",
|
||||
"Delay in milliseconds before taking screenshot": "スクリーンショット取得までの時間 (ミリ秒)",
|
||||
"Hide default white background for transparent screenshots": "透明なスクリーンショットの場合、デフォルトの白背景を隠す",
|
||||
"X coordinate of the top-left corner for clipping": "クリッピングのための左上隅のX座標",
|
||||
"Y coordinate of the top-left corner for clipping": "クリッピングのための左上隅のY座標",
|
||||
"Width of the clipping area": "クリッピング領域の幅",
|
||||
"Height of the clipping area": "クリッピング領域の高さ",
|
||||
"The URL of the page to convert to PDF": "PDF に変換するページの URL",
|
||||
"HTML content to render as PDF (alternative to URL)": "PDFとしてレンダリングするHTMLコンテンツ(URLの代替)",
|
||||
"Paper format for the PDF": "PDFの用紙フォーマット",
|
||||
"Use landscape orientation": "横向きの向きを使用",
|
||||
"Include background graphics": "背景画像を含める",
|
||||
"Top margin (e.g., \"10mm\", \"0.4in\")": "上マージン(例:\"10mm\", \"0.4in\")",
|
||||
"Right margin (e.g., \"10mm\", \"0.4in\")": "右マージン(例:\"10mm\", \"0.4in\")",
|
||||
"Bottom margin (e.g., \"10mm\", \"0.4in\")": "下マージン(例:\"10mm\", \"0.4in\")",
|
||||
"Left margin (e.g., \"10mm\", \"0.4in\")": "左マージン(例:\"10mm\", \"0.4in\")",
|
||||
"HTML template for the print header": "印刷ヘッダーのHTMLテンプレート",
|
||||
"HTML template for the print footer": "印刷フッター用のHTMLテンプレート",
|
||||
"Display header and footer": "ヘッダーとフッターを表示",
|
||||
"Scale of the webpage rendering (0.1 - 2.0)": "ウェブページレンダリングのスケール (0.1 - 2.0)",
|
||||
"CSS selector to wait for before generating PDF": "PDFを生成する前に待つCSSセレクター",
|
||||
"Timeout in milliseconds for waiting for selector": "セレクター待機時間(ミリ秒単位)",
|
||||
"Wait for selector to be visible": "セレクターが表示されるまで待つ",
|
||||
"Wait for selector to be hidden": "セレクターが非表示になるまで待つ",
|
||||
"Give any CSS @page size declared in the page priority over format": "フォーマットよりもページの優先度で宣言されたCSSの@ページサイズを指定します",
|
||||
"Paper ranges to print, e.g. \"1-5, 8, 11-13\"": "印刷する用紙の範囲。例: \"1-5, 8, 11-13\"",
|
||||
"Custom width of paper (e.g., \"8.5in\", \"210mm\")": "用紙のカスタム幅(例:\"8.5in\", \"210mm\")",
|
||||
"Custom height of paper (e.g., \"11in\", \"297mm\")": "紙のカスタム高さ(例:「11in」、「297mm」)",
|
||||
"Hide default white background and allow transparent PDFs": "既定の白背景を非表示にして透明な PDF を許可する",
|
||||
"Generate tagged (accessible) PDF": "タグ付きの (アクセシブル) PDF を生成",
|
||||
"Generate document outline": "ドキュメントのアウトラインを生成",
|
||||
"Maximum time to wait for the page to load": "ページが読み込まれるまでの最大時間",
|
||||
"JavaScript function to wait for before generating PDF": "PDFを生成する前に待つJavaScript関数",
|
||||
"Polling interval for wait function (\"raf\", \"mutation\", or number in ms)": "待機関数のポーリング間隔 (\"raf\", \"mutation\", または ms内の数値)",
|
||||
"Timeout in milliseconds for wait function (0 to disable)": "待機関数のタイムアウト(0から無効)",
|
||||
"Custom user agent string to use for the request": "リクエストに使用するカスタムユーザーエージェント文字列",
|
||||
"Timeout in milliseconds to wait before generating PDF": "PDF生成までの待機時間 (ミリ秒単位)",
|
||||
"Attempt to proceed when awaited events fail or timeout": "待機中のイベントやタイムアウト時に続行しようとしています",
|
||||
"The URL of the page to scrape": "スクレイプするページの URL",
|
||||
"CSS selectors for elements to extract": "抽出する要素の CSS セレクター",
|
||||
"CSS selector to wait for before scraping": "スクレイピングの前に待機するCSSセレクター",
|
||||
"Timeout in milliseconds to wait before scraping": "スクレイプまでの待機時間(ミリ秒単位)",
|
||||
"Event name to wait for before scraping": "スクラップする前に待機するイベント名",
|
||||
"Timeout in milliseconds for wait event": "待機イベントのタイムアウト",
|
||||
"Include console logs in debug output": "デバッグ出力にコンソールログを含める",
|
||||
"Include cookies in debug output": "デバッグ出力に Cookie を含める",
|
||||
"Include network requests in debug output": "デバッグ出力にネットワーク要求を含める",
|
||||
"Custom user agent string": "カスタムユーザーエージェント文字列",
|
||||
"Cookies to set before scraping": "スクレイピング前に設定するクッキー",
|
||||
"When to consider navigation complete": "ナビゲーション完了を検討する時",
|
||||
"JavaScript function to wait for before scraping (should return true when ready)": "スクレイピングの前に待機するJavaScript関数 (readyがtrueを返す必要があります)",
|
||||
"Browser viewport width in pixels": "ブラウザのビューポートの幅(ピクセル単位)",
|
||||
"Browser viewport height in pixels": "ブラウザのビューポートの高さ(ピクセル単位)",
|
||||
"GraphQL-based BQL query for browser automation. Example: mutation { goto(url: \"https://example.com\") { status } }": "ブラウザの自動化のためのGraphQLベースのBQLクエリ。例: mutter{ goto(url: \"https://example.com\") { status }}",
|
||||
"Variables to pass to the BQL query (JSON object)": "BQL クエリに渡す変数(JSON オブジェクト)",
|
||||
"Name of the GraphQL operation to execute": "実行するGraphQL操作の名前",
|
||||
"Maximum execution time in milliseconds": "最大実行時間 (ミリ秒)",
|
||||
"Enable stealth mode for bot detection bypass": "Bot検出バイパスのステルスモードを有効にする",
|
||||
"Run browser in headless mode (set to false for GUI)": "ヘッドレスモードでブラウザーを実行(GUIの場合は falseに設定)",
|
||||
"Enable human-like mouse movement, typing, and delays": "人間のようなマウスの動き、入力、遅延を有効にする",
|
||||
"Type of proxy to use": "使用するプロキシの種類",
|
||||
"Country code for residential proxy (e.g., us, gb, de)": "居住者プロキシの国コード(例:us、gb、de)",
|
||||
"Maintain same proxy IP across session": "セッション間で同じプロキシ IP を維持する",
|
||||
"Enable ad blocker (uBlock Origin)": "広告ブロッカーを有効にする (uBlock Origin)",
|
||||
"Automatically block/dismiss cookie consent banners": "クッキー同意バナーを自動的にブロック/却下する",
|
||||
"Enable session recording for debugging": "デバッグ用のセッション録音を有効にする",
|
||||
"Add delays between browser actions in milliseconds": "ブラウザー操作の間の遅延をミリ秒単位で追加",
|
||||
"Ignore HTTPS certificate errors during navigation": "ナビゲーション中に HTTPS 証明書エラーを無視する",
|
||||
"Browser viewport width": "Browser viewport width",
|
||||
"Browser viewport height": "ブラウザーのビューポートの高さ",
|
||||
"Cookies to set before executing BQL query": "BQL クエリを実行する前に設定する Cookie",
|
||||
"The URL of the website to analyze": "分析するウェブサイトのURL",
|
||||
"Select which performance categories to analyze (performance, accessibility, best-practices, seo, pwa)": "分析するパフォーマンスカテゴリを選択してください (パフォーマンス、アクセシビリティ、ベストプラクティス、seo、pwa)",
|
||||
"Device type for performance analysis": "パフォーマンス分析のためのデバイスの種類",
|
||||
"Network throttling simulation": "ネットワークスロットリングシミュレーション",
|
||||
"Return only category scores without detailed audit results": "詳細な監査結果なしでカテゴリのみのスコアを返す",
|
||||
"Locale for the analysis (e.g., en-US, de-DE)": "解析のためのロケール(例:en-US、de-DE)",
|
||||
"Maximum time to wait for the analysis to complete": "分析が完了するまでの最大時間",
|
||||
"CSS selector to wait for before running performance analysis": "パフォーマンス分析を実行する前に待機する CSS セレクター",
|
||||
"Emulate CSS media type": "Emulate CSS media type",
|
||||
"Lighthouse performance budgets for resource sizes": "リソースサイズのための灯台のパフォーマンス予算",
|
||||
"Enable ad blocker during performance analysis": "パフォーマンス分析中に広告ブロッカーを有効にする",
|
||||
"PNG": "PNG",
|
||||
"JPEG": "JPEG",
|
||||
"A0": "A0",
|
||||
"A1": "A1",
|
||||
"A2": "A2",
|
||||
"A3": "A3",
|
||||
"A4": "A4",
|
||||
"A5": "A5",
|
||||
"A6": "A6",
|
||||
"Letter": "手紙",
|
||||
"Legal": "Legal",
|
||||
"Ledger": "Ledger",
|
||||
"Tabloid": "タブロイド",
|
||||
"Load Event": "イベントを読み込む",
|
||||
"DOM Content Loaded": "DOMコンテンツがロードされました",
|
||||
"Network Idle 0": "ネットワーク待機時間 0",
|
||||
"Network Idle 2": "ネットワークアイドル2",
|
||||
"Residential": "<unk>",
|
||||
"None": "なし",
|
||||
"Desktop": "デスクトップ",
|
||||
"Mobile": "モバイル",
|
||||
"No Throttling": "スロットリングなし",
|
||||
"Slow 4G": "低速4G",
|
||||
"Regular 4G": "通常4G",
|
||||
"Fast 4G": "Fast 4G",
|
||||
"Screen": "画面",
|
||||
"Print": "印刷"
|
||||
}
|
||||
@@ -0,0 +1,209 @@
|
||||
{
|
||||
"Browserless is a headless browser automation tool that allows you to scrape websites, take screenshots, and more.": "Browserless is een headless browser automatiseringstool waarmee je websites kunt scrapen, screenshots kunt maken en meer.",
|
||||
"API Token": "API Token",
|
||||
"Region": "Regio",
|
||||
"Custom Base URL": "Aangepaste basis-URL",
|
||||
"Your Browserless API token (found in your dashboard)": "Uw Browserless API-token (gevonden in uw dashboard)",
|
||||
"Choose the regional endpoint closest to you for optimal performance": "Kies het regionale eindpunt dat het dichtst bij u staat voor optimale prestaties",
|
||||
"Enter your custom Browserless endpoint URL": "Voer uw aangepaste Browserless eindpunt URL in",
|
||||
"US West (San Francisco)": "VS West (San Francisco)",
|
||||
"Europe UK (London)": "Europa UK (London)",
|
||||
"Europe (Amsterdam)": "Europa (Amsterdam)",
|
||||
"Custom Endpoint": "Aangepast eindpunt",
|
||||
"\n To obtain your API credentials:\n\n 1. Sign up for a free Browserless account at https://www.browserless.io\n 2. Navigate to your dashboard\n 3. Find your API Key/Token in the account settings\n 4. Choose your preferred regional endpoint for optimal performance\n\n Regional Endpoints:\n • US West (SFO): https://production-sfo.browserless.io\n • Europe UK (London): https://production-lon.browserless.io\n • Europe (Amsterdam): https://production-ams.browserless.io\n\n For custom/dedicated ": "\n Om je API-referenties te verkrijgen:\n\n 1. Meld je aan voor een gratis Browserless account op https://www. rowserless.io\n 2. Navigeer naar uw dashboard\n 3. Vind uw API Key/Token in de accountinstellingen\n 4. Kies uw regionale eindpunt voor optimale prestaties\n\n regionale eindpunten:\n • US West (SFO): https://production-sfo. rowserless.io\n • Europe UK (London): https://production-lon.browserless.io\n • Europa (Amsterdam): https://production-ams. rowserless.io\n\n Voor custom/dedicated instanties, selecteer \"Aangepast\" en voer uw specifieke eindpunt URL in.\n ",
|
||||
"Capture Screenshot": "Schermafbeelding maken",
|
||||
"Generate PDF": "PDF-bestand genereren",
|
||||
"Scrape URL": "Scrape URL",
|
||||
"Run BQL Query": "BQL-query uitvoeren",
|
||||
"Get Website Performance": "Websiteprestaties verkrijgen",
|
||||
"Take a screenshot of a web page": "Maak een schermafbeelding van een webpagina",
|
||||
"Convert a web page to PDF": "Converteer een webpagina naar PDF",
|
||||
"Extract content from a web page": "Inhoud uit een webpagina halen",
|
||||
"Execute Browser Query Language (BQL) GraphQL-based queries for advanced browser automation": "Voer Browser Query Language (BQL) GraphQL gebaseerde query's uit voor geavanceerde browser automatisering",
|
||||
"Analyze website performance metrics using Lighthouse": "Analyseer prestatiestatistieken van websites met Lighthouse",
|
||||
"URL": "URL",
|
||||
"Image Type": "Type afbeelding",
|
||||
"Quality": "Kwaliteit",
|
||||
"Full Page": "Volledige pagina",
|
||||
"Viewport Width": "Weergave breedte",
|
||||
"Viewport Height": "Viewport hoogte",
|
||||
"Wait for Selector": "Wacht op selector",
|
||||
"Delay (ms)": "Vertraging (ms)",
|
||||
"Omit Background": "Achtergrond laten weg",
|
||||
"Clip X Position": "Clip X-positie",
|
||||
"Clip Y Position": "Clip Y Position",
|
||||
"Clip Width": "Clip Width",
|
||||
"Clip Height": "Clip hoogte",
|
||||
"HTML Content": "HTML inhoud",
|
||||
"Paper Format": "Papieren formaat",
|
||||
"Landscape": "Liggend",
|
||||
"Print Background": "Achtergrond afdrukken",
|
||||
"Top Margin": "Top marge",
|
||||
"Right Margin": "Rechter marge",
|
||||
"Bottom Margin": "Onderste marge",
|
||||
"Left Margin": "Linker marge",
|
||||
"Header Template": "Koptekst sjabloon",
|
||||
"Footer Template": "Voettekst sjabloon",
|
||||
"Display Header/Footer": "Kop- en voettekst weergeven",
|
||||
"Scale": "Schaal",
|
||||
"Wait for Selector Timeout": "Wachten op Selector Timeout",
|
||||
"Wait for Selector Visible": "Wacht op zichtbaar selector",
|
||||
"Wait for Selector Hidden": "Wacht op de selector verborgen",
|
||||
"Prefer CSS Page Size": "Prefer CSS Page Size",
|
||||
"Page Ranges": "Pagina Bereiken",
|
||||
"Custom Width": "Aangepaste breedte",
|
||||
"Custom Height": "Aangepaste hoogte",
|
||||
"Tagged PDF": "Getagde PDF",
|
||||
"Generate Outline": "Genereer omlijning",
|
||||
"Timeout (ms)": "Time-out (ms)",
|
||||
"Wait for Function": "Wachten op functie",
|
||||
"Wait for Function Polling": "Wachten op Functie Polling",
|
||||
"Wait for Function Timeout": "Wachten op Functie Time-out",
|
||||
"User Agent": "User Agent",
|
||||
"Wait Timeout (ms)": "Wacht time-out (ms)",
|
||||
"Best Attempt": "Beste poging",
|
||||
"Elements to Extract": "Te extraheren elementen",
|
||||
"Wait for Event": "Wachten op gebeurtenis",
|
||||
"Wait for Event Timeout": "Wachten op Evenement Time-out",
|
||||
"Debug Console": "Debug Console",
|
||||
"Debug Cookies": "Debug Cookies",
|
||||
"Debug Network": "Foutopsporing netwerk",
|
||||
"Cookies": "Koekjes",
|
||||
"Wait Until": "Wacht tot",
|
||||
"BQL Query": "BQL query",
|
||||
"Query Variables": "Query variabelen",
|
||||
"Operation Name": "Operatie Naam",
|
||||
"Stealth Mode": "Stealth Modus",
|
||||
"Headless Mode": "Hoofdloze modus",
|
||||
"Human-like Behavior": "Menselijk achtig gedrag",
|
||||
"Proxy Type": "Proxy Type",
|
||||
"Proxy Country": "Proxy Land",
|
||||
"Sticky Proxy": "Vasthoudende Proxy",
|
||||
"Block Ads": "Advertenties blokkeren",
|
||||
"Block Consent Modals": "Toestemming Modus blokkeren",
|
||||
"Record Session": "Neem een sessie op",
|
||||
"Slow Motion (ms)": "Langzame beweging (ms)",
|
||||
"Ignore HTTPS Errors": "Negeer HTTPS fouten",
|
||||
"Performance Categories": "Categorieën Prestaties",
|
||||
"Device Type": "Type apparaat",
|
||||
"Network Throttling": "Netwerk Gegrottling",
|
||||
"Only Category Scores": "Alleen categoriescores",
|
||||
"Locale": "Lokalisatie",
|
||||
"Emulate Media Type": "Mediatype emuleren",
|
||||
"Performance Budgets": "Prestaties budgetten",
|
||||
"The URL of the page to capture": "De URL van de pagina om op te nemen",
|
||||
"Format of the screenshot image": "Formaat van de schermafbeelding",
|
||||
"Image quality (0-100, only for JPEG)": "Afbeeldingskwaliteit (0-100, alleen voor JPEG)",
|
||||
"Capture the full scrollable page": "Sla de volledige scrollbare pagina op",
|
||||
"Width of the browser viewport in pixels": "Breedte van de browserviewport in pixels",
|
||||
"Height of the browser viewport in pixels": "Hoogte van de browserviewport in pixels",
|
||||
"CSS selector to wait for before taking screenshot": "CSS-selector die wacht voordat een screenshot wordt gemaakt",
|
||||
"Delay in milliseconds before taking screenshot": "Vertraging in milliseconden voor het maken van screenshot",
|
||||
"Hide default white background for transparent screenshots": "Verberg standaard witte achtergrond voor transparante schermafbeeldingen",
|
||||
"X coordinate of the top-left corner for clipping": "X-coördinaat van de linker bovenhoek voor knippen",
|
||||
"Y coordinate of the top-left corner for clipping": "Y-coördinaat van de linker bovenhoek voor knippen",
|
||||
"Width of the clipping area": "Breedte van het knipgebied",
|
||||
"Height of the clipping area": "Hoogte van het knipgebied",
|
||||
"The URL of the page to convert to PDF": "De URL van de pagina om te converteren naar PDF",
|
||||
"HTML content to render as PDF (alternative to URL)": "HTML-inhoud om weer te geven als PDF (alternatief voor URL)",
|
||||
"Paper format for the PDF": "Papieren formaat voor de PDF",
|
||||
"Use landscape orientation": "Landschap oriëntatie gebruiken",
|
||||
"Include background graphics": "Gebruik achtergrondgrafische gegevens",
|
||||
"Top margin (e.g., \"10mm\", \"0.4in\")": "Hoogste marge (bijv. \"10mm\", \"0.4in\")",
|
||||
"Right margin (e.g., \"10mm\", \"0.4in\")": "Rechter marge (bijv. \"10mm\", \"0.4in\")",
|
||||
"Bottom margin (e.g., \"10mm\", \"0.4in\")": "Onderste marge (bijv. \"10mm\", \"0.4in\")",
|
||||
"Left margin (e.g., \"10mm\", \"0.4in\")": "Linker marge (bijv. \"10mm\", \"0.4in\")",
|
||||
"HTML template for the print header": "HTML template voor de print header",
|
||||
"HTML template for the print footer": "HTML template voor de print voettekst",
|
||||
"Display header and footer": "Kop- en voettekst weergeven",
|
||||
"Scale of the webpage rendering (0.1 - 2.0)": "Schaal van de webpagina weergave (0.1 - 2.0)",
|
||||
"CSS selector to wait for before generating PDF": "CSS-selector die wacht voor het genereren van PDF",
|
||||
"Timeout in milliseconds for waiting for selector": "Time-out in milliseconden tijdens het wachten op selector",
|
||||
"Wait for selector to be visible": "Wacht tot de selector zichtbaar is",
|
||||
"Wait for selector to be hidden": "Wacht tot de selector verborgen is",
|
||||
"Give any CSS @page size declared in the page priority over format": "Geef elke grootte van de @pagina die aangegeven wordt in de pagina prioriteit boven formaat",
|
||||
"Paper ranges to print, e.g. \"1-5, 8, 11-13\"": "Papieren bereiken om af te drukken, bijvoorbeeld \"1-5, 8, 11-13\"",
|
||||
"Custom width of paper (e.g., \"8.5in\", \"210mm\")": "Aangepaste breedte van papier (bijv. \"8.5in\", \"210mm\")",
|
||||
"Custom height of paper (e.g., \"11in\", \"297mm\")": "Aangepaste hoogte van papier (bijv. \"11in\", \"297mm\")",
|
||||
"Hide default white background and allow transparent PDFs": "Verberg standaard witte achtergrond en sta transparante PDF's toe",
|
||||
"Generate tagged (accessible) PDF": "Genereer getagde (toegankelijk) PDF",
|
||||
"Generate document outline": "Genereer document omlijning",
|
||||
"Maximum time to wait for the page to load": "Maximale wachttijd tot de pagina geladen wordt",
|
||||
"JavaScript function to wait for before generating PDF": "JavaScript-functie wacht voor het genereren van PDF",
|
||||
"Polling interval for wait function (\"raf\", \"mutation\", or number in ms)": "Polling interval voor wacht-functie (\"raf\", \"mutatie\", of getal in ms)",
|
||||
"Timeout in milliseconds for wait function (0 to disable)": "Time-out in milliseconden voor wachtfunctie (0 om uit te schakelen)",
|
||||
"Custom user agent string to use for the request": "Aangepaste user agent string om te gebruiken voor het verzoek",
|
||||
"Timeout in milliseconds to wait before generating PDF": "Time-out in milliseconden te wachten voordat PDF wordt gegenereerd",
|
||||
"Attempt to proceed when awaited events fail or timeout": "Poging om verder te gaan wanneer wachtende gebeurtenissen mislukken of timeout",
|
||||
"The URL of the page to scrape": "De URL van de pagina om te scrape",
|
||||
"CSS selectors for elements to extract": "CSS-selectors voor elementen om uit te pakken",
|
||||
"CSS selector to wait for before scraping": "CSS-selector die wacht voor het scrapen",
|
||||
"Timeout in milliseconds to wait before scraping": "Time-out in milliseconden te wachten voordat scraping",
|
||||
"Event name to wait for before scraping": "Event naam te wachten voordat u scrapt",
|
||||
"Timeout in milliseconds for wait event": "Time-out in milliseconden bij wacht-gebeurtenis",
|
||||
"Include console logs in debug output": "Console logs opnemen in debug uitvoer",
|
||||
"Include cookies in debug output": "Cookies opnemen in debug uitvoer",
|
||||
"Include network requests in debug output": "Netwerkverzoeken opnemen in debug output",
|
||||
"Custom user agent string": "Aangepaste user agent string",
|
||||
"Cookies to set before scraping": "Koekjes om te zetten voor scraping",
|
||||
"When to consider navigation complete": "Wanneer te overwegen navigatie voltooid",
|
||||
"JavaScript function to wait for before scraping (should return true when ready)": "JavaScript functie waarop moet worden gewacht voor het scrapen (moet waar zijn wanneer klaar)",
|
||||
"Browser viewport width in pixels": "Browser viewport breedte in pixels",
|
||||
"Browser viewport height in pixels": "Browser viewport hoogte in pixels",
|
||||
"GraphQL-based BQL query for browser automation. Example: mutation { goto(url: \"https://example.com\") { status } }": "GraphQL-based BQL query voor browser automatisering. Voorbeeld: mutation { goto(url: \"https://example.com\") { status }}",
|
||||
"Variables to pass to the BQL query (JSON object)": "Variabelen om door te geven aan de BQL query (JSON object)",
|
||||
"Name of the GraphQL operation to execute": "Naam van de te uitvoeren GraphQL bewerking",
|
||||
"Maximum execution time in milliseconds": "Maximale uitvoeringstijd in milliseconden",
|
||||
"Enable stealth mode for bot detection bypass": "Schakel stealth modus in voor bot detectie bypass",
|
||||
"Run browser in headless mode (set to false for GUI)": "Start browser in headless mode (ingesteld op 'onwaar' voor GUI)",
|
||||
"Enable human-like mouse movement, typing, and delays": "Mens-achtige muisbeweging, typen en vertragingen inschakelen",
|
||||
"Type of proxy to use": "Type proxy voor gebruik",
|
||||
"Country code for residential proxy (e.g., us, gb, de)": "Landcode voor residentiële proxy (bijv. us, gb, de)",
|
||||
"Maintain same proxy IP across session": "Handhaaf dezelfde proxy IP tijdens sessie",
|
||||
"Enable ad blocker (uBlock Origin)": "ad blocker inschakelen (uBlock Origin)",
|
||||
"Automatically block/dismiss cookie consent banners": "Automatisch banners voor cookietoestemming blokkeren/uitschakelen",
|
||||
"Enable session recording for debugging": "Sessie opname inschakelen voor foutopsporing",
|
||||
"Add delays between browser actions in milliseconds": "Vertragingen tussen browseracties in milliseconden toevoegen",
|
||||
"Ignore HTTPS certificate errors during navigation": "Negeer HTTPS certificaatfouten tijdens navigatie",
|
||||
"Browser viewport width": "Browser viewport width",
|
||||
"Browser viewport height": "Browser viewport hoogte",
|
||||
"Cookies to set before executing BQL query": "Cookies om in te stellen voordat BQL-query wordt uitgevoerd",
|
||||
"The URL of the website to analyze": "De URL van de website om te analyseren",
|
||||
"Select which performance categories to analyze (performance, accessibility, best-practices, seo, pwa)": "Selecteer welke prestatiecategorieën moeten worden geanalyseerd (prestaties, toegankelijkheid, beste praktijken, seo pwa)",
|
||||
"Device type for performance analysis": "Type apparaat voor prestatieanalyse",
|
||||
"Network throttling simulation": "Netwerk beperking simulatie",
|
||||
"Return only category scores without detailed audit results": "Retourneer alleen categoriescores zonder gedetailleerde auditresultaten",
|
||||
"Locale for the analysis (e.g., en-US, de-DE)": "Lokalisatie voor de analyse (bijv. en-US, de-DE)",
|
||||
"Maximum time to wait for the analysis to complete": "Maximale wachttijd tot de analyse is voltooid",
|
||||
"CSS selector to wait for before running performance analysis": "CSS-selector die wacht voor het uitvoeren van prestatieanalyse",
|
||||
"Emulate CSS media type": "CSS-mediatype emuleren",
|
||||
"Lighthouse performance budgets for resource sizes": "Lighthouse prestatiebudgetten voor bronnengrootte",
|
||||
"Enable ad blocker during performance analysis": "Schakel ad blocker in tijdens prestatieanalyse",
|
||||
"PNG": "PNG",
|
||||
"JPEG": "JPEG",
|
||||
"A0": "A0",
|
||||
"A1": "A1",
|
||||
"A2": "A2",
|
||||
"A3": "A3",
|
||||
"A4": "A4",
|
||||
"A5": "A5",
|
||||
"A6": "A6",
|
||||
"Letter": "Brief",
|
||||
"Legal": "Juridisch",
|
||||
"Ledger": "Grootboek",
|
||||
"Tabloid": "Tabloïd",
|
||||
"Load Event": "Gebeurtenis laden",
|
||||
"DOM Content Loaded": "DOM-inhoud geladen",
|
||||
"Network Idle 0": "Netwerk Idle 0",
|
||||
"Network Idle 2": "Netwerk Idle 2",
|
||||
"Residential": "Particulier",
|
||||
"None": "geen",
|
||||
"Desktop": "Startscherm",
|
||||
"Mobile": "Mobiel",
|
||||
"No Throttling": "Geen Throttling",
|
||||
"Slow 4G": "Langzame 4G",
|
||||
"Regular 4G": "Normale 4G",
|
||||
"Fast 4G": "Fast 4G",
|
||||
"Screen": "Scherm",
|
||||
"Print": "Afdrukken"
|
||||
}
|
||||
@@ -0,0 +1,209 @@
|
||||
{
|
||||
"Browserless is a headless browser automation tool that allows you to scrape websites, take screenshots, and more.": "Navegador sem cabeça é uma ferramenta de automação de navegador que permite que você scrape sites, faça capturas de tela e muito mais.",
|
||||
"API Token": "API Token",
|
||||
"Region": "Região",
|
||||
"Custom Base URL": "URL Base personalizada",
|
||||
"Your Browserless API token (found in your dashboard)": "Seu token API de Browserless (encontrado no seu painel)",
|
||||
"Choose the regional endpoint closest to you for optimal performance": "Escolha o endpoint regional mais próximo de você para um desempenho ideal",
|
||||
"Enter your custom Browserless endpoint URL": "Digite sua URL de endpoint personalizada para navegador",
|
||||
"US West (San Francisco)": "Oeste dos EUA (San Francisco)",
|
||||
"Europe UK (London)": "Europe UK (Londres)",
|
||||
"Europe (Amsterdam)": "Europa (Amesterdão)",
|
||||
"Custom Endpoint": "Endpoint personalizado",
|
||||
"\n To obtain your API credentials:\n\n 1. Sign up for a free Browserless account at https://www.browserless.io\n 2. Navigate to your dashboard\n 3. Find your API Key/Token in the account settings\n 4. Choose your preferred regional endpoint for optimal performance\n\n Regional Endpoints:\n • US West (SFO): https://production-sfo.browserless.io\n • Europe UK (London): https://production-lon.browserless.io\n • Europe (Amsterdam): https://production-ams.browserless.io\n\n For custom/dedicated ": "\n To obtain your API credentials:\n\n 1. Sign up for a free Browserless account at https://www.browserless.io\n 2. Navigate to your dashboard\n 3. Find your API Key/Token in the account settings\n 4. Choose your preferred regional endpoint for optimal performance\n\n Regional Endpoints:\n • US West (SFO): https://production-sfo.browserless.io\n • Europe UK (London): https://production-lon.browserless.io\n • Europe (Amsterdam): https://production-ams.browserless.io\n\n For custom/dedicated instances, select \"Custom\" and enter your specific endpoint URL.\n ",
|
||||
"Capture Screenshot": "Capturar tela",
|
||||
"Generate PDF": "Gerar PDF",
|
||||
"Scrape URL": "URL Scrape",
|
||||
"Run BQL Query": "Executar consulta BQL",
|
||||
"Get Website Performance": "Obter Desempenho do Site",
|
||||
"Take a screenshot of a web page": "Tire uma captura de tela de uma página da web",
|
||||
"Convert a web page to PDF": "Converter uma página da web para PDF",
|
||||
"Extract content from a web page": "Extrair conteúdo de uma página da web",
|
||||
"Execute Browser Query Language (BQL) GraphQL-based queries for advanced browser automation": "Executar Idioma de Consulta do Navegador (BQL) consultas baseadas em GraphQL para automação avançada do navegador",
|
||||
"Analyze website performance metrics using Lighthouse": "Analisar métricas de desempenho de sites usando Farol",
|
||||
"URL": "URL:",
|
||||
"Image Type": "Tipo de imagem",
|
||||
"Quality": "Qualidade",
|
||||
"Full Page": "Página inteira",
|
||||
"Viewport Width": "Largura da vista",
|
||||
"Viewport Height": "Altura da vista",
|
||||
"Wait for Selector": "Aguardar o Seletor",
|
||||
"Delay (ms)": "Atraso (ms)",
|
||||
"Omit Background": "Omitir fundo",
|
||||
"Clip X Position": "Posição X do Clipe",
|
||||
"Clip Y Position": "Clip Y Position",
|
||||
"Clip Width": "Clip Width",
|
||||
"Clip Height": "Altura do Clipe",
|
||||
"HTML Content": "Conteúdo HTML",
|
||||
"Paper Format": "Formato em papel",
|
||||
"Landscape": "Paisagem",
|
||||
"Print Background": "Fundo de Impressão",
|
||||
"Top Margin": "Margem superior",
|
||||
"Right Margin": "Margem Direita",
|
||||
"Bottom Margin": "Margem Inferior",
|
||||
"Left Margin": "Margem Esquerda",
|
||||
"Header Template": "Modelo de cabeçalho",
|
||||
"Footer Template": "Modelo de Rodapé",
|
||||
"Display Header/Footer": "Mostrar Cabeçalho/Rodapé",
|
||||
"Scale": "Escala",
|
||||
"Wait for Selector Timeout": "Esperar pelo tempo do Seletor",
|
||||
"Wait for Selector Visible": "Esperar pelo Seletor Visível",
|
||||
"Wait for Selector Hidden": "Esperar pelo Seletor Escondido",
|
||||
"Prefer CSS Page Size": "Prefer CSS Page Size",
|
||||
"Page Ranges": "Intervalos de Página",
|
||||
"Custom Width": "Largura personalizada",
|
||||
"Custom Height": "Personalizar altura",
|
||||
"Tagged PDF": "PDF marcado",
|
||||
"Generate Outline": "Gerar Contorno",
|
||||
"Timeout (ms)": "Tempo limite (ms)",
|
||||
"Wait for Function": "Esperar por função",
|
||||
"Wait for Function Polling": "Esperando por Enquete de Função",
|
||||
"Wait for Function Timeout": "Esperar por Tempo de Função",
|
||||
"User Agent": "Agente do usuário",
|
||||
"Wait Timeout (ms)": "Tempo limite de espera (ms)",
|
||||
"Best Attempt": "Melhor tentativa",
|
||||
"Elements to Extract": "Elementos para Extrair",
|
||||
"Wait for Event": "Esperar Evento",
|
||||
"Wait for Event Timeout": "Esperar por tempo limite do evento",
|
||||
"Debug Console": "Debug Console",
|
||||
"Debug Cookies": "Depurar Cookies",
|
||||
"Debug Network": "Depurar Rede",
|
||||
"Cookies": "Biscoitos",
|
||||
"Wait Until": "Aguardar até",
|
||||
"BQL Query": "Consulta BQL",
|
||||
"Query Variables": "Consultar variáveis",
|
||||
"Operation Name": "Nome da Operação",
|
||||
"Stealth Mode": "Modo furtivo",
|
||||
"Headless Mode": "Modo Sem Cabeça",
|
||||
"Human-like Behavior": "Comportamento como humano",
|
||||
"Proxy Type": "Tipo de proxy",
|
||||
"Proxy Country": "País do Proxy",
|
||||
"Sticky Proxy": "Proxy Fixo",
|
||||
"Block Ads": "Bloquear anúncios",
|
||||
"Block Consent Modals": "Bloquear Módulos de Consentimento",
|
||||
"Record Session": "Gravar Sessão",
|
||||
"Slow Motion (ms)": "Câmera lenta (ms)",
|
||||
"Ignore HTTPS Errors": "Ignorar erros HTTPS",
|
||||
"Performance Categories": "Categorias de Desempenho",
|
||||
"Device Type": "Tipo de dispositivo",
|
||||
"Network Throttling": "Limite de Rede",
|
||||
"Only Category Scores": "Somente pontuações de categoria",
|
||||
"Locale": "Localidade",
|
||||
"Emulate Media Type": "Emular tipo de mídia",
|
||||
"Performance Budgets": "Orçamentos de Desempenho",
|
||||
"The URL of the page to capture": "A URL da página a ser capturada",
|
||||
"Format of the screenshot image": "Formato da imagem da tela",
|
||||
"Image quality (0-100, only for JPEG)": "Qualidade de imagem (0-100, somente para JPEG)",
|
||||
"Capture the full scrollable page": "Capturar a página completa",
|
||||
"Width of the browser viewport in pixels": "Largura da visualização do navegador em pixels",
|
||||
"Height of the browser viewport in pixels": "Altura da visualização do navegador em pixels",
|
||||
"CSS selector to wait for before taking screenshot": "Seletor CSS a esperar antes de capturar a tela",
|
||||
"Delay in milliseconds before taking screenshot": "Atraso em milissegundos antes de capturar a tela",
|
||||
"Hide default white background for transparent screenshots": "Ocultar fundo padrão branco para capturas de tela transparentes",
|
||||
"X coordinate of the top-left corner for clipping": "Coordenada X do canto superior esquerdo para cortar",
|
||||
"Y coordinate of the top-left corner for clipping": "Coordenada Y do canto superior esquerdo para corte",
|
||||
"Width of the clipping area": "Largura da área de recorte",
|
||||
"Height of the clipping area": "Altura da área de clipping",
|
||||
"The URL of the page to convert to PDF": "A URL da página a ser convertida em PDF",
|
||||
"HTML content to render as PDF (alternative to URL)": "Conteúdo HTML para renderizar como PDF (alternativa à URL)",
|
||||
"Paper format for the PDF": "Formato de papel para PDF",
|
||||
"Use landscape orientation": "Usar orientação paisagem",
|
||||
"Include background graphics": "Incluir gráficos em segundo plano",
|
||||
"Top margin (e.g., \"10mm\", \"0.4in\")": "Margem superior (ex.: \"10mm\", \"0.4in\")",
|
||||
"Right margin (e.g., \"10mm\", \"0.4in\")": "Margem direita (ex.: \"10mm\", \"0.4in\")",
|
||||
"Bottom margin (e.g., \"10mm\", \"0.4in\")": "Margem inferior (ex.: \"10mm\", \"0.4in\")",
|
||||
"Left margin (e.g., \"10mm\", \"0.4in\")": "Margem esquerda (ex.: \"10mm\", \"0.4in\")",
|
||||
"HTML template for the print header": "Modelo HTML para o cabeçalho de impressão",
|
||||
"HTML template for the print footer": "Modelo HTML para o rodapé de impressão",
|
||||
"Display header and footer": "Exibir cabeçalho e rodapé",
|
||||
"Scale of the webpage rendering (0.1 - 2.0)": "Escala da renderização da página web (0.1 - 2.0)",
|
||||
"CSS selector to wait for before generating PDF": "Seletor CSS a esperar antes de gerar PDF",
|
||||
"Timeout in milliseconds for waiting for selector": "Tempo limite em milissegundos para espera por seletor",
|
||||
"Wait for selector to be visible": "Espere o seletor ser visível",
|
||||
"Wait for selector to be hidden": "Espere o seletor ser escondido",
|
||||
"Give any CSS @page size declared in the page priority over format": "Dar a qualquer CSS @page tamanho declarado no formato de prioridade da página",
|
||||
"Paper ranges to print, e.g. \"1-5, 8, 11-13\"": "Intervalos de papel para imprimir, por exemplo, \"1-5, 8, 11-13\"",
|
||||
"Custom width of paper (e.g., \"8.5in\", \"210mm\")": "Largura personalizada de papel (por exemplo, \"8.5in\", \"210mm\")",
|
||||
"Custom height of paper (e.g., \"11in\", \"297mm\")": "Altura personalizada de papel (por exemplo, \"11in\", \"297mm\")",
|
||||
"Hide default white background and allow transparent PDFs": "Oculte o fundo branco padrão e permita PDFs transparentes",
|
||||
"Generate tagged (accessible) PDF": "Gerar PDF (acessível) com tags",
|
||||
"Generate document outline": "Gerar contorno do documento",
|
||||
"Maximum time to wait for the page to load": "Tempo máximo de espera para a página carregar",
|
||||
"JavaScript function to wait for before generating PDF": "Função JavaScript para esperar antes de gerar PDF",
|
||||
"Polling interval for wait function (\"raf\", \"mutation\", or number in ms)": "Intervalo de consulta da função de espera (\"raf\", \"mutação\", ou número em ms)",
|
||||
"Timeout in milliseconds for wait function (0 to disable)": "Tempo limite em milissegundos para a função de espera (0 para desativar)",
|
||||
"Custom user agent string to use for the request": "String de agente de usuário personalizada para usar para a requisição",
|
||||
"Timeout in milliseconds to wait before generating PDF": "Tempo limite em milissegundos para esperar antes de gerar PDF",
|
||||
"Attempt to proceed when awaited events fail or timeout": "Tentativa de prosseguir quando eventos esperados falharem ou tempo limite",
|
||||
"The URL of the page to scrape": "A URL da página para scrape",
|
||||
"CSS selectors for elements to extract": "Seletores CSS para elementos a extrair",
|
||||
"CSS selector to wait for before scraping": "Seletor CSS a esperar antes da scraping",
|
||||
"Timeout in milliseconds to wait before scraping": "Tempo limite em milissegundos para esperar antes de scraping",
|
||||
"Event name to wait for before scraping": "Nome do evento a esperar antes de scraping",
|
||||
"Timeout in milliseconds for wait event": "Tempo limite em milissegundos para o evento de espera",
|
||||
"Include console logs in debug output": "Incluir logs do console na saída de depuração",
|
||||
"Include cookies in debug output": "Incluir cookies no saída de depuração",
|
||||
"Include network requests in debug output": "Incluir solicitações de rede na saída de depuração",
|
||||
"Custom user agent string": "Personalizar seqüência de agentes do usuário",
|
||||
"Cookies to set before scraping": "Cookies a serem definidos antes do scraping",
|
||||
"When to consider navigation complete": "Quando considerar a navegação concluída",
|
||||
"JavaScript function to wait for before scraping (should return true when ready)": "Função JavaScript a esperar antes da scraping (deve retornar verdadeiro quando pronto)",
|
||||
"Browser viewport width in pixels": "Largura de visualização do navegador em pixels",
|
||||
"Browser viewport height in pixels": "Visualização da altura do navegador em pixels",
|
||||
"GraphQL-based BQL query for browser automation. Example: mutation { goto(url: \"https://example.com\") { status } }": "Consulta BQL baseada em GraphQL para automação do navegador. Exemplo: mutação { goto(url: \"https://example.com\") { status }}",
|
||||
"Variables to pass to the BQL query (JSON object)": "Variáveis para passar para a consulta BQL (objeto JSON)",
|
||||
"Name of the GraphQL operation to execute": "Nome da operação GraphQL a executar",
|
||||
"Maximum execution time in milliseconds": "Tempo máximo de execução em milissegundos",
|
||||
"Enable stealth mode for bot detection bypass": "Ativar modo furtivo para a detecção de robôs",
|
||||
"Run browser in headless mode (set to false for GUI)": "Executar navegador em modo não-interativo (definido como falso para GUI)",
|
||||
"Enable human-like mouse movement, typing, and delays": "Ativar movimento do mouse, digitação e atrasos",
|
||||
"Type of proxy to use": "Tipo de proxy a usar",
|
||||
"Country code for residential proxy (e.g., us, gb, de)": "Código do país para proxy residencial (por exemplo, us, gb, de)",
|
||||
"Maintain same proxy IP across session": "Manter o mesmo IP de proxy através da sessão",
|
||||
"Enable ad blocker (uBlock Origin)": "Ativar o bloqueador de anúncios (uBlock Origin)",
|
||||
"Automatically block/dismiss cookie consent banners": "Bloquear / dispensar automaticamente cookies consentimento banners",
|
||||
"Enable session recording for debugging": "Habilitar a gravação de sessão para depuração",
|
||||
"Add delays between browser actions in milliseconds": "Adicionar atrasos entre ações do navegador em milissegundos",
|
||||
"Ignore HTTPS certificate errors during navigation": "Ignorar erros de certificados HTTPS durante a navegação",
|
||||
"Browser viewport width": "Browser viewport width",
|
||||
"Browser viewport height": "Altura da visualização do navegador",
|
||||
"Cookies to set before executing BQL query": "Cookies a serem definidos antes de executar uma consulta BQL",
|
||||
"The URL of the website to analyze": "A URL do site para analisar",
|
||||
"Select which performance categories to analyze (performance, accessibility, best-practices, seo, pwa)": "Selecione quais categorias de desempenho serão analisadas (desempenho, acessibilidade, melhores práticas, seo, pwa)",
|
||||
"Device type for performance analysis": "Tipo de dispositivo para análise de desempenho",
|
||||
"Network throttling simulation": "Simulação de redução de rede",
|
||||
"Return only category scores without detailed audit results": "Devolver apenas as pontuações das categorias sem resultados detalhados de auditoria",
|
||||
"Locale for the analysis (e.g., en-US, de-DE)": "Idioma para a análise (por exemplo, en-US, de-DE)",
|
||||
"Maximum time to wait for the analysis to complete": "Tempo máximo de espera para a análise concluir",
|
||||
"CSS selector to wait for before running performance analysis": "Seletor de CSS a esperar antes de executar a análise de desempenho",
|
||||
"Emulate CSS media type": "Emular o tipo de mídia CSS",
|
||||
"Lighthouse performance budgets for resource sizes": "Farça orçamentos de desempenho para tamanhos de recursos",
|
||||
"Enable ad blocker during performance analysis": "Ativar o bloqueador de anúncios durante a análise de desempenho",
|
||||
"PNG": "PNG",
|
||||
"JPEG": "JPEG",
|
||||
"A0": "A0",
|
||||
"A1": "A1",
|
||||
"A2": "A2",
|
||||
"A3": "A3",
|
||||
"A4": "A4",
|
||||
"A5": "A5",
|
||||
"A6": "A6",
|
||||
"Letter": "Letra",
|
||||
"Legal": "Informações",
|
||||
"Ledger": "Contabilidade",
|
||||
"Tabloid": "Tablóide",
|
||||
"Load Event": "Carregar Evento",
|
||||
"DOM Content Loaded": "Conteúdo do DOM carregado",
|
||||
"Network Idle 0": "Rede ociosa 0",
|
||||
"Network Idle 2": "Rede ociosa 2",
|
||||
"Residential": "Residencial",
|
||||
"None": "Nenhuma",
|
||||
"Desktop": "Computadores",
|
||||
"Mobile": "Celular",
|
||||
"No Throttling": "Sem sufocamento",
|
||||
"Slow 4G": "4G lento",
|
||||
"Regular 4G": "4G normal",
|
||||
"Fast 4G": "Fast 4G",
|
||||
"Screen": "Tela",
|
||||
"Print": "Impressão"
|
||||
}
|
||||
@@ -0,0 +1,209 @@
|
||||
{
|
||||
"Browserless is a headless browser automation tool that allows you to scrape websites, take screenshots, and more.": "Browserless is a headless browser automation tool that allows you to scrape websites, take screenshots, and more.",
|
||||
"API Token": "API Token",
|
||||
"Region": "Region",
|
||||
"Custom Base URL": "Custom Base URL",
|
||||
"Your Browserless API token (found in your dashboard)": "Your Browserless API token (found in your dashboard)",
|
||||
"Choose the regional endpoint closest to you for optimal performance": "Choose the regional endpoint closest to you for optimal performance",
|
||||
"Enter your custom Browserless endpoint URL": "Enter your custom Browserless endpoint URL",
|
||||
"US West (San Francisco)": "US West (San Francisco)",
|
||||
"Europe UK (London)": "Europe UK (London)",
|
||||
"Europe (Amsterdam)": "Europe (Amsterdam)",
|
||||
"Custom Endpoint": "Custom Endpoint",
|
||||
"\n To obtain your API credentials:\n\n 1. Sign up for a free Browserless account at https://www.browserless.io\n 2. Navigate to your dashboard\n 3. Find your API Key/Token in the account settings\n 4. Choose your preferred regional endpoint for optimal performance\n\n Regional Endpoints:\n • US West (SFO): https://production-sfo.browserless.io\n • Europe UK (London): https://production-lon.browserless.io\n • Europe (Amsterdam): https://production-ams.browserless.io\n\n For custom/dedicated ": "\n To obtain your API credentials:\n\n 1. Sign up for a free Browserless account at https://www.browserless.io\n 2. Navigate to your dashboard\n 3. Find your API Key/Token in the account settings\n 4. Choose your preferred regional endpoint for optimal performance\n\n Regional Endpoints:\n • US West (SFO): https://production-sfo.browserless.io\n • Europe UK (London): https://production-lon.browserless.io\n • Europe (Amsterdam): https://production-ams.browserless.io\n\n For custom/dedicated instances, select \"Custom\" and enter your specific endpoint URL.\n ",
|
||||
"Capture Screenshot": "Capture Screenshot",
|
||||
"Generate PDF": "Generate PDF",
|
||||
"Scrape URL": "Scrape URL",
|
||||
"Run BQL Query": "Run BQL Query",
|
||||
"Get Website Performance": "Get Website Performance",
|
||||
"Take a screenshot of a web page": "Take a screenshot of a web page",
|
||||
"Convert a web page to PDF": "Convert a web page to PDF",
|
||||
"Extract content from a web page": "Extract content from a web page",
|
||||
"Execute Browser Query Language (BQL) GraphQL-based queries for advanced browser automation": "Execute Browser Query Language (BQL) GraphQL-based queries for advanced browser automation",
|
||||
"Analyze website performance metrics using Lighthouse": "Analyze website performance metrics using Lighthouse",
|
||||
"URL": "URL",
|
||||
"Image Type": "Image Type",
|
||||
"Quality": "Quality",
|
||||
"Full Page": "Full Page",
|
||||
"Viewport Width": "Viewport Width",
|
||||
"Viewport Height": "Viewport Height",
|
||||
"Wait for Selector": "Wait for Selector",
|
||||
"Delay (ms)": "Delay (ms)",
|
||||
"Omit Background": "Omit Background",
|
||||
"Clip X Position": "Clip X Position",
|
||||
"Clip Y Position": "Clip Y Position",
|
||||
"Clip Width": "Clip Width",
|
||||
"Clip Height": "Clip Height",
|
||||
"HTML Content": "HTML Content",
|
||||
"Paper Format": "Paper Format",
|
||||
"Landscape": "Landscape",
|
||||
"Print Background": "Print Background",
|
||||
"Top Margin": "Top Margin",
|
||||
"Right Margin": "Right Margin",
|
||||
"Bottom Margin": "Bottom Margin",
|
||||
"Left Margin": "Left Margin",
|
||||
"Header Template": "Header Template",
|
||||
"Footer Template": "Footer Template",
|
||||
"Display Header/Footer": "Display Header/Footer",
|
||||
"Scale": "Scale",
|
||||
"Wait for Selector Timeout": "Wait for Selector Timeout",
|
||||
"Wait for Selector Visible": "Wait for Selector Visible",
|
||||
"Wait for Selector Hidden": "Wait for Selector Hidden",
|
||||
"Prefer CSS Page Size": "Prefer CSS Page Size",
|
||||
"Page Ranges": "Page Ranges",
|
||||
"Custom Width": "Custom Width",
|
||||
"Custom Height": "Custom Height",
|
||||
"Tagged PDF": "Tagged PDF",
|
||||
"Generate Outline": "Generate Outline",
|
||||
"Timeout (ms)": "Timeout (ms)",
|
||||
"Wait for Function": "Wait for Function",
|
||||
"Wait for Function Polling": "Wait for Function Polling",
|
||||
"Wait for Function Timeout": "Wait for Function Timeout",
|
||||
"User Agent": "User Agent",
|
||||
"Wait Timeout (ms)": "Wait Timeout (ms)",
|
||||
"Best Attempt": "Best Attempt",
|
||||
"Elements to Extract": "Elements to Extract",
|
||||
"Wait for Event": "Wait for Event",
|
||||
"Wait for Event Timeout": "Wait for Event Timeout",
|
||||
"Debug Console": "Debug Console",
|
||||
"Debug Cookies": "Debug Cookies",
|
||||
"Debug Network": "Debug Network",
|
||||
"Cookies": "Cookies",
|
||||
"Wait Until": "Wait Until",
|
||||
"BQL Query": "BQL Query",
|
||||
"Query Variables": "Query Variables",
|
||||
"Operation Name": "Operation Name",
|
||||
"Stealth Mode": "Stealth Mode",
|
||||
"Headless Mode": "Headless Mode",
|
||||
"Human-like Behavior": "Human-like Behavior",
|
||||
"Proxy Type": "Proxy Type",
|
||||
"Proxy Country": "Proxy Country",
|
||||
"Sticky Proxy": "Sticky Proxy",
|
||||
"Block Ads": "Block Ads",
|
||||
"Block Consent Modals": "Block Consent Modals",
|
||||
"Record Session": "Record Session",
|
||||
"Slow Motion (ms)": "Slow Motion (ms)",
|
||||
"Ignore HTTPS Errors": "Ignore HTTPS Errors",
|
||||
"Performance Categories": "Performance Categories",
|
||||
"Device Type": "Device Type",
|
||||
"Network Throttling": "Network Throttling",
|
||||
"Only Category Scores": "Only Category Scores",
|
||||
"Locale": "Locale",
|
||||
"Emulate Media Type": "Emulate Media Type",
|
||||
"Performance Budgets": "Performance Budgets",
|
||||
"The URL of the page to capture": "The URL of the page to capture",
|
||||
"Format of the screenshot image": "Format of the screenshot image",
|
||||
"Image quality (0-100, only for JPEG)": "Image quality (0-100, only for JPEG)",
|
||||
"Capture the full scrollable page": "Capture the full scrollable page",
|
||||
"Width of the browser viewport in pixels": "Width of the browser viewport in pixels",
|
||||
"Height of the browser viewport in pixels": "Height of the browser viewport in pixels",
|
||||
"CSS selector to wait for before taking screenshot": "CSS selector to wait for before taking screenshot",
|
||||
"Delay in milliseconds before taking screenshot": "Delay in milliseconds before taking screenshot",
|
||||
"Hide default white background for transparent screenshots": "Hide default white background for transparent screenshots",
|
||||
"X coordinate of the top-left corner for clipping": "X coordinate of the top-left corner for clipping",
|
||||
"Y coordinate of the top-left corner for clipping": "Y coordinate of the top-left corner for clipping",
|
||||
"Width of the clipping area": "Width of the clipping area",
|
||||
"Height of the clipping area": "Height of the clipping area",
|
||||
"The URL of the page to convert to PDF": "The URL of the page to convert to PDF",
|
||||
"HTML content to render as PDF (alternative to URL)": "HTML content to render as PDF (alternative to URL)",
|
||||
"Paper format for the PDF": "Paper format for the PDF",
|
||||
"Use landscape orientation": "Use landscape orientation",
|
||||
"Include background graphics": "Include background graphics",
|
||||
"Top margin (e.g., \"10mm\", \"0.4in\")": "Top margin (e.g., \"10mm\", \"0.4in\")",
|
||||
"Right margin (e.g., \"10mm\", \"0.4in\")": "Right margin (e.g., \"10mm\", \"0.4in\")",
|
||||
"Bottom margin (e.g., \"10mm\", \"0.4in\")": "Bottom margin (e.g., \"10mm\", \"0.4in\")",
|
||||
"Left margin (e.g., \"10mm\", \"0.4in\")": "Left margin (e.g., \"10mm\", \"0.4in\")",
|
||||
"HTML template for the print header": "HTML template for the print header",
|
||||
"HTML template for the print footer": "HTML template for the print footer",
|
||||
"Display header and footer": "Display header and footer",
|
||||
"Scale of the webpage rendering (0.1 - 2.0)": "Scale of the webpage rendering (0.1 - 2.0)",
|
||||
"CSS selector to wait for before generating PDF": "CSS selector to wait for before generating PDF",
|
||||
"Timeout in milliseconds for waiting for selector": "Timeout in milliseconds for waiting for selector",
|
||||
"Wait for selector to be visible": "Wait for selector to be visible",
|
||||
"Wait for selector to be hidden": "Wait for selector to be hidden",
|
||||
"Give any CSS @page size declared in the page priority over format": "Give any CSS @page size declared in the page priority over format",
|
||||
"Paper ranges to print, e.g. \"1-5, 8, 11-13\"": "Paper ranges to print, e.g. \"1-5, 8, 11-13\"",
|
||||
"Custom width of paper (e.g., \"8.5in\", \"210mm\")": "Custom width of paper (e.g., \"8.5in\", \"210mm\")",
|
||||
"Custom height of paper (e.g., \"11in\", \"297mm\")": "Custom height of paper (e.g., \"11in\", \"297mm\")",
|
||||
"Hide default white background and allow transparent PDFs": "Hide default white background and allow transparent PDFs",
|
||||
"Generate tagged (accessible) PDF": "Generate tagged (accessible) PDF",
|
||||
"Generate document outline": "Generate document outline",
|
||||
"Maximum time to wait for the page to load": "Maximum time to wait for the page to load",
|
||||
"JavaScript function to wait for before generating PDF": "JavaScript function to wait for before generating PDF",
|
||||
"Polling interval for wait function (\"raf\", \"mutation\", or number in ms)": "Polling interval for wait function (\"raf\", \"mutation\", or number in ms)",
|
||||
"Timeout in milliseconds for wait function (0 to disable)": "Timeout in milliseconds for wait function (0 to disable)",
|
||||
"Custom user agent string to use for the request": "Custom user agent string to use for the request",
|
||||
"Timeout in milliseconds to wait before generating PDF": "Timeout in milliseconds to wait before generating PDF",
|
||||
"Attempt to proceed when awaited events fail or timeout": "Attempt to proceed when awaited events fail or timeout",
|
||||
"The URL of the page to scrape": "The URL of the page to scrape",
|
||||
"CSS selectors for elements to extract": "CSS selectors for elements to extract",
|
||||
"CSS selector to wait for before scraping": "CSS selector to wait for before scraping",
|
||||
"Timeout in milliseconds to wait before scraping": "Timeout in milliseconds to wait before scraping",
|
||||
"Event name to wait for before scraping": "Event name to wait for before scraping",
|
||||
"Timeout in milliseconds for wait event": "Timeout in milliseconds for wait event",
|
||||
"Include console logs in debug output": "Include console logs in debug output",
|
||||
"Include cookies in debug output": "Include cookies in debug output",
|
||||
"Include network requests in debug output": "Include network requests in debug output",
|
||||
"Custom user agent string": "Custom user agent string",
|
||||
"Cookies to set before scraping": "Cookies to set before scraping",
|
||||
"When to consider navigation complete": "When to consider navigation complete",
|
||||
"JavaScript function to wait for before scraping (should return true when ready)": "JavaScript function to wait for before scraping (should return true when ready)",
|
||||
"Browser viewport width in pixels": "Browser viewport width in pixels",
|
||||
"Browser viewport height in pixels": "Browser viewport height in pixels",
|
||||
"GraphQL-based BQL query for browser automation. Example: mutation { goto(url: \"https://example.com\") { status } }": "GraphQL-based BQL query for browser automation. Example: mutation { goto(url: \"https://example.com\") { status } }",
|
||||
"Variables to pass to the BQL query (JSON object)": "Variables to pass to the BQL query (JSON object)",
|
||||
"Name of the GraphQL operation to execute": "Name of the GraphQL operation to execute",
|
||||
"Maximum execution time in milliseconds": "Maximum execution time in milliseconds",
|
||||
"Enable stealth mode for bot detection bypass": "Enable stealth mode for bot detection bypass",
|
||||
"Run browser in headless mode (set to false for GUI)": "Run browser in headless mode (set to false for GUI)",
|
||||
"Enable human-like mouse movement, typing, and delays": "Enable human-like mouse movement, typing, and delays",
|
||||
"Type of proxy to use": "Type of proxy to use",
|
||||
"Country code for residential proxy (e.g., us, gb, de)": "Country code for residential proxy (e.g., us, gb, de)",
|
||||
"Maintain same proxy IP across session": "Maintain same proxy IP across session",
|
||||
"Enable ad blocker (uBlock Origin)": "Enable ad blocker (uBlock Origin)",
|
||||
"Automatically block/dismiss cookie consent banners": "Automatically block/dismiss cookie consent banners",
|
||||
"Enable session recording for debugging": "Enable session recording for debugging",
|
||||
"Add delays between browser actions in milliseconds": "Add delays between browser actions in milliseconds",
|
||||
"Ignore HTTPS certificate errors during navigation": "Ignore HTTPS certificate errors during navigation",
|
||||
"Browser viewport width": "Browser viewport width",
|
||||
"Browser viewport height": "Browser viewport height",
|
||||
"Cookies to set before executing BQL query": "Cookies to set before executing BQL query",
|
||||
"The URL of the website to analyze": "The URL of the website to analyze",
|
||||
"Select which performance categories to analyze (performance, accessibility, best-practices, seo, pwa)": "Select which performance categories to analyze (performance, accessibility, best-practices, seo, pwa)",
|
||||
"Device type for performance analysis": "Device type for performance analysis",
|
||||
"Network throttling simulation": "Network throttling simulation",
|
||||
"Return only category scores without detailed audit results": "Return only category scores without detailed audit results",
|
||||
"Locale for the analysis (e.g., en-US, de-DE)": "Locale for the analysis (e.g., en-US, de-DE)",
|
||||
"Maximum time to wait for the analysis to complete": "Maximum time to wait for the analysis to complete",
|
||||
"CSS selector to wait for before running performance analysis": "CSS selector to wait for before running performance analysis",
|
||||
"Emulate CSS media type": "Emulate CSS media type",
|
||||
"Lighthouse performance budgets for resource sizes": "Lighthouse performance budgets for resource sizes",
|
||||
"Enable ad blocker during performance analysis": "Enable ad blocker during performance analysis",
|
||||
"PNG": "PNG",
|
||||
"JPEG": "JPEG",
|
||||
"A0": "A0",
|
||||
"A1": "A1",
|
||||
"A2": "A2",
|
||||
"A3": "A3",
|
||||
"A4": "A4",
|
||||
"A5": "A5",
|
||||
"A6": "A6",
|
||||
"Letter": "Letter",
|
||||
"Legal": "Legal",
|
||||
"Ledger": "Ledger",
|
||||
"Tabloid": "Tabloid",
|
||||
"Load Event": "Load Event",
|
||||
"DOM Content Loaded": "DOM Content Loaded",
|
||||
"Network Idle 0": "Network Idle 0",
|
||||
"Network Idle 2": "Network Idle 2",
|
||||
"Residential": "Residential",
|
||||
"None": "None",
|
||||
"Desktop": "Desktop",
|
||||
"Mobile": "Mobile",
|
||||
"No Throttling": "No Throttling",
|
||||
"Slow 4G": "Slow 4G",
|
||||
"Regular 4G": "Regular 4G",
|
||||
"Fast 4G": "Fast 4G",
|
||||
"Screen": "Screen",
|
||||
"Print": "Print"
|
||||
}
|
||||
@@ -0,0 +1,209 @@
|
||||
{
|
||||
"Browserless is a headless browser automation tool that allows you to scrape websites, take screenshots, and more.": "Browserless is a headless browser automation tool that allows you to scrape websites, take screenshots, and more.",
|
||||
"API Token": "API Token",
|
||||
"Region": "Region",
|
||||
"Custom Base URL": "Custom Base URL",
|
||||
"Your Browserless API token (found in your dashboard)": "Your Browserless API token (found in your dashboard)",
|
||||
"Choose the regional endpoint closest to you for optimal performance": "Choose the regional endpoint closest to you for optimal performance",
|
||||
"Enter your custom Browserless endpoint URL": "Enter your custom Browserless endpoint URL",
|
||||
"US West (San Francisco)": "US West (San Francisco)",
|
||||
"Europe UK (London)": "Europe UK (London)",
|
||||
"Europe (Amsterdam)": "Europe (Amsterdam)",
|
||||
"Custom Endpoint": "Custom Endpoint",
|
||||
"\n To obtain your API credentials:\n\n 1. Sign up for a free Browserless account at https://www.browserless.io\n 2. Navigate to your dashboard\n 3. Find your API Key/Token in the account settings\n 4. Choose your preferred regional endpoint for optimal performance\n\n Regional Endpoints:\n • US West (SFO): https://production-sfo.browserless.io\n • Europe UK (London): https://production-lon.browserless.io\n • Europe (Amsterdam): https://production-ams.browserless.io\n\n For custom/dedicated ": "\n To obtain your API credentials:\n\n 1. Sign up for a free Browserless account at https://www.browserless.io\n 2. Navigate to your dashboard\n 3. Find your API Key/Token in the account settings\n 4. Choose your preferred regional endpoint for optimal performance\n\n Regional Endpoints:\n • US West (SFO): https://production-sfo.browserless.io\n • Europe UK (London): https://production-lon.browserless.io\n • Europe (Amsterdam): https://production-ams.browserless.io\n\n For custom/dedicated instances, select \"Custom\" and enter your specific endpoint URL.\n ",
|
||||
"Capture Screenshot": "Capture Screenshot",
|
||||
"Generate PDF": "Generate PDF",
|
||||
"Scrape URL": "Scrape URL",
|
||||
"Run BQL Query": "Run BQL Query",
|
||||
"Get Website Performance": "Get Website Performance",
|
||||
"Take a screenshot of a web page": "Take a screenshot of a web page",
|
||||
"Convert a web page to PDF": "Convert a web page to PDF",
|
||||
"Extract content from a web page": "Extract content from a web page",
|
||||
"Execute Browser Query Language (BQL) GraphQL-based queries for advanced browser automation": "Execute Browser Query Language (BQL) GraphQL-based queries for advanced browser automation",
|
||||
"Analyze website performance metrics using Lighthouse": "Analyze website performance metrics using Lighthouse",
|
||||
"URL": "URL",
|
||||
"Image Type": "Image Type",
|
||||
"Quality": "Quality",
|
||||
"Full Page": "Full Page",
|
||||
"Viewport Width": "Viewport Width",
|
||||
"Viewport Height": "Viewport Height",
|
||||
"Wait for Selector": "Wait for Selector",
|
||||
"Delay (ms)": "Delay (ms)",
|
||||
"Omit Background": "Omit Background",
|
||||
"Clip X Position": "Clip X Position",
|
||||
"Clip Y Position": "Clip Y Position",
|
||||
"Clip Width": "Clip Width",
|
||||
"Clip Height": "Clip Height",
|
||||
"HTML Content": "HTML Content",
|
||||
"Paper Format": "Paper Format",
|
||||
"Landscape": "Landscape",
|
||||
"Print Background": "Print Background",
|
||||
"Top Margin": "Top Margin",
|
||||
"Right Margin": "Right Margin",
|
||||
"Bottom Margin": "Bottom Margin",
|
||||
"Left Margin": "Left Margin",
|
||||
"Header Template": "Header Template",
|
||||
"Footer Template": "Footer Template",
|
||||
"Display Header/Footer": "Display Header/Footer",
|
||||
"Scale": "Scale",
|
||||
"Wait for Selector Timeout": "Wait for Selector Timeout",
|
||||
"Wait for Selector Visible": "Wait for Selector Visible",
|
||||
"Wait for Selector Hidden": "Wait for Selector Hidden",
|
||||
"Prefer CSS Page Size": "Prefer CSS Page Size",
|
||||
"Page Ranges": "Page Ranges",
|
||||
"Custom Width": "Custom Width",
|
||||
"Custom Height": "Custom Height",
|
||||
"Tagged PDF": "Tagged PDF",
|
||||
"Generate Outline": "Generate Outline",
|
||||
"Timeout (ms)": "Timeout (ms)",
|
||||
"Wait for Function": "Wait for Function",
|
||||
"Wait for Function Polling": "Wait for Function Polling",
|
||||
"Wait for Function Timeout": "Wait for Function Timeout",
|
||||
"User Agent": "User Agent",
|
||||
"Wait Timeout (ms)": "Wait Timeout (ms)",
|
||||
"Best Attempt": "Best Attempt",
|
||||
"Elements to Extract": "Elements to Extract",
|
||||
"Wait for Event": "Wait for Event",
|
||||
"Wait for Event Timeout": "Wait for Event Timeout",
|
||||
"Debug Console": "Debug Console",
|
||||
"Debug Cookies": "Debug Cookies",
|
||||
"Debug Network": "Debug Network",
|
||||
"Cookies": "Cookies",
|
||||
"Wait Until": "Wait Until",
|
||||
"BQL Query": "BQL Query",
|
||||
"Query Variables": "Query Variables",
|
||||
"Operation Name": "Operation Name",
|
||||
"Stealth Mode": "Stealth Mode",
|
||||
"Headless Mode": "Headless Mode",
|
||||
"Human-like Behavior": "Human-like Behavior",
|
||||
"Proxy Type": "Proxy Type",
|
||||
"Proxy Country": "Proxy Country",
|
||||
"Sticky Proxy": "Sticky Proxy",
|
||||
"Block Ads": "Block Ads",
|
||||
"Block Consent Modals": "Block Consent Modals",
|
||||
"Record Session": "Record Session",
|
||||
"Slow Motion (ms)": "Slow Motion (ms)",
|
||||
"Ignore HTTPS Errors": "Ignore HTTPS Errors",
|
||||
"Performance Categories": "Performance Categories",
|
||||
"Device Type": "Device Type",
|
||||
"Network Throttling": "Network Throttling",
|
||||
"Only Category Scores": "Only Category Scores",
|
||||
"Locale": "Locale",
|
||||
"Emulate Media Type": "Emulate Media Type",
|
||||
"Performance Budgets": "Performance Budgets",
|
||||
"The URL of the page to capture": "The URL of the page to capture",
|
||||
"Format of the screenshot image": "Format of the screenshot image",
|
||||
"Image quality (0-100, only for JPEG)": "Image quality (0-100, only for JPEG)",
|
||||
"Capture the full scrollable page": "Capture the full scrollable page",
|
||||
"Width of the browser viewport in pixels": "Width of the browser viewport in pixels",
|
||||
"Height of the browser viewport in pixels": "Height of the browser viewport in pixels",
|
||||
"CSS selector to wait for before taking screenshot": "CSS selector to wait for before taking screenshot",
|
||||
"Delay in milliseconds before taking screenshot": "Delay in milliseconds before taking screenshot",
|
||||
"Hide default white background for transparent screenshots": "Hide default white background for transparent screenshots",
|
||||
"X coordinate of the top-left corner for clipping": "X coordinate of the top-left corner for clipping",
|
||||
"Y coordinate of the top-left corner for clipping": "Y coordinate of the top-left corner for clipping",
|
||||
"Width of the clipping area": "Width of the clipping area",
|
||||
"Height of the clipping area": "Height of the clipping area",
|
||||
"The URL of the page to convert to PDF": "The URL of the page to convert to PDF",
|
||||
"HTML content to render as PDF (alternative to URL)": "HTML content to render as PDF (alternative to URL)",
|
||||
"Paper format for the PDF": "Paper format for the PDF",
|
||||
"Use landscape orientation": "Use landscape orientation",
|
||||
"Include background graphics": "Include background graphics",
|
||||
"Top margin (e.g., \"10mm\", \"0.4in\")": "Top margin (e.g., \"10mm\", \"0.4in\")",
|
||||
"Right margin (e.g., \"10mm\", \"0.4in\")": "Right margin (e.g., \"10mm\", \"0.4in\")",
|
||||
"Bottom margin (e.g., \"10mm\", \"0.4in\")": "Bottom margin (e.g., \"10mm\", \"0.4in\")",
|
||||
"Left margin (e.g., \"10mm\", \"0.4in\")": "Left margin (e.g., \"10mm\", \"0.4in\")",
|
||||
"HTML template for the print header": "HTML template for the print header",
|
||||
"HTML template for the print footer": "HTML template for the print footer",
|
||||
"Display header and footer": "Display header and footer",
|
||||
"Scale of the webpage rendering (0.1 - 2.0)": "Scale of the webpage rendering (0.1 - 2.0)",
|
||||
"CSS selector to wait for before generating PDF": "CSS selector to wait for before generating PDF",
|
||||
"Timeout in milliseconds for waiting for selector": "Timeout in milliseconds for waiting for selector",
|
||||
"Wait for selector to be visible": "Wait for selector to be visible",
|
||||
"Wait for selector to be hidden": "Wait for selector to be hidden",
|
||||
"Give any CSS @page size declared in the page priority over format": "Give any CSS @page size declared in the page priority over format",
|
||||
"Paper ranges to print, e.g. \"1-5, 8, 11-13\"": "Paper ranges to print, e.g. \"1-5, 8, 11-13\"",
|
||||
"Custom width of paper (e.g., \"8.5in\", \"210mm\")": "Custom width of paper (e.g., \"8.5in\", \"210mm\")",
|
||||
"Custom height of paper (e.g., \"11in\", \"297mm\")": "Custom height of paper (e.g., \"11in\", \"297mm\")",
|
||||
"Hide default white background and allow transparent PDFs": "Hide default white background and allow transparent PDFs",
|
||||
"Generate tagged (accessible) PDF": "Generate tagged (accessible) PDF",
|
||||
"Generate document outline": "Generate document outline",
|
||||
"Maximum time to wait for the page to load": "Maximum time to wait for the page to load",
|
||||
"JavaScript function to wait for before generating PDF": "JavaScript function to wait for before generating PDF",
|
||||
"Polling interval for wait function (\"raf\", \"mutation\", or number in ms)": "Polling interval for wait function (\"raf\", \"mutation\", or number in ms)",
|
||||
"Timeout in milliseconds for wait function (0 to disable)": "Timeout in milliseconds for wait function (0 to disable)",
|
||||
"Custom user agent string to use for the request": "Custom user agent string to use for the request",
|
||||
"Timeout in milliseconds to wait before generating PDF": "Timeout in milliseconds to wait before generating PDF",
|
||||
"Attempt to proceed when awaited events fail or timeout": "Attempt to proceed when awaited events fail or timeout",
|
||||
"The URL of the page to scrape": "The URL of the page to scrape",
|
||||
"CSS selectors for elements to extract": "CSS selectors for elements to extract",
|
||||
"CSS selector to wait for before scraping": "CSS selector to wait for before scraping",
|
||||
"Timeout in milliseconds to wait before scraping": "Timeout in milliseconds to wait before scraping",
|
||||
"Event name to wait for before scraping": "Event name to wait for before scraping",
|
||||
"Timeout in milliseconds for wait event": "Timeout in milliseconds for wait event",
|
||||
"Include console logs in debug output": "Include console logs in debug output",
|
||||
"Include cookies in debug output": "Include cookies in debug output",
|
||||
"Include network requests in debug output": "Include network requests in debug output",
|
||||
"Custom user agent string": "Custom user agent string",
|
||||
"Cookies to set before scraping": "Cookies to set before scraping",
|
||||
"When to consider navigation complete": "When to consider navigation complete",
|
||||
"JavaScript function to wait for before scraping (should return true when ready)": "JavaScript function to wait for before scraping (should return true when ready)",
|
||||
"Browser viewport width in pixels": "Browser viewport width in pixels",
|
||||
"Browser viewport height in pixels": "Browser viewport height in pixels",
|
||||
"GraphQL-based BQL query for browser automation. Example: mutation { goto(url: \"https://example.com\") { status } }": "GraphQL-based BQL query for browser automation. Example: mutation { goto(url: \"https://example.com\") { status } }",
|
||||
"Variables to pass to the BQL query (JSON object)": "Variables to pass to the BQL query (JSON object)",
|
||||
"Name of the GraphQL operation to execute": "Name of the GraphQL operation to execute",
|
||||
"Maximum execution time in milliseconds": "Maximum execution time in milliseconds",
|
||||
"Enable stealth mode for bot detection bypass": "Enable stealth mode for bot detection bypass",
|
||||
"Run browser in headless mode (set to false for GUI)": "Run browser in headless mode (set to false for GUI)",
|
||||
"Enable human-like mouse movement, typing, and delays": "Enable human-like mouse movement, typing, and delays",
|
||||
"Type of proxy to use": "Type of proxy to use",
|
||||
"Country code for residential proxy (e.g., us, gb, de)": "Country code for residential proxy (e.g., us, gb, de)",
|
||||
"Maintain same proxy IP across session": "Maintain same proxy IP across session",
|
||||
"Enable ad blocker (uBlock Origin)": "Enable ad blocker (uBlock Origin)",
|
||||
"Automatically block/dismiss cookie consent banners": "Automatically block/dismiss cookie consent banners",
|
||||
"Enable session recording for debugging": "Enable session recording for debugging",
|
||||
"Add delays between browser actions in milliseconds": "Add delays between browser actions in milliseconds",
|
||||
"Ignore HTTPS certificate errors during navigation": "Ignore HTTPS certificate errors during navigation",
|
||||
"Browser viewport width": "Browser viewport width",
|
||||
"Browser viewport height": "Browser viewport height",
|
||||
"Cookies to set before executing BQL query": "Cookies to set before executing BQL query",
|
||||
"The URL of the website to analyze": "The URL of the website to analyze",
|
||||
"Select which performance categories to analyze (performance, accessibility, best-practices, seo, pwa)": "Select which performance categories to analyze (performance, accessibility, best-practices, seo, pwa)",
|
||||
"Device type for performance analysis": "Device type for performance analysis",
|
||||
"Network throttling simulation": "Network throttling simulation",
|
||||
"Return only category scores without detailed audit results": "Return only category scores without detailed audit results",
|
||||
"Locale for the analysis (e.g., en-US, de-DE)": "Locale for the analysis (e.g., en-US, de-DE)",
|
||||
"Maximum time to wait for the analysis to complete": "Maximum time to wait for the analysis to complete",
|
||||
"CSS selector to wait for before running performance analysis": "CSS selector to wait for before running performance analysis",
|
||||
"Emulate CSS media type": "Emulate CSS media type",
|
||||
"Lighthouse performance budgets for resource sizes": "Lighthouse performance budgets for resource sizes",
|
||||
"Enable ad blocker during performance analysis": "Enable ad blocker during performance analysis",
|
||||
"PNG": "PNG",
|
||||
"JPEG": "JPEG",
|
||||
"A0": "A0",
|
||||
"A1": "A1",
|
||||
"A2": "A2",
|
||||
"A3": "A3",
|
||||
"A4": "A4",
|
||||
"A5": "A5",
|
||||
"A6": "A6",
|
||||
"Letter": "Letter",
|
||||
"Legal": "Legal",
|
||||
"Ledger": "Ledger",
|
||||
"Tabloid": "Tabloid",
|
||||
"Load Event": "Load Event",
|
||||
"DOM Content Loaded": "DOM Content Loaded",
|
||||
"Network Idle 0": "Network Idle 0",
|
||||
"Network Idle 2": "Network Idle 2",
|
||||
"Residential": "Residential",
|
||||
"None": "无",
|
||||
"Desktop": "Desktop",
|
||||
"Mobile": "Mobile",
|
||||
"No Throttling": "No Throttling",
|
||||
"Slow 4G": "Slow 4G",
|
||||
"Regular 4G": "Regular 4G",
|
||||
"Fast 4G": "Fast 4G",
|
||||
"Screen": "Screen",
|
||||
"Print": "Print"
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
import { createPiece } from '@activepieces/pieces-framework';
|
||||
import { PieceCategory } from '@activepieces/shared';
|
||||
import { browserlessAuth } from './lib/common/auth';
|
||||
import { captureScreenshot } from './lib/actions/capture-screenshot';
|
||||
import { generatePdf } from './lib/actions/generate-pdf';
|
||||
import { scrapeUrl } from './lib/actions/scrape-url';
|
||||
import { runBqlQuery } from './lib/actions/run-bql-query';
|
||||
import { getWebsitePerformance } from './lib/actions/get-website-performance';
|
||||
|
||||
export const browserless = createPiece({
|
||||
displayName: 'Browserless',
|
||||
minimumSupportedRelease: '0.36.1',
|
||||
logoUrl: 'https://cdn.activepieces.com/pieces/browserless.png',
|
||||
categories: [PieceCategory.DEVELOPER_TOOLS],
|
||||
description: 'Browserless is a headless browser automation tool that allows you to scrape websites, take screenshots, and more.',
|
||||
authors: ['owuzo', 'onyedikachi-david'],
|
||||
auth: browserlessAuth,
|
||||
actions: [
|
||||
captureScreenshot,
|
||||
generatePdf,
|
||||
scrapeUrl,
|
||||
runBqlQuery,
|
||||
getWebsitePerformance,
|
||||
],
|
||||
triggers: [],
|
||||
});
|
||||
@@ -0,0 +1,174 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { HttpMethod } from '@activepieces/pieces-common';
|
||||
import { browserlessAuth } from '../common/auth';
|
||||
import { browserlessCommon, convertBinaryToBase64, isBinaryResponse } from '../common/client';
|
||||
|
||||
export const captureScreenshot = createAction({
|
||||
name: 'capture_screenshot',
|
||||
displayName: 'Capture Screenshot',
|
||||
description: 'Take a screenshot of a web page',
|
||||
auth: browserlessAuth,
|
||||
props: {
|
||||
url: Property.ShortText({
|
||||
displayName: 'URL',
|
||||
description: 'The URL of the page to capture',
|
||||
required: true,
|
||||
}),
|
||||
imageType: Property.StaticDropdown({
|
||||
displayName: 'Image Type',
|
||||
description: 'Format of the screenshot image',
|
||||
required: false,
|
||||
defaultValue: 'png',
|
||||
options: {
|
||||
options: [
|
||||
{ label: 'PNG', value: 'png' },
|
||||
{ label: 'JPEG', value: 'jpeg' }
|
||||
]
|
||||
}
|
||||
}),
|
||||
quality: Property.Number({
|
||||
displayName: 'Quality',
|
||||
description: 'Image quality (0-100, only for JPEG)',
|
||||
required: false,
|
||||
}),
|
||||
fullPage: Property.Checkbox({
|
||||
displayName: 'Full Page',
|
||||
description: 'Capture the full scrollable page',
|
||||
required: false,
|
||||
defaultValue: false,
|
||||
}),
|
||||
width: Property.Number({
|
||||
displayName: 'Viewport Width',
|
||||
description: 'Width of the browser viewport in pixels',
|
||||
required: false,
|
||||
}),
|
||||
height: Property.Number({
|
||||
displayName: 'Viewport Height',
|
||||
description: 'Height of the browser viewport in pixels',
|
||||
required: false,
|
||||
}),
|
||||
waitForSelector: Property.ShortText({
|
||||
displayName: 'Wait for Selector',
|
||||
description: 'CSS selector to wait for before taking screenshot',
|
||||
required: false,
|
||||
}),
|
||||
delay: Property.Number({
|
||||
displayName: 'Delay (ms)',
|
||||
description: 'Delay in milliseconds before taking screenshot',
|
||||
required: false,
|
||||
}),
|
||||
omitBackground: Property.Checkbox({
|
||||
displayName: 'Omit Background',
|
||||
description: 'Hide default white background for transparent screenshots',
|
||||
required: false,
|
||||
defaultValue: false,
|
||||
}),
|
||||
clipX: Property.Number({
|
||||
displayName: 'Clip X Position',
|
||||
description: 'X coordinate of the top-left corner for clipping',
|
||||
required: false,
|
||||
}),
|
||||
clipY: Property.Number({
|
||||
displayName: 'Clip Y Position',
|
||||
description: 'Y coordinate of the top-left corner for clipping',
|
||||
required: false,
|
||||
}),
|
||||
clipWidth: Property.Number({
|
||||
displayName: 'Clip Width',
|
||||
description: 'Width of the clipping area',
|
||||
required: false,
|
||||
}),
|
||||
clipHeight: Property.Number({
|
||||
displayName: 'Clip Height',
|
||||
description: 'Height of the clipping area',
|
||||
required: false,
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const requestBody: any = {
|
||||
url: context.propsValue.url,
|
||||
options: {
|
||||
type: context.propsValue.imageType || 'png',
|
||||
fullPage: context.propsValue.fullPage || false,
|
||||
}
|
||||
};
|
||||
|
||||
if (context.propsValue.quality && context.propsValue.imageType === 'jpeg') {
|
||||
requestBody.options.quality = context.propsValue.quality;
|
||||
}
|
||||
|
||||
if (context.propsValue.width && context.propsValue.height) {
|
||||
requestBody.viewport = {
|
||||
width: context.propsValue.width,
|
||||
height: context.propsValue.height,
|
||||
};
|
||||
}
|
||||
|
||||
if (context.propsValue.waitForSelector) {
|
||||
requestBody.waitForSelector = {
|
||||
selector: context.propsValue.waitForSelector,
|
||||
};
|
||||
}
|
||||
|
||||
if (context.propsValue.delay) {
|
||||
requestBody.waitForTimeout = context.propsValue.delay;
|
||||
}
|
||||
|
||||
if (context.propsValue.omitBackground) {
|
||||
requestBody.options.omitBackground = context.propsValue.omitBackground;
|
||||
}
|
||||
|
||||
if (context.propsValue.clipX !== undefined &&
|
||||
context.propsValue.clipY !== undefined &&
|
||||
context.propsValue.clipWidth !== undefined &&
|
||||
context.propsValue.clipHeight !== undefined) {
|
||||
requestBody.options.clip = {
|
||||
x: context.propsValue.clipX,
|
||||
y: context.propsValue.clipY,
|
||||
width: context.propsValue.clipWidth,
|
||||
height: context.propsValue.clipHeight,
|
||||
};
|
||||
}
|
||||
|
||||
const response = await browserlessCommon.apiCall({
|
||||
auth: context.auth.props,
|
||||
method: HttpMethod.POST,
|
||||
resourceUri: '/screenshot',
|
||||
body: requestBody,
|
||||
});
|
||||
|
||||
const imageType = context.propsValue.imageType || 'png';
|
||||
const fileName = `screenshot.${imageType}`;
|
||||
|
||||
let fileData: Buffer;
|
||||
|
||||
if (response.body instanceof ArrayBuffer) {
|
||||
fileData = Buffer.from(response.body);
|
||||
} else if (Buffer.isBuffer(response.body)) {
|
||||
fileData = response.body;
|
||||
} else if (typeof response.body === 'string') {
|
||||
fileData = Buffer.from(response.body, 'latin1');
|
||||
} else {
|
||||
fileData = Buffer.from(String(response.body), 'latin1');
|
||||
}
|
||||
|
||||
const file = await context.files.write({
|
||||
data: fileData,
|
||||
fileName: fileName,
|
||||
});
|
||||
|
||||
return {
|
||||
success: true,
|
||||
file: file,
|
||||
screenshotBase64: convertBinaryToBase64(fileData),
|
||||
metadata: {
|
||||
url: context.propsValue.url,
|
||||
type: imageType,
|
||||
fullPage: context.propsValue.fullPage || false,
|
||||
timestamp: new Date().toISOString(),
|
||||
contentType: response.headers?.['content-type'] || `image/${imageType}`,
|
||||
fileName: fileName,
|
||||
}
|
||||
};
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,362 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { HttpMethod } from '@activepieces/pieces-common';
|
||||
import { browserlessAuth } from '../common/auth';
|
||||
import { browserlessCommon, convertBinaryToBase64 } from '../common/client';
|
||||
|
||||
export const generatePdf = createAction({
|
||||
name: 'generate_pdf',
|
||||
displayName: 'Generate PDF',
|
||||
description: 'Convert a web page to PDF',
|
||||
auth: browserlessAuth,
|
||||
props: {
|
||||
url: Property.ShortText({
|
||||
displayName: 'URL',
|
||||
description: 'The URL of the page to convert to PDF',
|
||||
required: false,
|
||||
}),
|
||||
html: Property.LongText({
|
||||
displayName: 'HTML Content',
|
||||
description: 'HTML content to render as PDF (alternative to URL)',
|
||||
required: false,
|
||||
}),
|
||||
format: Property.StaticDropdown({
|
||||
displayName: 'Paper Format',
|
||||
description: 'Paper format for the PDF',
|
||||
required: false,
|
||||
defaultValue: 'A4',
|
||||
options: {
|
||||
options: [
|
||||
{ label: 'A0', value: 'A0' },
|
||||
{ label: 'A1', value: 'A1' },
|
||||
{ label: 'A2', value: 'A2' },
|
||||
{ label: 'A3', value: 'A3' },
|
||||
{ label: 'A4', value: 'A4' },
|
||||
{ label: 'A5', value: 'A5' },
|
||||
{ label: 'A6', value: 'A6' },
|
||||
{ label: 'Letter', value: 'Letter' },
|
||||
{ label: 'Legal', value: 'Legal' },
|
||||
{ label: 'Ledger', value: 'Ledger' },
|
||||
{ label: 'Tabloid', value: 'Tabloid' }
|
||||
]
|
||||
}
|
||||
}),
|
||||
landscape: Property.Checkbox({
|
||||
displayName: 'Landscape',
|
||||
description: 'Use landscape orientation',
|
||||
required: false,
|
||||
defaultValue: false,
|
||||
}),
|
||||
printBackground: Property.Checkbox({
|
||||
displayName: 'Print Background',
|
||||
description: 'Include background graphics',
|
||||
required: false,
|
||||
defaultValue: true,
|
||||
}),
|
||||
marginTop: Property.ShortText({
|
||||
displayName: 'Top Margin',
|
||||
description: 'Top margin (e.g., "10mm", "0.4in")',
|
||||
required: false,
|
||||
}),
|
||||
marginRight: Property.ShortText({
|
||||
displayName: 'Right Margin',
|
||||
description: 'Right margin (e.g., "10mm", "0.4in")',
|
||||
required: false,
|
||||
}),
|
||||
marginBottom: Property.ShortText({
|
||||
displayName: 'Bottom Margin',
|
||||
description: 'Bottom margin (e.g., "10mm", "0.4in")',
|
||||
required: false,
|
||||
}),
|
||||
marginLeft: Property.ShortText({
|
||||
displayName: 'Left Margin',
|
||||
description: 'Left margin (e.g., "10mm", "0.4in")',
|
||||
required: false,
|
||||
}),
|
||||
headerTemplate: Property.LongText({
|
||||
displayName: 'Header Template',
|
||||
description: 'HTML template for the print header',
|
||||
required: false,
|
||||
}),
|
||||
footerTemplate: Property.LongText({
|
||||
displayName: 'Footer Template',
|
||||
description: 'HTML template for the print footer',
|
||||
required: false,
|
||||
}),
|
||||
displayHeaderFooter: Property.Checkbox({
|
||||
displayName: 'Display Header/Footer',
|
||||
description: 'Display header and footer',
|
||||
required: false,
|
||||
defaultValue: false,
|
||||
}),
|
||||
scale: Property.Number({
|
||||
displayName: 'Scale',
|
||||
description: 'Scale of the webpage rendering (0.1 - 2.0)',
|
||||
required: false,
|
||||
}),
|
||||
waitForSelector: Property.ShortText({
|
||||
displayName: 'Wait for Selector',
|
||||
description: 'CSS selector to wait for before generating PDF',
|
||||
required: false,
|
||||
}),
|
||||
waitForSelectorTimeout: Property.Number({
|
||||
displayName: 'Wait for Selector Timeout',
|
||||
description: 'Timeout in milliseconds for waiting for selector',
|
||||
required: false,
|
||||
}),
|
||||
waitForSelectorVisible: Property.Checkbox({
|
||||
displayName: 'Wait for Selector Visible',
|
||||
description: 'Wait for selector to be visible',
|
||||
required: false,
|
||||
defaultValue: true,
|
||||
}),
|
||||
waitForSelectorHidden: Property.Checkbox({
|
||||
displayName: 'Wait for Selector Hidden',
|
||||
description: 'Wait for selector to be hidden',
|
||||
required: false,
|
||||
defaultValue: false,
|
||||
}),
|
||||
preferCSSPageSize: Property.Checkbox({
|
||||
displayName: 'Prefer CSS Page Size',
|
||||
description: 'Give any CSS @page size declared in the page priority over format',
|
||||
required: false,
|
||||
defaultValue: false,
|
||||
}),
|
||||
pageRanges: Property.ShortText({
|
||||
displayName: 'Page Ranges',
|
||||
description: 'Paper ranges to print, e.g. "1-5, 8, 11-13"',
|
||||
required: false,
|
||||
}),
|
||||
width: Property.ShortText({
|
||||
displayName: 'Custom Width',
|
||||
description: 'Custom width of paper (e.g., "8.5in", "210mm")',
|
||||
required: false,
|
||||
}),
|
||||
height: Property.ShortText({
|
||||
displayName: 'Custom Height',
|
||||
description: 'Custom height of paper (e.g., "11in", "297mm")',
|
||||
required: false,
|
||||
}),
|
||||
omitBackground: Property.Checkbox({
|
||||
displayName: 'Omit Background',
|
||||
description: 'Hide default white background and allow transparent PDFs',
|
||||
required: false,
|
||||
defaultValue: false,
|
||||
}),
|
||||
tagged: Property.Checkbox({
|
||||
displayName: 'Tagged PDF',
|
||||
description: 'Generate tagged (accessible) PDF',
|
||||
required: false,
|
||||
defaultValue: false,
|
||||
}),
|
||||
outline: Property.Checkbox({
|
||||
displayName: 'Generate Outline',
|
||||
description: 'Generate document outline',
|
||||
required: false,
|
||||
defaultValue: false,
|
||||
}),
|
||||
timeout: Property.Number({
|
||||
displayName: 'Timeout (ms)',
|
||||
description: 'Maximum time to wait for the page to load',
|
||||
required: false,
|
||||
}),
|
||||
waitForFunction: Property.LongText({
|
||||
displayName: 'Wait for Function',
|
||||
description: 'JavaScript function to wait for before generating PDF',
|
||||
required: false,
|
||||
}),
|
||||
waitForFunctionPolling: Property.ShortText({
|
||||
displayName: 'Wait for Function Polling',
|
||||
description: 'Polling interval for wait function ("raf", "mutation", or number in ms)',
|
||||
required: false,
|
||||
}),
|
||||
waitForFunctionTimeout: Property.Number({
|
||||
displayName: 'Wait for Function Timeout',
|
||||
description: 'Timeout in milliseconds for wait function (0 to disable)',
|
||||
required: false,
|
||||
}),
|
||||
userAgent: Property.ShortText({
|
||||
displayName: 'User Agent',
|
||||
description: 'Custom user agent string to use for the request',
|
||||
required: false,
|
||||
}),
|
||||
waitForTimeout: Property.Number({
|
||||
displayName: 'Wait Timeout (ms)',
|
||||
description: 'Timeout in milliseconds to wait before generating PDF',
|
||||
required: false,
|
||||
}),
|
||||
bestAttempt: Property.Checkbox({
|
||||
displayName: 'Best Attempt',
|
||||
description: 'Attempt to proceed when awaited events fail or timeout',
|
||||
required: false,
|
||||
defaultValue: false,
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
if (!context.propsValue.url && !context.propsValue.html) {
|
||||
throw new Error('Either URL or HTML content must be provided');
|
||||
}
|
||||
|
||||
if (context.propsValue.url && context.propsValue.html) {
|
||||
throw new Error('Cannot provide both URL and HTML content. Choose one.');
|
||||
}
|
||||
|
||||
const requestBody: any = {
|
||||
options: {
|
||||
format: context.propsValue.format || 'A4',
|
||||
landscape: context.propsValue.landscape || false,
|
||||
printBackground: context.propsValue.printBackground !== false,
|
||||
displayHeaderFooter: context.propsValue.displayHeaderFooter || false,
|
||||
}
|
||||
};
|
||||
|
||||
if (context.propsValue.url) {
|
||||
requestBody.url = context.propsValue.url;
|
||||
} else if (context.propsValue.html) {
|
||||
requestBody.html = context.propsValue.html;
|
||||
}
|
||||
|
||||
if (context.propsValue.userAgent) {
|
||||
requestBody.userAgent = context.propsValue.userAgent;
|
||||
}
|
||||
|
||||
if (context.propsValue.waitForTimeout) {
|
||||
requestBody.waitForTimeout = context.propsValue.waitForTimeout;
|
||||
}
|
||||
|
||||
if (context.propsValue.bestAttempt) {
|
||||
requestBody.bestAttempt = context.propsValue.bestAttempt;
|
||||
}
|
||||
|
||||
const margin: any = {};
|
||||
if (context.propsValue.marginTop) margin.top = context.propsValue.marginTop;
|
||||
if (context.propsValue.marginRight) margin.right = context.propsValue.marginRight;
|
||||
if (context.propsValue.marginBottom) margin.bottom = context.propsValue.marginBottom;
|
||||
if (context.propsValue.marginLeft) margin.left = context.propsValue.marginLeft;
|
||||
|
||||
if (Object.keys(margin).length > 0) {
|
||||
requestBody.options.margin = margin;
|
||||
}
|
||||
|
||||
if (context.propsValue.headerTemplate) {
|
||||
requestBody.options.headerTemplate = context.propsValue.headerTemplate;
|
||||
}
|
||||
|
||||
if (context.propsValue.footerTemplate) {
|
||||
requestBody.options.footerTemplate = context.propsValue.footerTemplate;
|
||||
}
|
||||
|
||||
if (context.propsValue.scale) {
|
||||
requestBody.options.scale = Math.max(0.1, Math.min(2.0, context.propsValue.scale));
|
||||
}
|
||||
|
||||
if (context.propsValue.waitForSelector) {
|
||||
const waitForSelectorObj: any = {
|
||||
selector: context.propsValue.waitForSelector,
|
||||
};
|
||||
|
||||
if (context.propsValue.waitForSelectorTimeout !== undefined) {
|
||||
waitForSelectorObj.timeout = context.propsValue.waitForSelectorTimeout;
|
||||
}
|
||||
|
||||
if (context.propsValue.waitForSelectorVisible !== undefined) {
|
||||
waitForSelectorObj.visible = context.propsValue.waitForSelectorVisible;
|
||||
}
|
||||
|
||||
if (context.propsValue.waitForSelectorHidden !== undefined) {
|
||||
waitForSelectorObj.hidden = context.propsValue.waitForSelectorHidden;
|
||||
}
|
||||
|
||||
requestBody.options.waitForSelector = waitForSelectorObj;
|
||||
}
|
||||
|
||||
if (context.propsValue.preferCSSPageSize) {
|
||||
requestBody.options.preferCSSPageSize = context.propsValue.preferCSSPageSize;
|
||||
}
|
||||
|
||||
if (context.propsValue.pageRanges) {
|
||||
requestBody.options.pageRanges = context.propsValue.pageRanges;
|
||||
}
|
||||
|
||||
if (context.propsValue.width) {
|
||||
requestBody.options.width = context.propsValue.width;
|
||||
}
|
||||
|
||||
if (context.propsValue.height) {
|
||||
requestBody.options.height = context.propsValue.height;
|
||||
}
|
||||
|
||||
if (context.propsValue.omitBackground) {
|
||||
requestBody.options.omitBackground = context.propsValue.omitBackground;
|
||||
}
|
||||
|
||||
if (context.propsValue.tagged) {
|
||||
requestBody.options.tagged = context.propsValue.tagged;
|
||||
}
|
||||
|
||||
if (context.propsValue.outline) {
|
||||
requestBody.options.outline = context.propsValue.outline;
|
||||
}
|
||||
|
||||
if (context.propsValue.timeout) {
|
||||
requestBody.options.timeout = context.propsValue.timeout;
|
||||
}
|
||||
|
||||
if (context.propsValue.waitForFunction) {
|
||||
const waitForFunctionObj: any = {
|
||||
fn: context.propsValue.waitForFunction,
|
||||
};
|
||||
|
||||
if (context.propsValue.waitForFunctionPolling !== undefined) {
|
||||
waitForFunctionObj.polling = context.propsValue.waitForFunctionPolling;
|
||||
}
|
||||
|
||||
if (context.propsValue.waitForFunctionTimeout !== undefined) {
|
||||
waitForFunctionObj.timeout = context.propsValue.waitForFunctionTimeout;
|
||||
}
|
||||
|
||||
requestBody.options.waitForFunction = waitForFunctionObj;
|
||||
}
|
||||
|
||||
const response = await browserlessCommon.apiCall({
|
||||
auth: context.auth.props,
|
||||
method: HttpMethod.POST,
|
||||
resourceUri: '/pdf',
|
||||
body: requestBody,
|
||||
});
|
||||
|
||||
const fileName = 'document.pdf';
|
||||
|
||||
let fileData: Buffer;
|
||||
|
||||
if (response.body instanceof ArrayBuffer) {
|
||||
fileData = Buffer.from(response.body);
|
||||
} else if (Buffer.isBuffer(response.body)) {
|
||||
fileData = response.body;
|
||||
} else if (typeof response.body === 'string') {
|
||||
fileData = Buffer.from(response.body, 'latin1');
|
||||
} else {
|
||||
fileData = Buffer.from(String(response.body), 'latin1');
|
||||
}
|
||||
|
||||
const file = await context.files.write({
|
||||
data: fileData,
|
||||
fileName: fileName,
|
||||
});
|
||||
|
||||
return {
|
||||
success: true,
|
||||
file: file,
|
||||
pdfBase64: convertBinaryToBase64(fileData),
|
||||
metadata: {
|
||||
source: context.propsValue.url ? 'url' : 'html',
|
||||
url: context.propsValue.url || null,
|
||||
hasHtml: !!context.propsValue.html,
|
||||
format: context.propsValue.format || 'A4',
|
||||
landscape: context.propsValue.landscape || false,
|
||||
timestamp: new Date().toISOString(),
|
||||
fileName: fileName,
|
||||
contentType: 'application/pdf',
|
||||
}
|
||||
};
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,319 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { HttpMethod } from '@activepieces/pieces-common';
|
||||
import { browserlessAuth } from '../common/auth';
|
||||
import { browserlessCommon } from '../common/client';
|
||||
|
||||
export const getWebsitePerformance = createAction({
|
||||
name: 'get_website_performance',
|
||||
displayName: 'Get Website Performance',
|
||||
description: 'Analyze website performance metrics using Lighthouse',
|
||||
auth: browserlessAuth,
|
||||
props: {
|
||||
url: Property.ShortText({
|
||||
displayName: 'URL',
|
||||
description: 'The URL of the website to analyze',
|
||||
required: true,
|
||||
}),
|
||||
categories: Property.Array({
|
||||
displayName: 'Performance Categories',
|
||||
description: 'Select which performance categories to analyze (performance, accessibility, best-practices, seo, pwa)',
|
||||
required: false,
|
||||
properties: {
|
||||
category: Property.StaticDropdown({
|
||||
displayName: 'Category',
|
||||
required: true,
|
||||
options: {
|
||||
options: [
|
||||
{ label: 'Performance', value: 'performance' },
|
||||
{ label: 'Accessibility', value: 'accessibility' },
|
||||
{ label: 'Best Practices', value: 'best-practices' },
|
||||
{ label: 'SEO', value: 'seo' },
|
||||
{ label: 'PWA', value: 'pwa' }
|
||||
]
|
||||
}
|
||||
})
|
||||
}
|
||||
}),
|
||||
device: Property.StaticDropdown({
|
||||
displayName: 'Device Type',
|
||||
description: 'Device type for performance analysis',
|
||||
required: false,
|
||||
defaultValue: 'desktop',
|
||||
options: {
|
||||
options: [
|
||||
{ label: 'Desktop', value: 'desktop' },
|
||||
{ label: 'Mobile', value: 'mobile' }
|
||||
]
|
||||
}
|
||||
}),
|
||||
throttling: Property.StaticDropdown({
|
||||
displayName: 'Network Throttling',
|
||||
description: 'Network throttling simulation',
|
||||
required: false,
|
||||
defaultValue: 'mobileSlow4G',
|
||||
options: {
|
||||
options: [
|
||||
{ label: 'No Throttling', value: 'none' },
|
||||
{ label: 'Slow 4G', value: 'mobileSlow4G' },
|
||||
{ label: 'Regular 4G', value: 'mobileRegular4G' },
|
||||
{ label: 'Fast 4G', value: 'mobileFast4G' }
|
||||
]
|
||||
}
|
||||
}),
|
||||
onlyCategories: Property.Checkbox({
|
||||
displayName: 'Only Category Scores',
|
||||
description: 'Return only category scores without detailed audit results',
|
||||
required: false,
|
||||
defaultValue: false,
|
||||
}),
|
||||
locale: Property.ShortText({
|
||||
displayName: 'Locale',
|
||||
description: 'Locale for the analysis (e.g., en-US, de-DE)',
|
||||
required: false,
|
||||
defaultValue: 'en-US',
|
||||
}),
|
||||
userAgent: Property.ShortText({
|
||||
displayName: 'User Agent',
|
||||
description: 'Custom user agent string',
|
||||
required: false,
|
||||
}),
|
||||
timeout: Property.Number({
|
||||
displayName: 'Timeout (ms)',
|
||||
description: 'Maximum time to wait for the analysis to complete',
|
||||
required: false,
|
||||
defaultValue: 60000,
|
||||
}),
|
||||
waitForSelector: Property.ShortText({
|
||||
displayName: 'Wait for Selector',
|
||||
description: 'CSS selector to wait for before running performance analysis',
|
||||
required: false,
|
||||
}),
|
||||
emulateMediaType: Property.StaticDropdown({
|
||||
displayName: 'Emulate Media Type',
|
||||
description: 'Emulate CSS media type',
|
||||
required: false,
|
||||
options: {
|
||||
options: [
|
||||
{ label: 'Screen', value: 'screen' },
|
||||
{ label: 'Print', value: 'print' }
|
||||
]
|
||||
}
|
||||
}),
|
||||
budgets: Property.Array({
|
||||
displayName: 'Performance Budgets',
|
||||
description: 'Lighthouse performance budgets for resource sizes',
|
||||
required: false,
|
||||
properties: {
|
||||
resourceType: Property.StaticDropdown({
|
||||
displayName: 'Resource Type',
|
||||
description: 'Type of resource to budget',
|
||||
required: true,
|
||||
options: {
|
||||
options: [
|
||||
{ label: 'Document', value: 'document' },
|
||||
{ label: 'Script', value: 'script' },
|
||||
{ label: 'Stylesheet', value: 'stylesheet' },
|
||||
{ label: 'Image', value: 'image' },
|
||||
{ label: 'Media', value: 'media' },
|
||||
{ label: 'Font', value: 'font' },
|
||||
{ label: 'Other', value: 'other' },
|
||||
{ label: 'Third-party', value: 'third-party' }
|
||||
]
|
||||
}
|
||||
}),
|
||||
budget: Property.Number({
|
||||
displayName: 'Budget Size (KB)',
|
||||
description: 'Maximum allowed size in kilobytes',
|
||||
required: true,
|
||||
})
|
||||
}
|
||||
}),
|
||||
stealth: Property.Checkbox({
|
||||
displayName: 'Stealth Mode',
|
||||
description: 'Enable stealth mode for bot detection bypass',
|
||||
required: false,
|
||||
defaultValue: false,
|
||||
}),
|
||||
blockAds: Property.Checkbox({
|
||||
displayName: 'Block Ads',
|
||||
description: 'Enable ad blocker during performance analysis',
|
||||
required: false,
|
||||
defaultValue: false,
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const requestBody: any = {
|
||||
url: context.propsValue.url,
|
||||
};
|
||||
|
||||
const lighthouseConfig: any = {
|
||||
extends: 'lighthouse:default',
|
||||
settings: {}
|
||||
};
|
||||
|
||||
if (context.propsValue.categories && context.propsValue.categories.length > 0) {
|
||||
lighthouseConfig.settings.onlyCategories = context.propsValue.categories.map((cat: any) => cat.category);
|
||||
}
|
||||
|
||||
if (context.propsValue.locale) {
|
||||
lighthouseConfig.settings.locale = context.propsValue.locale;
|
||||
}
|
||||
|
||||
if (context.propsValue.device) {
|
||||
lighthouseConfig.settings.formFactor = context.propsValue.device;
|
||||
}
|
||||
|
||||
if (context.propsValue.throttling && context.propsValue.throttling !== 'none') {
|
||||
lighthouseConfig.settings.throttling = { rttMs: 150, throughputKbps: 1638.4, cpuSlowdownMultiplier: 4 };
|
||||
|
||||
switch (context.propsValue.throttling) {
|
||||
case 'mobileSlow4G':
|
||||
lighthouseConfig.settings.throttling = { rttMs: 150, throughputKbps: 1638.4, cpuSlowdownMultiplier: 4 };
|
||||
break;
|
||||
case 'mobileRegular4G':
|
||||
lighthouseConfig.settings.throttling = { rttMs: 100, throughputKbps: 2048, cpuSlowdownMultiplier: 3 };
|
||||
break;
|
||||
case 'mobileFast4G':
|
||||
lighthouseConfig.settings.throttling = { rttMs: 50, throughputKbps: 4096, cpuSlowdownMultiplier: 2 };
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (context.propsValue.userAgent) {
|
||||
lighthouseConfig.settings.userAgent = context.propsValue.userAgent;
|
||||
}
|
||||
|
||||
if (context.propsValue.timeout) {
|
||||
lighthouseConfig.settings.timeout = context.propsValue.timeout;
|
||||
}
|
||||
|
||||
if (context.propsValue.waitForSelector) {
|
||||
lighthouseConfig.settings.waitForSelector = context.propsValue.waitForSelector;
|
||||
}
|
||||
|
||||
if (context.propsValue.emulateMediaType) {
|
||||
lighthouseConfig.settings.emulatedFormFactor = context.propsValue.emulateMediaType;
|
||||
}
|
||||
|
||||
if (context.propsValue.onlyCategories && !lighthouseConfig.settings.onlyCategories) {
|
||||
lighthouseConfig.settings.onlyCategories = ['performance', 'accessibility', 'best-practices', 'seo', 'pwa'];
|
||||
}
|
||||
|
||||
requestBody.config = lighthouseConfig;
|
||||
|
||||
if (context.propsValue.budgets && context.propsValue.budgets.length > 0) {
|
||||
requestBody.budgets = context.propsValue.budgets.map((budget: any) => ({
|
||||
resourceType: budget.resourceType,
|
||||
budget: budget.budget * 1024
|
||||
}));
|
||||
}
|
||||
|
||||
let resourceUri = '/performance';
|
||||
const queryParams: string[] = [];
|
||||
|
||||
if (context.propsValue.stealth) {
|
||||
queryParams.push('stealth=true');
|
||||
}
|
||||
|
||||
if (context.propsValue.blockAds) {
|
||||
queryParams.push('blockAds=true');
|
||||
}
|
||||
|
||||
if (queryParams.length > 0) {
|
||||
resourceUri += `?${queryParams.join('&')}`;
|
||||
}
|
||||
|
||||
const response = await browserlessCommon.apiCall({
|
||||
auth: context.auth.props,
|
||||
method: HttpMethod.POST,
|
||||
resourceUri,
|
||||
body: requestBody,
|
||||
});
|
||||
|
||||
const performanceData = response.body;
|
||||
|
||||
const summary: any = {
|
||||
url: context.propsValue.url,
|
||||
formFactor: context.propsValue.device || 'desktop',
|
||||
timestamp: new Date().toISOString(),
|
||||
};
|
||||
|
||||
if (performanceData.lhr && performanceData.lhr.categories) {
|
||||
const categories = performanceData.lhr.categories;
|
||||
summary.scores = {
|
||||
performance: categories.performance?.score ? Math.round(categories.performance.score * 100) : null,
|
||||
accessibility: categories.accessibility?.score ? Math.round(categories.accessibility.score * 100) : null,
|
||||
bestPractices: categories['best-practices']?.score ? Math.round(categories['best-practices'].score * 100) : null,
|
||||
seo: categories.seo?.score ? Math.round(categories.seo.score * 100) : null,
|
||||
pwa: categories.pwa?.score ? Math.round(categories.pwa.score * 100) : null,
|
||||
};
|
||||
}
|
||||
|
||||
if (performanceData.lhr && performanceData.lhr.audits) {
|
||||
const audits = performanceData.lhr.audits;
|
||||
summary.metrics = {
|
||||
firstContentfulPaint: {
|
||||
value: audits['first-contentful-paint']?.displayValue || null,
|
||||
score: audits['first-contentful-paint']?.score ? Math.round(audits['first-contentful-paint'].score * 100) : null
|
||||
},
|
||||
largestContentfulPaint: {
|
||||
value: audits['largest-contentful-paint']?.displayValue || null,
|
||||
score: audits['largest-contentful-paint']?.score ? Math.round(audits['largest-contentful-paint'].score * 100) : null
|
||||
},
|
||||
firstMeaningfulPaint: {
|
||||
value: audits['first-meaningful-paint']?.displayValue || null,
|
||||
score: audits['first-meaningful-paint']?.score ? Math.round(audits['first-meaningful-paint'].score * 100) : null
|
||||
},
|
||||
speedIndex: {
|
||||
value: audits['speed-index']?.displayValue || null,
|
||||
score: audits['speed-index']?.score ? Math.round(audits['speed-index'].score * 100) : null
|
||||
},
|
||||
timeToInteractive: {
|
||||
value: audits['interactive']?.displayValue || null,
|
||||
score: audits['interactive']?.score ? Math.round(audits['interactive'].score * 100) : null
|
||||
},
|
||||
totalBlockingTime: {
|
||||
value: audits['total-blocking-time']?.displayValue || null,
|
||||
score: audits['total-blocking-time']?.score ? Math.round(audits['total-blocking-time'].score * 100) : null
|
||||
},
|
||||
cumulativeLayoutShift: {
|
||||
value: audits['cumulative-layout-shift']?.displayValue || null,
|
||||
score: audits['cumulative-layout-shift']?.score ? Math.round(audits['cumulative-layout-shift'].score * 100) : null
|
||||
},
|
||||
};
|
||||
|
||||
summary.opportunities = [];
|
||||
if (audits['unused-css-rules']?.details?.items?.length > 0) {
|
||||
summary.opportunities.push({
|
||||
type: 'unused-css',
|
||||
title: 'Remove unused CSS',
|
||||
potentialSavings: audits['unused-css-rules'].displayValue || 'Unknown'
|
||||
});
|
||||
}
|
||||
if (audits['unused-javascript']?.details?.items?.length > 0) {
|
||||
summary.opportunities.push({
|
||||
type: 'unused-javascript',
|
||||
title: 'Remove unused JavaScript',
|
||||
potentialSavings: audits['unused-javascript'].displayValue || 'Unknown'
|
||||
});
|
||||
}
|
||||
if (audits['render-blocking-resources']?.details?.items?.length > 0) {
|
||||
summary.opportunities.push({
|
||||
type: 'render-blocking',
|
||||
title: 'Eliminate render-blocking resources',
|
||||
potentialSavings: audits['render-blocking-resources'].displayValue || 'Unknown'
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
success: true,
|
||||
summary,
|
||||
fullReport: performanceData,
|
||||
metadata: {
|
||||
analysisTime: response.headers?.['x-response-time'] || 'unknown',
|
||||
lighthouseVersion: performanceData.lhr?.lighthouseVersion || 'unknown',
|
||||
}
|
||||
};
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,293 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { HttpMethod } from '@activepieces/pieces-common';
|
||||
import { browserlessAuth } from '../common/auth';
|
||||
import { browserlessCommon } from '../common/client';
|
||||
|
||||
export const runBqlQuery = createAction({
|
||||
name: 'run_bql_query',
|
||||
displayName: 'Run BQL Query',
|
||||
description: 'Execute Browser Query Language (BQL) GraphQL-based queries for advanced browser automation',
|
||||
auth: browserlessAuth,
|
||||
props: {
|
||||
query: Property.LongText({
|
||||
displayName: 'BQL Query',
|
||||
description: 'GraphQL-based BQL query for browser automation. Example: mutation { goto(url: "https://example.com") { status } }',
|
||||
required: true,
|
||||
}),
|
||||
variables: Property.Object({
|
||||
displayName: 'Query Variables',
|
||||
description: 'Variables to pass to the BQL query (JSON object)',
|
||||
required: false,
|
||||
}),
|
||||
operationName: Property.ShortText({
|
||||
displayName: 'Operation Name',
|
||||
description: 'Name of the GraphQL operation to execute',
|
||||
required: false,
|
||||
}),
|
||||
timeout: Property.Number({
|
||||
displayName: 'Timeout (ms)',
|
||||
description: 'Maximum execution time in milliseconds',
|
||||
required: false,
|
||||
defaultValue: 30000,
|
||||
}),
|
||||
|
||||
stealth: Property.Checkbox({
|
||||
displayName: 'Stealth Mode',
|
||||
description: 'Enable stealth mode for bot detection bypass',
|
||||
required: false,
|
||||
defaultValue: true,
|
||||
}),
|
||||
headless: Property.Checkbox({
|
||||
displayName: 'Headless Mode',
|
||||
description: 'Run browser in headless mode (set to false for GUI)',
|
||||
required: false,
|
||||
defaultValue: true,
|
||||
}),
|
||||
humanlike: Property.Checkbox({
|
||||
displayName: 'Human-like Behavior',
|
||||
description: 'Enable human-like mouse movement, typing, and delays',
|
||||
required: false,
|
||||
defaultValue: false,
|
||||
}),
|
||||
proxy: Property.StaticDropdown({
|
||||
displayName: 'Proxy Type',
|
||||
description: 'Type of proxy to use',
|
||||
required: false,
|
||||
options: {
|
||||
options: [
|
||||
{ label: 'Residential', value: 'residential' },
|
||||
{ label: 'None', value: 'none' }
|
||||
]
|
||||
}
|
||||
}),
|
||||
proxyCountry: Property.ShortText({
|
||||
displayName: 'Proxy Country',
|
||||
description: 'Country code for residential proxy (e.g., us, gb, de)',
|
||||
required: false,
|
||||
}),
|
||||
proxySticky: Property.Checkbox({
|
||||
displayName: 'Sticky Proxy',
|
||||
description: 'Maintain same proxy IP across session',
|
||||
required: false,
|
||||
defaultValue: false,
|
||||
}),
|
||||
blockAds: Property.Checkbox({
|
||||
displayName: 'Block Ads',
|
||||
description: 'Enable ad blocker (uBlock Origin)',
|
||||
required: false,
|
||||
defaultValue: false,
|
||||
}),
|
||||
blockConsentModals: Property.Checkbox({
|
||||
displayName: 'Block Consent Modals',
|
||||
description: 'Automatically block/dismiss cookie consent banners',
|
||||
required: false,
|
||||
defaultValue: false,
|
||||
}),
|
||||
record: Property.Checkbox({
|
||||
displayName: 'Record Session',
|
||||
description: 'Enable session recording for debugging',
|
||||
required: false,
|
||||
defaultValue: false,
|
||||
}),
|
||||
slowMo: Property.Number({
|
||||
displayName: 'Slow Motion (ms)',
|
||||
description: 'Add delays between browser actions in milliseconds',
|
||||
required: false,
|
||||
}),
|
||||
ignoreHTTPSErrors: Property.Checkbox({
|
||||
displayName: 'Ignore HTTPS Errors',
|
||||
description: 'Ignore HTTPS certificate errors during navigation',
|
||||
required: false,
|
||||
defaultValue: false,
|
||||
}),
|
||||
userAgent: Property.ShortText({
|
||||
displayName: 'User Agent',
|
||||
description: 'Custom user agent string',
|
||||
required: false,
|
||||
}),
|
||||
viewportWidth: Property.Number({
|
||||
displayName: 'Viewport Width',
|
||||
description: 'Browser viewport width',
|
||||
required: false,
|
||||
}),
|
||||
viewportHeight: Property.Number({
|
||||
displayName: 'Viewport Height',
|
||||
description: 'Browser viewport height',
|
||||
required: false,
|
||||
}),
|
||||
cookies: Property.Array({
|
||||
displayName: 'Cookies',
|
||||
description: 'Cookies to set before executing BQL query',
|
||||
required: false,
|
||||
properties: {
|
||||
name: Property.ShortText({
|
||||
displayName: 'Cookie Name',
|
||||
required: true,
|
||||
}),
|
||||
value: Property.ShortText({
|
||||
displayName: 'Cookie Value',
|
||||
required: true,
|
||||
}),
|
||||
url: Property.ShortText({
|
||||
displayName: 'URL',
|
||||
description: 'Request-URI to associate with the cookie',
|
||||
required: false,
|
||||
}),
|
||||
domain: Property.ShortText({
|
||||
displayName: 'Domain',
|
||||
required: false,
|
||||
}),
|
||||
path: Property.ShortText({
|
||||
displayName: 'Path',
|
||||
required: false,
|
||||
}),
|
||||
secure: Property.Checkbox({
|
||||
displayName: 'Secure',
|
||||
description: 'Indicates if the cookie is secure',
|
||||
required: false,
|
||||
defaultValue: false,
|
||||
}),
|
||||
httpOnly: Property.Checkbox({
|
||||
displayName: 'HTTP Only',
|
||||
description: 'Indicates if the cookie is HTTP-only',
|
||||
required: false,
|
||||
defaultValue: false,
|
||||
}),
|
||||
sameSite: Property.StaticDropdown({
|
||||
displayName: 'SameSite',
|
||||
description: 'SameSite policy for the cookie',
|
||||
required: false,
|
||||
options: {
|
||||
options: [
|
||||
{ label: 'Strict', value: 'Strict' },
|
||||
{ label: 'Lax', value: 'Lax' },
|
||||
{ label: 'None', value: 'None' }
|
||||
]
|
||||
}
|
||||
}),
|
||||
expires: Property.Number({
|
||||
displayName: 'Expires',
|
||||
description: 'Expiration date as timestamp (session cookie if not set)',
|
||||
required: false,
|
||||
}),
|
||||
}
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const requestBody: any = {
|
||||
query: context.propsValue.query,
|
||||
};
|
||||
|
||||
if (context.propsValue.variables) {
|
||||
requestBody.variables = context.propsValue.variables;
|
||||
}
|
||||
|
||||
if (context.propsValue.operationName) {
|
||||
requestBody.operationName = context.propsValue.operationName;
|
||||
}
|
||||
|
||||
let resourceUri = '/chromium/bql';
|
||||
|
||||
const queryParams: string[] = [];
|
||||
|
||||
if (context.propsValue.timeout) {
|
||||
queryParams.push(`timeout=${context.propsValue.timeout}`);
|
||||
}
|
||||
|
||||
if (context.propsValue.stealth !== undefined) {
|
||||
queryParams.push(`stealth=${context.propsValue.stealth}`);
|
||||
}
|
||||
|
||||
if (context.propsValue.headless !== undefined) {
|
||||
queryParams.push(`headless=${context.propsValue.headless}`);
|
||||
}
|
||||
|
||||
if (context.propsValue.humanlike) {
|
||||
queryParams.push(`humanlike=true`);
|
||||
}
|
||||
|
||||
if (context.propsValue.proxy && context.propsValue.proxy !== 'none') {
|
||||
queryParams.push(`proxy=${context.propsValue.proxy}`);
|
||||
if (context.propsValue.proxyCountry) {
|
||||
queryParams.push(`proxyCountry=${context.propsValue.proxyCountry}`);
|
||||
}
|
||||
if (context.propsValue.proxySticky) {
|
||||
queryParams.push(`proxySticky=true`);
|
||||
}
|
||||
}
|
||||
|
||||
if (context.propsValue.blockAds) {
|
||||
queryParams.push(`blockAds=true`);
|
||||
}
|
||||
|
||||
if (context.propsValue.blockConsentModals) {
|
||||
queryParams.push(`blockConsentModals=true`);
|
||||
}
|
||||
|
||||
if (context.propsValue.record) {
|
||||
queryParams.push(`record=true`);
|
||||
}
|
||||
|
||||
if (context.propsValue.slowMo) {
|
||||
queryParams.push(`slowMo=${context.propsValue.slowMo}`);
|
||||
}
|
||||
|
||||
if (context.propsValue.ignoreHTTPSErrors) {
|
||||
queryParams.push(`ignoreHTTPSErrors=true`);
|
||||
}
|
||||
|
||||
if (context.propsValue.userAgent) {
|
||||
queryParams.push(`userAgent=${encodeURIComponent(context.propsValue.userAgent)}`);
|
||||
}
|
||||
|
||||
if (context.propsValue.viewportWidth && context.propsValue.viewportHeight) {
|
||||
queryParams.push(`viewport=${context.propsValue.viewportWidth}x${context.propsValue.viewportHeight}`);
|
||||
}
|
||||
|
||||
if (context.propsValue.cookies && context.propsValue.cookies.length > 0) {
|
||||
const cookiesJson = JSON.stringify(context.propsValue.cookies.map((cookie: any) => ({
|
||||
name: cookie.name,
|
||||
value: cookie.value,
|
||||
...(cookie.url && { url: cookie.url }),
|
||||
...(cookie.domain && { domain: cookie.domain }),
|
||||
...(cookie.path && { path: cookie.path }),
|
||||
...(cookie.secure !== undefined && { secure: cookie.secure }),
|
||||
...(cookie.httpOnly !== undefined && { httpOnly: cookie.httpOnly }),
|
||||
...(cookie.sameSite && { sameSite: cookie.sameSite }),
|
||||
...(cookie.expires !== undefined && { expires: cookie.expires })
|
||||
})));
|
||||
queryParams.push(`cookies=${encodeURIComponent(cookiesJson)}`);
|
||||
}
|
||||
|
||||
if (queryParams.length > 0) {
|
||||
resourceUri += `?${queryParams.join('&')}`;
|
||||
}
|
||||
|
||||
const response = await browserlessCommon.apiCall({
|
||||
auth: context.auth.props,
|
||||
method: HttpMethod.POST,
|
||||
resourceUri,
|
||||
body: requestBody,
|
||||
});
|
||||
|
||||
let parsedResult;
|
||||
try {
|
||||
parsedResult = typeof response.body === 'string' ? JSON.parse(response.body) : response.body;
|
||||
} catch (error) {
|
||||
parsedResult = response.body;
|
||||
}
|
||||
|
||||
return {
|
||||
success: true,
|
||||
data: parsedResult?.data || null,
|
||||
errors: parsedResult?.errors || null,
|
||||
result: parsedResult,
|
||||
metadata: {
|
||||
browserType: 'chromium',
|
||||
executionTime: response.headers?.['x-response-time'] || 'unknown',
|
||||
timestamp: new Date().toISOString(),
|
||||
stealth: context.propsValue.stealth || false,
|
||||
}
|
||||
};
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,289 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { HttpMethod } from '@activepieces/pieces-common';
|
||||
import { browserlessAuth } from '../common/auth';
|
||||
import { browserlessCommon } from '../common/client';
|
||||
|
||||
export const scrapeUrl = createAction({
|
||||
name: 'scrape_url',
|
||||
displayName: 'Scrape URL',
|
||||
description: 'Extract content from a web page',
|
||||
auth: browserlessAuth,
|
||||
props: {
|
||||
url: Property.ShortText({
|
||||
displayName: 'URL',
|
||||
description: 'The URL of the page to scrape',
|
||||
required: true,
|
||||
}),
|
||||
elements: Property.Array({
|
||||
displayName: 'Elements to Extract',
|
||||
description: 'CSS selectors for elements to extract',
|
||||
required: true,
|
||||
properties: {
|
||||
selector: Property.ShortText({
|
||||
displayName: 'CSS Selector',
|
||||
description: 'CSS selector for the element',
|
||||
required: true,
|
||||
}),
|
||||
timeout: Property.Number({
|
||||
displayName: 'Timeout (ms)',
|
||||
description: 'Timeout in milliseconds for this specific selector',
|
||||
required: false,
|
||||
}),
|
||||
}
|
||||
}),
|
||||
waitForSelector: Property.ShortText({
|
||||
displayName: 'Wait for Selector',
|
||||
description: 'CSS selector to wait for before scraping',
|
||||
required: false,
|
||||
}),
|
||||
waitForSelectorTimeout: Property.Number({
|
||||
displayName: 'Wait for Selector Timeout',
|
||||
description: 'Timeout in milliseconds for waiting for selector',
|
||||
required: false,
|
||||
}),
|
||||
waitForSelectorVisible: Property.Checkbox({
|
||||
displayName: 'Wait for Selector Visible',
|
||||
description: 'Wait for selector to be visible',
|
||||
required: false,
|
||||
defaultValue: true,
|
||||
}),
|
||||
waitForSelectorHidden: Property.Checkbox({
|
||||
displayName: 'Wait for Selector Hidden',
|
||||
description: 'Wait for selector to be hidden',
|
||||
required: false,
|
||||
defaultValue: false,
|
||||
}),
|
||||
waitForTimeout: Property.Number({
|
||||
displayName: 'Wait Timeout (ms)',
|
||||
description: 'Timeout in milliseconds to wait before scraping',
|
||||
required: false,
|
||||
}),
|
||||
waitForEvent: Property.ShortText({
|
||||
displayName: 'Wait for Event',
|
||||
description: 'Event name to wait for before scraping',
|
||||
required: false,
|
||||
}),
|
||||
waitForEventTimeout: Property.Number({
|
||||
displayName: 'Wait for Event Timeout',
|
||||
description: 'Timeout in milliseconds for wait event',
|
||||
required: false,
|
||||
}),
|
||||
debugConsole: Property.Checkbox({
|
||||
displayName: 'Debug Console',
|
||||
description: 'Include console logs in debug output',
|
||||
required: false,
|
||||
defaultValue: false,
|
||||
}),
|
||||
debugCookies: Property.Checkbox({
|
||||
displayName: 'Debug Cookies',
|
||||
description: 'Include cookies in debug output',
|
||||
required: false,
|
||||
defaultValue: false,
|
||||
}),
|
||||
debugNetwork: Property.Checkbox({
|
||||
displayName: 'Debug Network',
|
||||
description: 'Include network requests in debug output',
|
||||
required: false,
|
||||
defaultValue: false,
|
||||
}),
|
||||
bestAttempt: Property.Checkbox({
|
||||
displayName: 'Best Attempt',
|
||||
description: 'Attempt to proceed when awaited events fail or timeout',
|
||||
required: false,
|
||||
defaultValue: false,
|
||||
}),
|
||||
userAgent: Property.ShortText({
|
||||
displayName: 'User Agent',
|
||||
description: 'Custom user agent string',
|
||||
required: false,
|
||||
}),
|
||||
cookies: Property.Array({
|
||||
displayName: 'Cookies',
|
||||
description: 'Cookies to set before scraping',
|
||||
required: false,
|
||||
properties: {
|
||||
name: Property.ShortText({
|
||||
displayName: 'Cookie Name',
|
||||
required: true,
|
||||
}),
|
||||
value: Property.ShortText({
|
||||
displayName: 'Cookie Value',
|
||||
required: true,
|
||||
}),
|
||||
domain: Property.ShortText({
|
||||
displayName: 'Domain',
|
||||
required: false,
|
||||
}),
|
||||
}
|
||||
}),
|
||||
timeout: Property.Number({
|
||||
displayName: 'Timeout (ms)',
|
||||
description: 'Maximum time to wait for the page to load',
|
||||
required: false,
|
||||
defaultValue: 30000,
|
||||
}),
|
||||
waitUntil: Property.StaticDropdown({
|
||||
displayName: 'Wait Until',
|
||||
description: 'When to consider navigation complete',
|
||||
required: false,
|
||||
defaultValue: 'networkidle2',
|
||||
options: {
|
||||
options: [
|
||||
{ label: 'Load Event', value: 'load' },
|
||||
{ label: 'DOM Content Loaded', value: 'domcontentloaded' },
|
||||
{ label: 'Network Idle 0', value: 'networkidle0' },
|
||||
{ label: 'Network Idle 2', value: 'networkidle2' }
|
||||
]
|
||||
}
|
||||
}),
|
||||
waitForFunction: Property.LongText({
|
||||
displayName: 'Wait for Function',
|
||||
description: 'JavaScript function to wait for before scraping (should return true when ready)',
|
||||
required: false,
|
||||
}),
|
||||
viewportWidth: Property.Number({
|
||||
displayName: 'Viewport Width',
|
||||
description: 'Browser viewport width in pixels',
|
||||
required: false,
|
||||
defaultValue: 1920,
|
||||
}),
|
||||
viewportHeight: Property.Number({
|
||||
displayName: 'Viewport Height',
|
||||
description: 'Browser viewport height in pixels',
|
||||
required: false,
|
||||
defaultValue: 1080,
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const requestBody: any = {
|
||||
url: context.propsValue.url,
|
||||
elements: (context.propsValue.elements || []).map((element: any) => {
|
||||
let selector = element.selector;
|
||||
if (typeof selector === 'string') {
|
||||
try {
|
||||
const parsed = JSON.parse(selector);
|
||||
if (parsed.selector) {
|
||||
selector = parsed.selector;
|
||||
}
|
||||
} catch (e) {
|
||||
console.error('Error parsing selector:', e);
|
||||
}
|
||||
} else if (typeof selector === 'object' && selector.selector) {
|
||||
selector = selector.selector;
|
||||
}
|
||||
|
||||
const elementConfig: any = {
|
||||
selector: selector,
|
||||
};
|
||||
|
||||
if (element.timeout !== undefined) {
|
||||
elementConfig.timeout = element.timeout;
|
||||
}
|
||||
|
||||
return elementConfig;
|
||||
})
|
||||
};
|
||||
|
||||
if (context.propsValue.timeout || context.propsValue.waitUntil) {
|
||||
requestBody.gotoOptions = {};
|
||||
if (context.propsValue.timeout) {
|
||||
requestBody.gotoOptions.timeout = context.propsValue.timeout;
|
||||
}
|
||||
if (context.propsValue.waitUntil) {
|
||||
requestBody.gotoOptions.waitUntil = context.propsValue.waitUntil;
|
||||
}
|
||||
}
|
||||
|
||||
if (context.propsValue.waitForSelector) {
|
||||
const waitForSelectorObj: any = {
|
||||
selector: context.propsValue.waitForSelector,
|
||||
};
|
||||
|
||||
if (context.propsValue.waitForSelectorTimeout !== undefined) {
|
||||
waitForSelectorObj.timeout = context.propsValue.waitForSelectorTimeout;
|
||||
}
|
||||
|
||||
if (context.propsValue.waitForSelectorVisible !== undefined) {
|
||||
waitForSelectorObj.visible = context.propsValue.waitForSelectorVisible;
|
||||
}
|
||||
|
||||
if (context.propsValue.waitForSelectorHidden !== undefined) {
|
||||
waitForSelectorObj.hidden = context.propsValue.waitForSelectorHidden;
|
||||
}
|
||||
|
||||
requestBody.waitForSelector = waitForSelectorObj;
|
||||
}
|
||||
|
||||
if (context.propsValue.waitForTimeout) {
|
||||
requestBody.waitForTimeout = context.propsValue.waitForTimeout;
|
||||
}
|
||||
|
||||
if (context.propsValue.waitForEvent) {
|
||||
const waitForEventObj: any = {
|
||||
event: context.propsValue.waitForEvent,
|
||||
};
|
||||
|
||||
if (context.propsValue.waitForEventTimeout !== undefined) {
|
||||
waitForEventObj.timeout = context.propsValue.waitForEventTimeout;
|
||||
}
|
||||
|
||||
requestBody.waitForEvent = waitForEventObj;
|
||||
}
|
||||
|
||||
const debugOpts: any = {};
|
||||
if (context.propsValue.debugConsole) debugOpts.console = true;
|
||||
if (context.propsValue.debugCookies) debugOpts.cookies = true;
|
||||
if (context.propsValue.debugNetwork) debugOpts.network = true;
|
||||
|
||||
if (Object.keys(debugOpts).length > 0) {
|
||||
requestBody.debugOpts = debugOpts;
|
||||
}
|
||||
|
||||
if (context.propsValue.bestAttempt) {
|
||||
requestBody.bestAttempt = context.propsValue.bestAttempt;
|
||||
}
|
||||
|
||||
if (context.propsValue.waitForFunction) {
|
||||
requestBody.waitForFunction = {
|
||||
fn: context.propsValue.waitForFunction
|
||||
};
|
||||
}
|
||||
|
||||
if (context.propsValue.userAgent) {
|
||||
requestBody.userAgent = context.propsValue.userAgent;
|
||||
}
|
||||
|
||||
if (context.propsValue.viewportWidth && context.propsValue.viewportHeight) {
|
||||
requestBody.viewport = {
|
||||
width: context.propsValue.viewportWidth,
|
||||
height: context.propsValue.viewportHeight,
|
||||
};
|
||||
}
|
||||
|
||||
if (context.propsValue.cookies && context.propsValue.cookies.length > 0) {
|
||||
requestBody.cookies = context.propsValue.cookies.map((cookie: any) => ({
|
||||
name: cookie.name,
|
||||
value: cookie.value,
|
||||
...(cookie.domain && { domain: cookie.domain })
|
||||
}));
|
||||
}
|
||||
|
||||
|
||||
const response = await browserlessCommon.apiCall({
|
||||
auth: context.auth.props,
|
||||
method: HttpMethod.POST,
|
||||
resourceUri: '/scrape',
|
||||
body: requestBody,
|
||||
});
|
||||
|
||||
return {
|
||||
success: true,
|
||||
data: response.body,
|
||||
metadata: {
|
||||
url: context.propsValue.url,
|
||||
elementsCount: (context.propsValue.elements || []).length,
|
||||
timestamp: new Date().toISOString(),
|
||||
}
|
||||
};
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,57 @@
|
||||
import { PieceAuth, Property } from '@activepieces/pieces-framework';
|
||||
|
||||
export const browserlessAuth = PieceAuth.CustomAuth({
|
||||
description: `
|
||||
To obtain your API credentials:
|
||||
|
||||
1. Sign up for a free Browserless account at https://www.browserless.io
|
||||
2. Navigate to your dashboard
|
||||
3. Find your API Key/Token in the account settings
|
||||
4. Choose your preferred regional endpoint for optimal performance
|
||||
|
||||
Regional Endpoints:
|
||||
• US West (SFO): https://production-sfo.browserless.io
|
||||
• Europe UK (London): https://production-lon.browserless.io
|
||||
• Europe (Amsterdam): https://production-ams.browserless.io
|
||||
|
||||
For custom/dedicated instances, select "Custom" and enter your specific endpoint URL.
|
||||
`,
|
||||
props: {
|
||||
apiToken: PieceAuth.SecretText({
|
||||
displayName: 'API Token',
|
||||
description: 'Your Browserless API token (found in your dashboard)',
|
||||
required: true,
|
||||
}),
|
||||
region: Property.StaticDropdown({
|
||||
displayName: 'Region',
|
||||
description: 'Choose the regional endpoint closest to you for optimal performance',
|
||||
required: true,
|
||||
options: {
|
||||
options: [
|
||||
{
|
||||
label: 'US West (San Francisco)',
|
||||
value: 'https://production-sfo.browserless.io'
|
||||
},
|
||||
{
|
||||
label: 'Europe UK (London)',
|
||||
value: 'https://production-lon.browserless.io'
|
||||
},
|
||||
{
|
||||
label: 'Europe (Amsterdam)',
|
||||
value: 'https://production-ams.browserless.io'
|
||||
},
|
||||
{
|
||||
label: 'Custom Endpoint',
|
||||
value: 'custom'
|
||||
}
|
||||
]
|
||||
}
|
||||
}),
|
||||
customBaseUrl: Property.ShortText({
|
||||
displayName: 'Custom Base URL',
|
||||
description: 'Enter your custom Browserless endpoint URL',
|
||||
required: false,
|
||||
}),
|
||||
},
|
||||
required: true,
|
||||
});
|
||||
@@ -0,0 +1,72 @@
|
||||
import { HttpMethod, httpClient } from '@activepieces/pieces-common';
|
||||
|
||||
export interface BrowserlessAuth {
|
||||
apiToken: string;
|
||||
region: string;
|
||||
customBaseUrl?: string;
|
||||
}
|
||||
|
||||
export function convertBinaryToBase64(binaryData: any): string {
|
||||
if (typeof binaryData === 'string') {
|
||||
return Buffer.from(binaryData, 'binary').toString('base64');
|
||||
} else if (binaryData instanceof ArrayBuffer) {
|
||||
return Buffer.from(binaryData).toString('base64');
|
||||
} else if (Buffer.isBuffer(binaryData)) {
|
||||
return binaryData.toString('base64');
|
||||
} else {
|
||||
return Buffer.from(String(binaryData), 'binary').toString('base64');
|
||||
}
|
||||
}
|
||||
|
||||
export function isBinaryResponse(headers: any): boolean {
|
||||
const contentType = headers?.get?.('content-type') || headers?.['content-type'] || '';
|
||||
return contentType.includes('image/') ||
|
||||
contentType.includes('application/pdf') ||
|
||||
contentType.includes('application/octet-stream');
|
||||
}
|
||||
|
||||
export const browserlessCommon = {
|
||||
async apiCall({
|
||||
auth,
|
||||
method,
|
||||
resourceUri,
|
||||
body,
|
||||
headers = {},
|
||||
}: {
|
||||
auth: BrowserlessAuth;
|
||||
method: HttpMethod;
|
||||
resourceUri: string;
|
||||
body?: any;
|
||||
headers?: Record<string, string>;
|
||||
}) {
|
||||
const baseUrl = auth.region === 'custom' ? auth.customBaseUrl : auth.region;
|
||||
|
||||
if (!baseUrl) {
|
||||
throw new Error('Base URL is required. Please configure your Browserless endpoint.');
|
||||
}
|
||||
|
||||
const url = `${baseUrl}${resourceUri}`;
|
||||
|
||||
const requestHeaders = {
|
||||
'Content-Type': 'application/json',
|
||||
'Accept': '*/*',
|
||||
...headers,
|
||||
};
|
||||
|
||||
let responseType: 'json' | 'arraybuffer' | 'text' = 'json';
|
||||
if (resourceUri.includes('/screenshot') || resourceUri.includes('/pdf')) {
|
||||
responseType = 'arraybuffer';
|
||||
}
|
||||
|
||||
const requestConfig = {
|
||||
method,
|
||||
url,
|
||||
headers: requestHeaders,
|
||||
body: body ? JSON.stringify(body) : undefined,
|
||||
queryParams: { token: auth.apiToken },
|
||||
responseType,
|
||||
};
|
||||
|
||||
return await httpClient.sendRequest(requestConfig);
|
||||
},
|
||||
};
|
||||
Reference in New Issue
Block a user