aboutsummaryrefslogtreecommitdiff
path: root/export-firefox-bookmarks
diff options
context:
space:
mode:
authorSilvio Rhatto <rhatto@riseup.net>2024-08-20 20:42:26 -0300
committerSilvio Rhatto <rhatto@riseup.net>2024-08-20 20:42:26 -0300
commitd1791e72e2e1442033cad2ad7ef1dd183562ddec (patch)
tree1a6f087ba2d77d6a7f69230da2ec8ba30c5b0f00 /export-firefox-bookmarks
downloadutils-doc-d1791e72e2e1442033cad2ad7ef1dd183562ddec.tar.gz
utils-doc-d1791e72e2e1442033cad2ad7ef1dd183562ddec.tar.bz2
Initial import
Diffstat (limited to 'export-firefox-bookmarks')
-rwxr-xr-xexport-firefox-bookmarks40
1 files changed, 40 insertions, 0 deletions
diff --git a/export-firefox-bookmarks b/export-firefox-bookmarks
new file mode 100755
index 0000000..45878dd
--- /dev/null
+++ b/export-firefox-bookmarks
@@ -0,0 +1,40 @@
+#!/usr/bin/env bash
+#
+# Export Mozilla Firefox bookmarks.
+# Based on https://github.com/pirate/ArchiveBox/blob/master/bin/export_browser_history.sh
+#
+
+# Parameters
+BASENAME="`basename $0`"
+BASEDIR="$HOME/.mozilla/firefox"
+PROFILES="$BASEDIR/profiles"
+PROFILE="$1"
+#SECTION="moz_${2:-bookmarks}"
+
+# Export from a single database
+function export_firefox_bookmark {
+ sqlite3 $1 "SELECT \"[\" || group_concat(json_object('timestamp', b.dateAdded, 'description', b.title, 'href', f.url)) || \"]\" FROM moz_bookmarks AS b JOIN moz_places AS f ON f.id = b.fk"
+}
+
+# Check
+#if [ ! -e "$BASEDIR/profiles.ini" ]; then
+# echo "$BASENAME: not found: $BASEDIR/profiles.ini"
+# exit 1
+#fi
+
+#PROFILES="grep "^Name=" $BASEDIR/profiles.ini | cut -d = -f 2 | xargs"
+
+# There might be many places.sqlite on many profiles
+if [ -z "$PROFILE" ]; then
+ find $BASEDIR -name places.sqlite | while read file; do \
+ export_firefox_bookmark $file
+ done
+else
+ # Assumption: when a $PROFILE is given, search at $PROFILES
+ if [ -e "$PROFILES/$PROFILE/places.sqlite" ]; then
+ export_firefox_bookmark $PROFILES/$PROFILE/places.sqlite
+ else
+ echo "$BASENAME: file not found: $PROFILES/$PROFILE/places.sqlite"
+ exit 1
+ fi
+fi