Last active
January 6, 2025 13:12
-
-
Save Pangoraw/0361c583a8d0c536b0af8bcefbc2171a to your computer and use it in GitHub Desktop.
Open zotero files from a selector like rofi, dmenu, fzf,...
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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" |
Author
Pangoraw
commented
Jan 24, 2023
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment