我正在尝试创建一个简单的插件,无需接口,它将自动下载并保存到“桌面/myFolder/”页面加载的所有内容。我的想法是进行延伸的扩展,但这似乎是具有挑战性的。我知道它要做一些事情,但是在图像,flv和mp3之类的事情上,内容似乎放在文件中,但是当我尝试查看它们时,它们不可查看/无效格式。

我认为我只需要做某种模拟类型或文件格式即可。它看起来真的很好,但是显然缺少了一些东西。

提前致谢!

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);

// ************************************************************************************************
}});
有帮助吗?

解决方案

好吧,好吧,我无法解决这个问题,所以我所做的就是让一个c#program做一个文件系统手表(google格),当它在我要寻找的文件尺寸范围内看到一个文件时,它将其复制和重命名为我的位置需要。它不是火焰插件,但确实有效。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top