zotero-categorise
Version:
A command-line tool to manage Zotero collections by placing items into specific collections based on their title, description, and tags.
121 lines (87 loc) • 3.85 kB
Markdown
# Zotero Categorise
A command-line tool to manage Zotero collections by placing items into specific collections based on their title, description, and tags.
## Configuration
To create a `zotero-cli.toml` file, follow these steps:
1. Open the terminal and create the `zotero-cli.toml` file using the `nano` text editor:
```bash
mkdir -p ~/.config/zotero-cli
nano ~/.config/zotero-cli/zotero-cli.toml
```
2. Inside the zotero-cli.toml file, add the following content:
```
api-key = "YOUR_ZOTERO_API_KEY"
group-id = 123
library-type = "group"
indent = 4
```
## Installation
To use this tool, you need to have Node.js installed on your system. You can install the required dependencies and run the tool with the following steps:
### Clone this repository to your local machine:
```
git clone https://github.com/OpenDevEd/Zotero-Categorise.git
cd Zotero-Categorise
npm install
```
### Binary
The package includes a binary `zotero-categorise`. You can install this with
```
npm build
npm link
```
If you do that, you can use `zotero-categorise` below.
## Usage
Help works in the usual way
```
zotero-categorise
zotero-categorise -h
zotero-categorise collection -h
zotero-categorise generate -h
zotero-categorise collectionByJson -h
```
### The `collection` command
You can use the `collection` command to place items into collections.
Here are the available options:
```
zotero-categorise collection -c <collection> -i <item...>
```
or
```
zotero-categorise collection -c zotero://select/groups/${Group-id}/collections/${CollectionId} -i zotero://select/Groups//${group-id}/items/${ItemId}
```
In this command, the option have this function:
- `-c, --collection <collection>`: The id of a collection, which has sub-collections in which you want to place the items.
- `-i, --item [item...]`: One or more Item Ids that you want to place in the collection.
- `--itemsfromcollection <collection>`: Process items in the provided collection.
- `--itemswithtag <tag>`: Process items with this tag.
- `--itemswithouttag <tag>`: Process items that do not have this tag.
- `--itemsfromlibrary`: Process all items in the library.
For example, if your collection structure is this:
```
Countries
- Sierra Leone
- Zambia
- Zimbabwe
```
Then by providing the collection id for 'Countries', items will be matched against Sierra Leone, Zambia, Zimbabwe, and placed in those collections.
### Generating Keyword-Collection Mapping
The `generate` command allows you to create a JSON file that maps keywords to collections. This mapping is useful for automating the categorization process by periodically scanning your Zotero items.
```
zotero-categorise generate -- -c [collection1] [collection2]
```
**Options:**
- `-g, --group [group]`: Specifies the Zotero group ID to work with.
- `-c, --collection [collection...]`: Lists the Zotero collection IDs to include in the mapping.
- `-n, --name [name]`: (Optional) Specifies the name of the JSON file that will be generated (default is 'list.json').
### Categorize Items from JSON File
The `collectionByJson` command enables you to categorize items from a JSON file into Zotero collections.
```
zotero-categorise collectionByJson -- -j [json file] -i [item...]
```
**Options:**
- `-j, --json [json]`: Specifies the JSON file that contains the keyword-collection mapping.
- `-i, --item [item...]`: One or more Item Ids that you want to categorize into collections.
- `--itemsfromcollection <collection>`: Process items in the provided collection.
- `--itemswithtag <tag>`: Process items with this tag.
- `--itemswithouttag <tag>`: Process items that do not have this tag.
- `--itemsfromlibrary`: Process all items in the library.
- `-t, --test`: Use test mode, which does not actually place items in the collection. This is useful for verification and testing.