Skip to content

Instantly share code, notes, and snippets.

@Pangoraw
Last active January 24, 2023 13:05
Show Gist options
  • Save Pangoraw/0361c583a8d0c536b0af8bcefbc2171a to your computer and use it in GitHub Desktop.
Save Pangoraw/0361c583a8d0c536b0af8bcefbc2171a to your computer and use it in GitHub Desktop.
Open zotero files from a selector like rofi, dmenu, fzf,...
#!/bin/bash
set -o errexit
set -o pipefail
set -o nounset
ZOTERO_DIR="$HOME/snap/zotero-snap/common/Zotero"
ZOTERO_DB="${ZOTERO_DIR}/zotero.sqlite"
PDF_READER="$HOME/Projects/piz/target/debug/piz"
# PDF_READER="evince"
SELECTOR="rofi -normal-window -dmenu -i -sort -theme $HOME/Projects/piz/slate.rasi"
# SELECTOR="fzf"
COPIED_DB=""
if ! sqlite3 $ZOTERO_DB "select * from items;" 2>/dev/null
then
# the database is locked (5) by Zotero probably.
COPIED_DB="$ZOTERO_DB.tmp.sqlite"
cp $ZOTERO_DB $COPIED_DB
ZOTERO_DB="$COPIED_DB"
fi
SELECTED_NAME=$(sqlite3 $ZOTERO_DB "
SELECT value
FROM items
LEFT JOIN itemData, itemDataValues, itemAttachments, items attachmentItems
WHERE itemData.itemID = items.itemID
AND itemData.fieldID = 1
AND itemData.valueID = itemDataValues.valueID
AND itemAttachments.path LIKE 'storage:%'
AND itemAttachments.parentItemID = items.itemID
AND attachmentItems.itemID = itemAttachments.itemID
AND itemAttachments.contentType = 'application/pdf';
" | $SELECTOR)
SELECTED_PATH=$(sqlite3 $ZOTERO_DB "
SELECT attachmentItems.key, itemAttachments.path
FROM items
LEFT JOIN itemData, itemDataValues, itemAttachments, items attachmentItems
WHERE itemData.itemID = items.itemID
AND value = '${SELECTED_NAME}'
AND itemData.fieldID = 1
AND itemData.valueID = itemDataValues.valueID
AND itemAttachments.path LIKE 'storage:%'
AND itemAttachments.parentItemID = items.itemID
AND attachmentItems.itemID = itemAttachments.itemID
AND itemAttachments.contentType = 'application/pdf';
" | tail --lines=1)
SELECTED_PATH="${ZOTERO_DIR}/storage/${SELECTED_PATH/|storage:/\/}"
if [[ "$COPIED_DB" != "" ]]
then
rm $COPIED_DB
fi
$PDF_READER "$SELECTED_PATH"
@Pangoraw
Copy link
Author

image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment