[Accorder book extensions]: https://gitlab.com/marcellmars/accorder/-/blob/master/accorder/utils/bibtex.py#L55 "Accorder supported book extensions (Gitlab)"
# Introduction
Sandpoints is designed to be integrated with a library. The library is accessible via the red button at the top right corner of any content page, or at [Library][] . Key features of the library include:
- [Calibre][]: free & open source eBook management software available for Windows, OSX, and Linux.
- [Accorder][]: a Python command line tool -- installation instructions below.
- A command line interface (CLI; such as *Windows PowerShell*, *Git Bash*, or *Terminal* or *iTerm2* for macOS).
# Populating the library
Assuming you have a Calibre library running, you can add items from a range of file formats supported both by Calibre and Accorder. These are: `pdf, epub, mobi, azw, azw3, cbz, chm, djvu, doc, docx, fb2, htmlz, mbp, md, txt, zip`.[^vfa]
Note that a Calibre library entry can have *multiple different files associated with it* (for example both a pdf and an epub), however, it cannot have two files of the same format.
## Via Calibre
1. Click `Add books`, or drag and drop a file (e.g. pdf, epub, zip) to Calibre.
2. Select the item and click `Edit metadata`, or press `e`.
3. Add/correct the item **title**.
4. Add/correct the name of the **author(s)**. Author names are entered as in `Name Surname`. Multiple authors are separated by ampersand as in `Jane Doe & John Doe`.
5. Automatically download metadata. Calibre should be able to download metadata automatically from online databases (this works mostly for commercial books).
1. With the author names and book title in place (ideally also the `ISBN` -- see step 7), . Click `Download metadata` or press `d`.
2. Calibre will find available metadata sets, which might include book cover and item description or review. Check if the
3. If Calibre fails to find available metadata, try to add the book ISBN and try again. Otherwise
6. Add **identifiers** such as ISBN, or DOI in the field `Ids`, as in `isbn:12345674896`. In case of multiple ids separate them with a semicolon(`;`).
7. Add **keywords** separated by commas, as in `game design, monograph`. Try to enter adequate keywords. If the item metadata were downloaded automatically review the keywords, as they are usually generic.
8. Add **publisher**.
9. Add **publication date** in the field `published`.
10. Make sure that the item has a **book cover**. If not either click `Download cover` (which will try to find a cover from online databases), or click `Generate cover` to create one based on the item's metadata.
11. Click OK to save these changes.
## Via Zotero (requires Accorder setup)
To export items via [Zotero][] do the following:
1. Select an item, multiple items, or a collection, with *valid file attachments*[^vfa] which are *stored locally* (not on the Zotero cloud).[^local]
2. Right click and select `Export Item(s)`.
3. In the new dialogue select a BibTeX format and check the box `Export Files`.
4. Click OK, and select destination and filename (e.g. `mycollection.bib`)
[^vfa]: For valid file attachments see [Accorder book extensions][].
[^local]: To check if your Zotero file attachments are stored locally double click on a given item, to open its attachment. If the item is on the cloud Zotero will automatically download the associated file to your local database.
To import the Zotero collection to Calibre do (for setting up accorder profiles see next section):
This command will build the library catalogue in JSON format. The catalogue includes a unique ID and metadata fields for every item of the library.
The file *should be named*`catalog.json`, and *should be placed* inside a Sandpoints project in the directory `root/data/books/catalog.json`. Or, it can be directly compiled at that directory:
Note: The catalogue file can be opened and viewed with any text editor. It is formatted in a single line. Some text editors feature tools that can auto-format JSON files so that they are more easily readable. For example, [Notepad++][] for Windows, features the plugin *JSTools* that can auto-format JSON.
[Notepad++]: https://notepad-plus-plus.org/downloads/ "Notepad++ is a free and open-source text editor for Windows."
# Deploy library
To deploy a library firstly use accorder to
- [build a library standalone web app](#build-a-portable-library), and
- [build a library catalogue](#build-library-catalogue).
1. Place the library catalogue at the folder `data/books/` of the project, as in:
```
/root/data/books/catalog.json
```
2. Build library standalone web app, and copy the entire contents of the Calibre library directory (including the `static` folder and `BROWSE_LIBRARY.html`) to ...
> For local projects the library can be copied to:
> ```
> /root/content/library/
> ```
> so that `BROWSE_LIBRARY.html` is at: `root/content/library/BROWSE_LIBRARY.html`
# Link library item inside Sandpoints articles
To reference a library item inside a Markdown entry of this project do:
```
.
```
`the-book-id` is a placeholder for the unique id of a library item, which is in the style of `625e5562-38bc-4497-adaa-5142ef810c4a`.
To find the unique ID of a library item, do either of the following:
- Open the library catalogue (`/root/data/books/catalog.json`) with a text editor such as [Notepad++][]. Search for the book that you want to reference, and copy its `_id` field.
- Open the [Library][] find the item you want to reference, and copy the last part of it's URL after `.../book/`.
The following example links to the library item at: `.../library/BROWSE_LIBRARY.html#/book/3ea44269-47eb-468b-906e-3104398aaa07`
Thus, the item unique id is: `3ea44269-47eb-468b-906e-3104398aaa07`.