Firefox Plugin herunterladen
-
01-10-2019 - |
Frage
Ich versuche, ein einfaches Plugin zu erstellen, keine Schnittstelle erforderlich ist, die automatisch herunterladen und speichern auf „Desktop / MyFolder /“ Alles, was die Seite geladen wird. Mein Gedanke war, eine Erweiterung zu machen, die FireBug erstreckt, aber das scheint eher eine Herausforderung zu sein. Ich habe es ein paar Dinge zu tun, aber auf Dinge wie Bilder, flv ist, und mp3s der Inhalt erscheint in der Datei platziert werden, aber wenn ich versuche, sie zu betrachten, sie sind nicht sichtbar / ungültige Formate.
Ich denke ich nur Notwendigkeit, eine Art von Mimetype oder das Dateiformat, was zu tun. Es sieht wirklich gut aus, aber etwas offensichtlich fehlt.
Vielen Dank im Voraus!
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);
// ************************************************************************************************
}});
Lösung
In Ordnung, gut könnte ich das nicht aus figre, so alles, was ich war, ein C # Programm hatte noch ein Filesystem Watch (Google es), und wenn es eine Datei innerhalb der Dateigröße Grenzen sah ich suchte, es kopiert und umbenannt wo ich brauchte. Es ist keine Firebug-Plugin, aber es hat funktioniert.