Kann man per Userchrome.js auch Lesezeichen mit einem Klick aus einer fest vorgegebenen Datei importieren? Optimal wäre, wenn Firefox beim Start die Lesezeichen aus einer Datei, wenn sie denn existiert, importiert und sie danach löscht. (BTW: nix Cloud...)
Lesezeichen Script? [GELÖST]
-
David44 -
1. August 2018 um 17:35 -
Erledigt
-
-
Kann man per Userchrome.js auch Lesezeichen mit einem Klick aus einer fest vorgegebenen Datei importieren?
Ich verstehe den Sinn gerade nicht. Die standardmäßig vorhandene Export-/Importfunktion in der Bibliothek reicht dir nicht aus? -
Nein, da sehr umständlich. Da wurden schon viele Scripte für bedeutend weniger Klick-Ersparnis vorgestellt.
-
Da ist allerdings was dran... :lol:
-
Dann mache ich hier auch noch mal einen neuen Anlauf... geht das mit einem Script?
-
Optimal wäre, wenn Firefox beim Start die Lesezeichen aus einer Datei, wenn sie denn existiert, importiert und sie danach löscht.Teste mal:
Code
Alles anzeigen(function() { if (location != 'chrome://browser/content/browser.xul') return; const path = "C:\\Users\\BenutzerA\\Downloads\\bookmarks.html"; OS.File.exists(path).then(function(exists) { if (!exists) return; if (!window.BookmarkHTMLUtils) { ChromeUtils.import("resource://gre/modules/BookmarkHTMLUtils.jsm"); }; BookmarkHTMLUtils.importFromURL(OS.Path.toFileURI(path)) .catch(Cu.reportError).then(function() { OS.File.remove(path); }); }); })();
-
Vielen Dank, das ist schon mal hoffnungsvoll. Leider habe ich es unkorrekt formuliert. Es war nicht der HTML-Import gemeint, sondern das Wiederherstellen aus einer .json-Datei. Ich habe Dein Script mal geändert, aber es funktioniert dann nicht mehr.
Code
Alles anzeigen(function() { if (location != 'chrome://browser/content/browser.xul') return; const path = "C:\\Users\\BenutzerA\\Downloads\\bookmarks.json"; OS.File.exists(path).then(function(exists) { if (!exists) return; if (!window.BookmarkJSONUtils) { ChromeUtils.import("resource://gre/modules/BookmarkJSONUtils.jsm"); }; BookmarkJSONUtils.importFromFile(OS.Path.toFileURI(path)) .catch(Cu.reportError).then(function() { OS.File.remove(path); }); }); })();
Irgendetwas macht es, denn OS.File.remove(path) wird ausgeführt. Nur ändert sich an den Bookmarks nichts. Manueller Import über "Lesezeichen verwalten" funktioniert mit der .json-Datei dagegen einwandfrei. Wo ist der Fehler?
-
Hiermit werden die aktuellen Lesezeichen durch die aus der json-Datei ersetzt:
Code
Alles anzeigen(async function() { if (location != 'chrome://browser/content/browser.xul') return; const path = "C:\\Users\\BenutzerA\\Downloads\\bookmarks.json"; if (!(await OS.File.exists(path))) return; Cu.import("resource://gre/modules/BookmarkJSONUtils.jsm"); try { await BookmarkJSONUtils.importFromFile(path, { replace: true }); OS.File.remove(path); } catch (ex) { alert(PlacesUIUtils.getString("bookmarksRestoreParseError")); }; })();
-
Perfekt! Ganz herzlichen Dank. Sogar noch eleganter als das vorige Script.
Als i-Tüpfelchen wäre es noch schön, wenn der Dateiname den Computernamen enthalten könnte, also statt bookmarks.json bookmarks_WKS01.json. Das scheint so ohne weiteres nicht zu gehen. Gibt es da einen Trick? Oder stattdessen: kann man einen String aus dem letzten SubDir von "Home" oder "ProfD" basteln? Meine Versuche scheitern alle kläglich. -
wenn der Dateiname den Computernamen enthalten könnte, also statt bookmarks.json bookmarks_WKS01.json. Das scheint so ohne weiteres nicht zu gehen.
Ich verstehe die Frage nicht. Du kannst in den Pfad-String doch hineinschreiben, was du willst. Oder soll die json-Datei bereits, wenn sie erstellt wird, einen anderen Namen erhalten?
kann man einen String aus dem letzten SubDir von "Home" oder "ProfD" basteln?Versuche es mit den OS.Path-Funktionen und den OS.Constants.Path-Ordnerkürzeln. OS.Constants.Path.profileDir ist der Profilordner usw.
-
Habe es erst jetzt probieren können. Diese Konstanten hatte ich noch nicht verwendet. Es funktioniert bestens, nochmals vielen Dank!