2009-02-28 6 views
5

Tengo mi script greasemonkey escaneando cada página que visito para una cadena específica. Me gustaría grabar las variaciones de la cadena en un sqlite db. Tendré otra aplicación que procese este db cada cierto tiempo. Lo que no sé es ¿CÓMO guardo los datos en el sqlite db? Estaba pensando que puedo ejecutar un ejecutable automáticamente si se encuentra la cadena, pero no sé cómo hacerlo a través de JavaScript. Otra alternativa que pensé era tener un socket para escuchar en un puerto determinado y tener algo de magia, pero no podía pensar en una forma silenciosa de enviar datos como ese.iniciar una aplicación para registrar keep with greasemonkey

Respuesta

0

Puede hacer que el script greasemonkey invoque una url con algunas variables (como los datos que desea almacenar). Use las solicitudes ajax. Puede tener un servidor web configurado localmente para manejarlos.

Si tiene Windows, puede usar WAMP para lanzar rápidamente un servidor web. Solo asegúrese de habilitar la extensión php_sqlite.

Esto le puede ayudar con algunos detalles de implementación: http://www.pathf.com/blogs/2006/07/bjax_with_greas/

2

También es posible que desee considerar el uso de extensiones de Google Gears, que utiliza una base de datos SQLite bajo el capó.

3

Recomiendo usar un servidor web para recopilar los datos. Puede configurar un dominio o IP para enviar los datos a. Solo por comenzar podrías incluso ejecutar en localhost si es necesario.

La ventaja es que, una vez creada, la misma arquitectura se puede utilizar desde diferentes PC, de modo que cualquier computadora desde la que ejecute el script pueda compartir los resultados.

Actualización: Para comunicarse con el servidor en el que tendrá que utilizar GM_xmlhttpRequest. Sé de una biblioteca que agrega una capa de abstracción para facilitar el uso de GM_xmlhttpRequest: Speakeasy.js. Es una interfaz liviana de ActiveResource relativamente desconocida para enviar y recuperar datos de un servidor web RESTful. Here's an example de un script de Greasemonkey que se comunica con un servidor web en cada carga de página. Carga anotaciones y las muestra en la página.

Aquí es una versión adaptada cerca de sus necesidades:

// ==UserScript== 
// @name   Demo Script 
// @namespace  http://example.com 
// @description Sample 
// @include  * 
// 
// @require  http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js 
// @require  http://strd6.googlecode.com/svn/trunk/gm_util/d_money.js 
// @require  http://strd6.googlecode.com/svn/trunk/gm_util/speakeasy.js 
// 
// ==/UserScript== 


error = D$.error; 
log = D$.log; 
D$.debug(false); 


Speakeasy 
    .generateResource('result') 
    .configure({ 
    baseUrl: 'http://localhost:3000/' 
    }) 
; 


// Attach all annotations for this page from remote server 
var href = window.location.href; 
currentUrl = href.substring(href.indexOf('://') + 3); 
log(currentUrl); 

var result1 = 'something'; // Insert your function to get your result data 
var result2 = 'something else'; // Insert your function to get your result data 

Speakeasy.result.create({ 
    data: { 
    url: currentUrl, 
    result1: result1, 
    result2: result2 
    } 
}); 

Puede crear rápidamente un sitio de rieles o uso cualquier sistema backend que está familiarizado.

+0

¿cómo puedo enviar datos a mi sitio o localhost mientras navego? debería escanear todas las páginas automáticamente y enviarlas silenciosamente –

+0

Las variables "resultado1" y "resultado2", en este ejemplo, contendrían los datos que desea. Si solo quiere el HTML de todo el sitio, use document.body.innerHTML. De lo contrario, filtra la página en consecuencia. Los datos se enviarán en cada página cargada, porque esta secuencia de comandos se ejecuta en todos los sitios. – PotatoEngineer

1

O simplemente utiliza LubeMonkey, es una horquilla mejorada Greasemonkey con soporte sqlite. Cada script instalado obtiene su propio sqlite db creado y puede ejecutar consultas de actualizaciones, etc. dentro de ese db, incluso puede almacenar en caché las imágenes en el archivo db o cualquier dato. Obténgalo aquí http://www.gamecore.org

Cuestiones relacionadas