我正在尝试创建一个SIMPLE插件,不需要任何界面,它将自动下载并保存到“Desktop / MyFolder /”页面加载的所有内容。我的想法是扩展FireBug,但这似乎相当具有挑战性。我做了一些事情,但是在图像,flv和mp3等内容中,内容似乎放在文件中,但是当我尝试查看它们时,它们不是可查看/无效的格式。
我在想我只需要做某种MimeType或文件格式的事情。它看起来确实很好,但显然缺少一些东西。
提前致谢!
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);
// ************************************************************************************************
}});
答案 0 :(得分:0)
好吧,我无法想象,所以我所做的就是有一个C#程序做一个FileSystem Watch(谷歌它),当它看到我正在寻找的文件大小范围内的文件时,它复制并重命名它到我需要的地方。它不是FireBug插件,但确实有用。