papis-zotero icon indicating copy to clipboard operation
papis-zotero copied to clipboard

Zotero compatibility layer for papis

.. image:: https://badge.fury.io/py/papis-zotero.svg :target: https://badge.fury.io/py/papis-zotero .. image:: https://github.com/papis/papis-zotero/workflows/CI/badge.svg :target: https://github.com/papis/papis-zotero/actions?query=branch%3Amain+workflow%3ACI

Zotero compatibility for papis

Installation

To install the latest release from PyPI

.. code:: bash

python -m pip install papis-zotero

To install the latest development version

.. code:: bash

python -m pip install papis-zotero@https://github.com/papis/papis-zotero.git#egg=papis-zotero

Development

This project uses setup.py and setuptools for its build system. To develop the code, it is recommended to start up a virtual environment <https://docs.python.org/3/library/venv.html>__ and install the project in editable mode using, e.g.::

python -m pip install -e '.[develop]'

After installation always check that the command is correctly recognized, e.g. by looking at the help output

.. code:: bash

papis zotero --help

Importing from BibTeX

Zotero supports exporting different variants of BibTeX or BibLaTeX files (from Files > Export Library). The resulting bib file can be directly imported into papis using

.. code:: bash

papis bibtex read library.bib import --all

but a better choice is using this command, as it has better support for special Zotero fields. To import a given exported library run

.. code:: bash

papis zotero import --from-bibtex library.bib

BibTeX files exported by Zotero can also include has some PDF entries, e.g. they can look like

.. code:: bibtex

@article{Einstein1905Photon,
    author = { A. Einstein },
    doi = { 10.1002/andp.19053220607 },
    journal = { Ann. Phys. },
    pages = { 132--148 },
    title = { Über einen die Erzeugung und Verwandlung des Lichtes
        betreffenden heuristischen Gesichtspunkt },
    file = { Full Text:path/to/some/relative/file.pdf },
    volume = { 322 },
    year = { 1905 },
}

From this, papis-zotero will interpret the path of the file entry as a relative path to library.bib passed to the import command using --from-bibtex. The files are skipped if they do not exist at the expected location.

By default, papis-zotero will add the documents to your current library. When initially importing a big library, it is recommended to always import it into a scratch folder, so that you can check the import. This can be easily done using

.. code:: bash

papis zotero import --from-bibtex library.bib --outfolder some/folder/lib

When you are ready you can move this folder to a final papis library.

Importing from Zotero SQLite

Zotero also maintains a database of all its files and collections under a zotero.sqlite file. You can check where this file is located by going to Edit > Preferences > Advanced > Data Directory Location (may vary depending on the Zotero version). The Zotero data directory should contain the zotero.sqlite file and a storage directory with the files for each document.

The SQLite database maintained by Zotero can be imported directly (without using a BibTeX export) by papis-zotero. This can be done by passing

.. code:: bash

papis zotero import --from-sql-folder <ZOTERO_DATA_DIRECTORY>

where ZOTERO_DATA_DIRECTORY is the folder containing the zotero.sqlite file. By default, papis-zotero will add the imported documents to your current library directory, but it can be customized using the --outfolder argument.

Using Zotero connectors

This plugin can also connect to a Zotero connector browser plugin. First, one such plugin should be installed from the Zotero website <https://www.zotero.org/download/>__. Then, make sure that Zotero itself is not running (and connected to the connector) and run

.. code:: bash

papis zotero serve

to start listening to your browser for incoming data. Whenever you click the Zotero button to add a paper, papis-zotero will add this paper to its library instead.