Pregunta

Estoy intentando crear un plugin simple, sin interfaz es necesario, que descargará automáticamente y guardar en "/ MiCarpeta / Desktop" todo lo que se carga la página. Mi idea era hacer una extensión que se extiende FireBug, pero que parece ser un gran reto. Tengo que hacer algunas cosas, sin embargo en cosas como imágenes, FLV de, mp3 y el aparece de contenido para ser colocados en el archivo, sin embargo cuando intento ver los formatos que no son visibles / no válido.

Pienso que necesito sólo tiene que hacer algún tipo de MimeType o cosa formato de archivo. Realmente se ve bien, sin embargo, algo está claramente ausente.

Gracias de antemano!

FBL.ns(function() { with (FBL) { 

const Cc = Components.classes;
const Ci = Components.interfaces;

const dirService = Cc["@mozilla.org/file/directory_service;1"]
    .getService(Ci.nsIProperties);

// ************************************************************************************************
// Module implementation

Firebug.EverythingExportModule = extend(Firebug.Module,
{
    initialize: function(owner)
    {
        Firebug.Module.initialize.apply(this, arguments);

        // Register NetMonitor listener
        this.netListener = new EverythingExport();
        Firebug.NetMonitor.addListener(this.netListener);
    },

    shutdown: function()
    {
        Firebug.Module.shutdown.apply(this, arguments);

        // Unregister NetMonitor listener
        Firebug.NetMonitor.removeListener(this.netListener);
        this.netListener.outputStream.close();
    }
});

// ************************************************************************************************
// Net Panel Listener

function EverythingExport(outputStream)
{
    // Get unique file within user profile directory. 
    var file = dirService.get("ProfD", Ci.nsIFile);
    file.append("netlistener");
    file.append("netMonitor.txt");
    file.createUnique(Ci.nsIFile.NORMAL_FILE_TYPE, 0666);

    // Initialize output stream.
    this.outputStream =
        Cc["@mozilla.org/network/file-output-stream;1"]
        .createInstance(Ci.nsIFileOutputStream);

    // write, create, truncate
    this.outputStream.init(file, 0x02 | 0x08 | 0x20, 0666, 0);
}

EverythingExport.prototype = 
{
    onRequest: function(context, file)
    {
        if (FBTrace.DBG_NETLISTENER)
            FBTrace.sysout("netListener.onResponse; " + (file ? file.href : ""));
    },

    onExamineResponse: function(context, request)
    {
        if (FBTrace.DBG_NETLISTENER)
            FBTrace.sysout("netListener.onExamineResponse;" + request.name);
    },

    onResponse: function(context, file)
    {
        return;
        if (FBTrace.DBG_NETLISTENER)
            FBTrace.sysout("netListener.onResponse; " + (file ? file.href : ""));

        try
        {
            var text = file.href + " (" + formatTime
                (file.endTime - file.startTime) + ")\n";
            this.outputStream.write(text, text.length);
        }
        catch (err)
        {
            if (FBTrace.DBG_NETLISTENER || FBTRace.DBG_ERRORS)
                FBTrace.sysout("netListener.onResponse; EXCEPTION", err);
        }
    },

    onResponseBody: function(context, file)
    {

        Firebug.Console.openGroup("EverythingDownloader", null, "group", null, false);
        Firebug.Console.log("Found File");
        Firebug.Console.log(file);
        Firebug.Console.log(context);
        Firebug.Console.log(this.transport);
        Firebug.Console.log(this);
        Firebug.Console.log(file.mimeType);
        savefile="C:\\Users\\MyUserName\\Desktop\\MyFolder\\" + file.startTime + "-music.mp3";
        //Yes I know that is not cross-platform friendly...
        var req = new XMLHttpRequest();
        req.onreadystatechange = function()
        {
            if(this.readyState == 4 && this.status == 200) {
                Firebug.Console.log(req);
                try {
                    netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
                } catch (e) {
                    alert("Permission to save file was denied.");
                }
                var file = Components.classes["@mozilla.org/file/local;1"]
                    .createInstance(Components.interfaces.nsILocalFile);
                file.initWithPath( savefile );
                if ( file.exists() == false ) {
                    Firebug.Console.log( "Creating file... " );
                    file.create( Components.interfaces.nsIFile.NORMAL_FILE_TYPE, 420 );
                }
                var outputStream = Components.classes["@mozilla.org/network/file-output-stream;1"]
                    .createInstance( Components.interfaces.nsIFileOutputStream );
                /* Open flags 
                #define PR_RDONLY       0x01
                #define PR_WRONLY       0x02
                #define PR_RDWR         0x04
                #define PR_CREATE_FILE  0x08
                #define PR_APPEND      0x10
                #define PR_TRUNCATE     0x20
                #define PR_SYNC         0x40
                #define PR_EXCL         0x80
                */
                /*
                ** File modes ....
                **
                ** CAVEAT: 'mode' is currently only applicable on UNIX platforms.
                ** The 'mode' argument may be ignored by PR_Open on other platforms.
                **
                **   00400   Read by owner.
                **   00200   Write by owner.
                **   00100   Execute (search if a directory) by owner.
                **   00040   Read by group.
                **   00020   Write by group.
                **   00010   Execute by group.
                **   00004   Read by others.
                **   00002   Write by others
                **   00001   Execute by others.
                **
                */
                outputStream.init( file, 0x04 | 0x08 | 0x20, 420, 0 );
                var result = outputStream.write( this.responseText, this.responseText.length );
                Firebug.Console.log("Done!");
                outputStream.close();
                Firebug.Console.closeGroup();
            }
        }

        req.open("GET", file.href, true);
        req.send(null);
        return;
        if (FBTrace.DBG_NETLISTENER)
            FBTrace.sysout("netListener.onResponseBody; " + (file ? file.href : ""), file);
        //Firebug.Console.log(file);
        //
    }
};

var savefile="";
// ************************************************************************************************
// Registration

Firebug.registerModule(Firebug.EverythingExportModule);

// ************************************************************************************************
}});
¿Fue útil?

Solución

Muy bien, así que no podía figre que fuera, por lo que todo lo que hice fue tener un programa en C # no un reloj de sistema de archivos (Google él) y cuando vio a un archivo dentro de los límites del archivo tamaño que estaba buscando, se copian y se le cambió el nombre de donde tenía. No es un plugin Firebug, pero no funcionaba.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top