]> gitweb.fluxo.info Git - scripts.git/commitdiff
Fix: export-firefox-bookmarks: support for a single profile
authorSilvio Rhatto <rhatto@riseup.net>
Sat, 20 Feb 2021 13:39:25 +0000 (10:39 -0300)
committerSilvio Rhatto <rhatto@riseup.net>
Sat, 20 Feb 2021 13:39:25 +0000 (10:39 -0300)
export-firefox-bookmarks

index 83472118a3eabbe28a8db2fefb4a725fabc2c734..45878dd1654398b821dac1099ad725cc503556f2 100755 (executable)
@@ -4,10 +4,37 @@
 # Based on https://github.com/pirate/ArchiveBox/blob/master/bin/export_browser_history.sh
 #
 
-# Base folder to work on
-BASEDIR="$HOME/.mozilla"
+# 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
-find $BASEDIR -name places.sqlite | while read file; do \
-  sqlite3 $file "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"
-done
+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