| Name | libro-book JSON |
| Version |
0.6.1
JSON |
| download |
| home_page | None |
| Summary | A command-line tool to track books read |
| upload_time | 2025-09-01 21:01:18 |
| maintainer | None |
| docs_url | None |
| author | None |
| requires_python | >=3.10 |
| license | None |
| keywords |
books
library
reading
|
| VCS |
 |
| bugtrack_url |
|
| requirements |
No requirements were recorded.
|
| Travis-CI |
No Travis.
|
| coveralls test coverage |
No coveralls.
|
# Libro
๐ Libro: A terminal-based tool to track your reading history, with your data stored locally in a SQLite database.
## Core Concepts
Libro separates **books** and **reviews** to give you flexibility in how you track your reading:
- **Books**: Store information about the book itself (title, author, pages, genre, publication year)
- **Reviews**: Track your personal reading experience (date read, rating, review text)
This separation allows you to:
- Add books to your database without having read them yet
- Add multiple reviews for the same book (re-reads)
- Maintain a clean library of books separate from your reading history
## Interface
Libro provides two ways to interact with your reading data:
**Interactive TUI (Default):**
- `libro` - Launch the interactive terminal interface with search and navigation
- Navigate with arrow keys, search with `/`, add books with `a`, view lists with `l`
- Press `q` to quit, `?` for help with key bindings
**Command Line Interface:**
- `libro report` - Reading history table
- `libro report --author` - Author statistics (most read authors)
- `libro report --author "Name"` - Books/reviews by specific author
- `libro report --chart` - Yearly reading chart
- `libro report 123` - Book/review details for review id
- `libro add` - Add book + review
- `libro book` - Book management (show, add, edit)
- `libro review` - Review management (show, add, edit)
- `libro list` - Reading list management
## Usage
**Add books and review:**: `libro add`
### Book Management
Add book only (no review): `libro book add`
Show recent books: `libro book` (shows latest 20 books by default)
Show specific book: `libro book 42`
Edit book details only: `libro book edit 42`
**Search and filter books:**
Show books by author: `libro book --author "Stephen King"`
Show books by title: `libro book --title "Foundation"`
Show books published in specific year: `libro book --year 2024`
All search options support partial matching, so `--author "King"` will find "Stephen King", "Tabitha King", etc.
### Review Management
Show recent reviews: `libro review` (shows latest 20 reviews by default)
Show specific review: `libro review 123`
Add review to existing book: `libro review add 42`
Edit review details only: `libro review edit 123`
**Search and filter reviews:**
Show reviews by author: `libro review --author "Stephen King"` (searches book authors)
Show reviews by book title: `libro review --title "Foundation"` (searches book titles)
Show reviews from specific year: `libro review --year 2024` (searches by date_read)
All search options support partial matching, and year filtering uses the date the review was made, not the book's publication year.
### Reading Lists
Create a reading list: `libro list create "My Reading List" --description "Books to read"`
Show all reading lists: `libro list show`
Show specific list: `libro list show 1`
Import books to a new list: `libro list import books.csv --name "Sci-Fi Classics" --description "Science fiction must-reads"`
See: `libro --help` for more information.
### Examples
#### Interactive TUI Interface
The default interface is an interactive terminal application with search capabilities:
- Launch with `libro` (no arguments)
- Use arrow keys to navigate between books
- Press `/` to search by title or author
- Press `Enter` to view book details
- Press `a` to add new books
- Press `l` to view reading lists
#### CLI Report View
Access the traditional table view with `libro report`:
```
โฏ libro report
Books Read in 2025
โโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโณโโโโโโโโโโโโโโโ
โ ID โ Title โ Author โ Rating โ Date Read โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ Fiction โ โ โ โ โ
โ 1 โ Cujo โ Stephen King โ 3 โ Jan 05, 2025 โ
โ 585 โ The Midnight Library โ Matt Haig โ 5 โ Jan 13, 2025 โ
โ 587 โ The Maid โ Nita Prose โ 4 โ Jan 20, 2025 โ
โ 589 โ Into the Water โ Paula Hawkins โ 2 โ Feb 02, 2025 โ
โ 584 โ Salem's Lot โ Stephen King โ 3 โ Mar 12, 2025 โ
โ 595 โ The Thursday Murder Club โ Richard Osman โ 3 โ Mar 20, 2025 โ
โ 596 โ Remarkably Bright Creatures โ Shelby Van Pelt โ 5 โ Mar 27, 2025 โ
โ 598 โ Colorless Tsukuru Tazaki โ Haruki Murakami โ 3 โ Apr 09, 2025 โ
โ 599 โ Ten โ Gretchen McNeil โ 3 โ Apr 16, 2025 โ
โ โ โ โ โ โ
โ Nonfiction โ โ โ โ โ
โ 586 โ The Art Thief โ Michael Finkel โ 4 โ Jan 14, 2025 โ
โ 588 โ All the Pieces Matter โ Jonathan Abrams โ 3 โ Jan 27, 2025 โ
โ 590 โ Supercommunicators โ Charles Duhigg โ 4 โ Feb 04, 2025 โ
โ 593 โ Leonardo da Vinci โ Walter Isaacson โ 3 โ Mar 02, 2025 โ
โ 594 โ The Leap to Leader โ Adam Bryant โ 3 โ Mar 08, 2025 โ
โ 597 โ Team of Rivals โ Doris Kearns Goodwin โ 3 โ Apr 06, 2025 โ
โโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโดโโโโโโโโโโโโโโโ
```
#### Books by Year Chart
```
โฏ libro report --chart
Books Read by Year
Year Count Bar
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
2013 3 โโโโ
2014 4 โโโโโโ
2015 11 โโโโโโโโโโโโโโโโโ
2016 30 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
2017 21 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
2018 27 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
2019 29 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
2020 27 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
2021 28 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
2022 27 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
2023 32 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
2024 30 โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
2025 17 โโโโโโโโโโโโโโโโโโโโโโโโโโ
```
#### Author Report and Filtering
Show author statistics (most read authors):
```
โฏ libro report --author
Most Read Authors
Author Books Read
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Stephen King 15
George R.R. Martin 5
Timothy Zahn 4
Grady Hendrix 4
Andy Weir 4
William Zinsser 3
Roald Dahl 3
Riley Sager 3
Philip K. Dick 3
Neil Gaiman 3
Natalie D. Richards 3
Lucy Foley 3
Cory Doctorow 3
```
Show books/reviews by specific author:
```
โฏ libro report --author "Stephen King"
Books by Stephen King
โโโโโโณโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโณโโโโโโโโโณโโโโโโโโโโโโโโโ
โ ID โ Title โ Author โ Rating โ Date Read โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ 1 โ Cujo โ Stephen King โ 3 โ Jan 05, 2025 โ
โ 584โ Salem's Lot โ Stephen King โ 3 โ Mar 12, 2025 โ
โโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโดโโโโโโโโโดโโโโโโโโโโโโโโโ
```
## Reading Lists
Reading lists allow you to organize books into curated collections. You can create lists for different genres, themes, or reading goals.
### Creating and Managing Lists
Create a new reading list:
```bash
libro list create "2025 Reading Goals" --description "Books I want to read this year"
```
View all your reading lists:
```bash
โฏ libro list show
Reading Lists
โโโโโโณโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโณโโโโโโโณโโโโโโโโโณโโโโโโโโโโโโโโโโโโโ
โ ID โ Name โ Description โ Total Books โ Read โ Unread โ Progress โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ 1 โ Sci-Fi Classics โ Science fiction must-reads โ 50 โ 12 โ 38 โ โโโโโโโโโโ 24.0% โ
โ 2 โ Horror Collection โ Spine-tingling tales โ 30 โ 8 โ 22 โ โโโโโโโโโโ 26.7% โ
โ 3 โ Literary Classics โ Timeless masterpieces โ 45 โ 15 โ 30 โ โโโโโโโโโโ 33.3% โ
โโโโโโดโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโดโโโโโโโดโโโโโโโโโดโโโโโโโโโโโโโโโโโโโ
Use 'libro list show <id>' to see books in a specific list
```
View books in a specific list:
```bash
โฏ libro list show 1
๐ Sci-Fi Classics - Science fiction must-reads
โโโโโโณโโโโโโโโโณโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโโโโโโโโโโณโโโโโโโโโโโโโโโโโโณโโโโโโโโโณโโโโโโโโโโโโโ
โ ID โ Status โ Title โ Author โ Genre โ Rating โ Date Read โ
โกโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฉ
โ 42 โ ๐ โ Foundation โ Isaac Asimov โ science fiction โ โ โ โ โ
โ 43 โ ๐ โ Dune โ Frank Herbert โ science fiction โ โ โ โ โ
โ 44 โ โ
โ The Left Hand of Darkness โ Ursula K. Le Guin โ science fiction โ 5 โ 2024-12-15 โ
โ 45 โ โ
โ Neuromancer โ William Gibson โ science fiction โ 4 โ 2024-11-20 โ
โโโโโโดโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโดโโโโโโโโโดโโโโโโโโโโโโโ
๐ Progress: 12 read, 38 unread (24.0% complete)
```
### Adding Books to Lists
Add a new book to an existing list:
```bash
libro list add 1
```
This will prompt you to enter book details interactively.
### Importing Books to Lists
Import books from a CSV file and create a new list at the same time:
```bash
libro list import books.csv --name "Mystery Novels" --description "Page-turners and whodunits"
```
Import books to an existing list:
```bash
libro list import more-books.csv --id 1
```
**CSV Format**: The CSV file should have the following columns in order:
- Title
- Author
- Publication Year (optional)
- Pages (optional)
- Genre (optional)
Example CSV:
```csv
Title,Author,Publication Year,Pages,Genre
The Martian,Andy Weir,2011,369,science fiction
Klara and the Sun,Kazuo Ishiguro,2021,303,literary fiction
```
### List Management
Edit a list's name or description:
```bash
libro list edit 1 --name "Updated Name" --description "New description"
```
Add a book to a list:
```bash
libro list add 1 42
```
Remove a book from a list:
```bash
libro list remove 1 42
```
Delete an entire list:
```bash
libro list delete 1
```
View statistics for all lists:
```bash
libro list stats
```
View statistics for a specific list:
```bash
libro list stats 1
```
## Install
Libro is packaged as `libro-book` on PyPI.
```
pip install libro-book
```
You can also clone this repository and install it locally:
```
git clone https://github.com/mkaz/libro.git
cd libro
pip install -e .
```
## Setup
On first run, libro will create a `libro.db` database file based on database location. It will prompt for confirmation to proceed which also shows the location where the file will be created.
**Database locations:**
The following order is used to determine the database location:
1. Using the `--db` flag on command-line.
2. `libro.db` in current directory
3. Environment variable `LIBRO_DB` to specify custom file/location
4. Finally, the user's platform-specific data directory
* Linux: `~/.local/share/libro/libro.db`
* macOS: `~/Library/Application Support/libro/libro.db`
* Windows: `%APPDATA%\libro\libro.db`
For example, if you want to create a new database file in the current directory, you can use the following command:
```
libro --db ./libro.db
```
### Import from Goodreads
Libro can import your reading history from a Goodreads export CSV file.
```
libro import goodreads_library_export.csv
```
There is a `genre` field that accepts any string value, but this data is not available in the Goodreads export. You can edit books to add or change the genre after import.
# Database Schema
## Books table
| Field | Type | Description |
|-------|------|-------------|
| id | primary key | Unique identifier |
| title | string | Book title |
| author | string | Book author |
| pages | int | Number of pages in book |
| pub_year | int | Year book was published |
| genre | string | Genre (any string value) |
## Reviews table
| Field | Type | Description |
|-------|------|-------------|
| id | primary key | Unique identifier |
| book_id | foreign key | Book identifier |
| date_read | date | Date book was read |
| rating | float | Number between 0 and 5 |
| review | text | Review of book |
## Reading Lists table
| Field | Type | Description |
|-------|------|-------------|
| id | primary key | Unique identifier |
| name | string | Reading list name (unique) |
| description | string | Optional description |
| created_date | date | Date the list was created |
## Reading List Books table
| Field | Type | Description |
|-------|------|-------------|
| id | primary key | Unique identifier |
| list_id | foreign key | Reading list identifier |
| book_id | foreign key | Book identifier |
| added_date | date | Date book was added to list |
| priority | int | Priority/order in list (default: 0) |
# Changelog
See [GitHub Releases](https://github.com/mkaz/libro/releases) for the changelog.
Raw data
{
"_id": null,
"home_page": null,
"name": "libro-book",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": null,
"keywords": "books, library, reading",
"author": null,
"author_email": "Marcus Kazmierczak <marcus@mkaz.com>",
"download_url": "https://files.pythonhosted.org/packages/2f/b9/279d1cef05c281f84314261acc29475b356f4dc0fb8ed7e48a31d145695f/libro_book-0.6.1.tar.gz",
"platform": null,
"description": "# Libro\n\n\ud83d\udcda Libro: A terminal-based tool to track your reading history, with your data stored locally in a SQLite database.\n\n## Core Concepts\n\nLibro separates **books** and **reviews** to give you flexibility in how you track your reading:\n\n- **Books**: Store information about the book itself (title, author, pages, genre, publication year)\n- **Reviews**: Track your personal reading experience (date read, rating, review text)\n\nThis separation allows you to:\n- Add books to your database without having read them yet\n- Add multiple reviews for the same book (re-reads)\n- Maintain a clean library of books separate from your reading history\n\n## Interface\n\nLibro provides two ways to interact with your reading data:\n\n**Interactive TUI (Default):**\n- `libro` - Launch the interactive terminal interface with search and navigation\n- Navigate with arrow keys, search with `/`, add books with `a`, view lists with `l`\n- Press `q` to quit, `?` for help with key bindings\n\n**Command Line Interface:**\n- `libro report` - Reading history table \n- `libro report --author` - Author statistics (most read authors)\n- `libro report --author \"Name\"` - Books/reviews by specific author \n- `libro report --chart` - Yearly reading chart\n- `libro report 123` - Book/review details for review id\n- `libro add` - Add book + review\n- `libro book` - Book management (show, add, edit)\n- `libro review` - Review management (show, add, edit)\n- `libro list` - Reading list management\n\n## Usage\n\n**Add books and review:**: `libro add`\n\n\n### Book Management\n\nAdd book only (no review): `libro book add`\n\nShow recent books: `libro book` (shows latest 20 books by default)\n\nShow specific book: `libro book 42`\n\nEdit book details only: `libro book edit 42`\n\n**Search and filter books:**\n\nShow books by author: `libro book --author \"Stephen King\"`\n\nShow books by title: `libro book --title \"Foundation\"`\n\nShow books published in specific year: `libro book --year 2024`\n\nAll search options support partial matching, so `--author \"King\"` will find \"Stephen King\", \"Tabitha King\", etc.\n\n\n### Review Management\n\nShow recent reviews: `libro review` (shows latest 20 reviews by default)\n\nShow specific review: `libro review 123`\n\nAdd review to existing book: `libro review add 42`\n\nEdit review details only: `libro review edit 123`\n\n**Search and filter reviews:**\n\nShow reviews by author: `libro review --author \"Stephen King\"` (searches book authors)\n\nShow reviews by book title: `libro review --title \"Foundation\"` (searches book titles)\n\nShow reviews from specific year: `libro review --year 2024` (searches by date_read)\n\nAll search options support partial matching, and year filtering uses the date the review was made, not the book's publication year.\n\n### Reading Lists\n\nCreate a reading list: `libro list create \"My Reading List\" --description \"Books to read\"`\n\nShow all reading lists: `libro list show`\n\nShow specific list: `libro list show 1`\n\nImport books to a new list: `libro list import books.csv --name \"Sci-Fi Classics\" --description \"Science fiction must-reads\"`\n\nSee: `libro --help` for more information.\n\n### Examples\n\n#### Interactive TUI Interface\n\nThe default interface is an interactive terminal application with search capabilities:\n\n- Launch with `libro` (no arguments)\n- Use arrow keys to navigate between books\n- Press `/` to search by title or author\n- Press `Enter` to view book details\n- Press `a` to add new books\n- Press `l` to view reading lists\n\n#### CLI Report View\n\nAccess the traditional table view with `libro report`:\n\n```\n\u276f libro report\n Books Read in 2025\n\u250f\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2533\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2533\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2533\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2533\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2513\n\u2503 ID \u2503 Title \u2503 Author \u2503 Rating \u2503 Date Read \u2503\n\u2521\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2547\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2547\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2547\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2547\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2529\n\u2502 Fiction \u2502 \u2502 \u2502 \u2502 \u2502\n\u2502 1 \u2502 Cujo \u2502 Stephen King \u2502 3 \u2502 Jan 05, 2025 \u2502\n\u2502 585 \u2502 The Midnight Library \u2502 Matt Haig \u2502 5 \u2502 Jan 13, 2025 \u2502\n\u2502 587 \u2502 The Maid \u2502 Nita Prose \u2502 4 \u2502 Jan 20, 2025 \u2502\n\u2502 589 \u2502 Into the Water \u2502 Paula Hawkins \u2502 2 \u2502 Feb 02, 2025 \u2502\n\u2502 584 \u2502 Salem's Lot \u2502 Stephen King \u2502 3 \u2502 Mar 12, 2025 \u2502\n\u2502 595 \u2502 The Thursday Murder Club \u2502 Richard Osman \u2502 3 \u2502 Mar 20, 2025 \u2502\n\u2502 596 \u2502 Remarkably Bright Creatures \u2502 Shelby Van Pelt \u2502 5 \u2502 Mar 27, 2025 \u2502\n\u2502 598 \u2502 Colorless Tsukuru Tazaki \u2502 Haruki Murakami \u2502 3 \u2502 Apr 09, 2025 \u2502\n\u2502 599 \u2502 Ten \u2502 Gretchen McNeil \u2502 3 \u2502 Apr 16, 2025 \u2502\n\u2502 \u2502 \u2502 \u2502 \u2502 \u2502\n\u2502 Nonfiction \u2502 \u2502 \u2502 \u2502 \u2502\n\u2502 586 \u2502 The Art Thief \u2502 Michael Finkel \u2502 4 \u2502 Jan 14, 2025 \u2502\n\u2502 588 \u2502 All the Pieces Matter \u2502 Jonathan Abrams \u2502 3 \u2502 Jan 27, 2025 \u2502\n\u2502 590 \u2502 Supercommunicators \u2502 Charles Duhigg \u2502 4 \u2502 Feb 04, 2025 \u2502\n\u2502 593 \u2502 Leonardo da Vinci \u2502 Walter Isaacson \u2502 3 \u2502 Mar 02, 2025 \u2502\n\u2502 594 \u2502 The Leap to Leader \u2502 Adam Bryant \u2502 3 \u2502 Mar 08, 2025 \u2502\n\u2502 597 \u2502 Team of Rivals \u2502 Doris Kearns Goodwin \u2502 3 \u2502 Apr 06, 2025 \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n```\n\n\n#### Books by Year Chart\n\n```\n\u276f libro report --chart\n\n Books Read by Year\n\n Year Count Bar\n \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n 2013 3 \u2584\u2584\u2584\u2584\n 2014 4 \u2584\u2584\u2584\u2584\u2584\u2584\n 2015 11 \u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\n 2016 30 \u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\n 2017 21 \u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\n 2018 27 \u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\n 2019 29 \u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\n 2020 27 \u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\n 2021 28 \u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\n 2022 27 \u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\n 2023 32 \u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\n 2024 30 \u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\n 2025 17 \u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\n```\n\n#### Author Report and Filtering\n\nShow author statistics (most read authors):\n```\n\u276f libro report --author\n\n Most Read Authors\n\n Author Books Read\n \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n Stephen King 15\n George R.R. Martin 5\n Timothy Zahn 4\n Grady Hendrix 4\n Andy Weir 4\n William Zinsser 3\n Roald Dahl 3\n Riley Sager 3\n Philip K. Dick 3\n Neil Gaiman 3\n Natalie D. Richards 3\n Lucy Foley 3\n Cory Doctorow 3\n```\n\nShow books/reviews by specific author:\n```\n\u276f libro report --author \"Stephen King\"\n\n Books by Stephen King\n\u250f\u2501\u2501\u2501\u2501\u2533\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2533\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2533\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2533\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2513\n\u2503 ID \u2503 Title \u2503 Author \u2503 Rating \u2503 Date Read \u2503\n\u2521\u2501\u2501\u2501\u2501\u2547\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2547\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2547\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2547\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2529\n\u2502 1 \u2502 Cujo \u2502 Stephen King \u2502 3 \u2502 Jan 05, 2025 \u2502\n\u2502 584\u2502 Salem's Lot \u2502 Stephen King \u2502 3 \u2502 Mar 12, 2025 \u2502\n\u2514\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n```\n\n## Reading Lists\n\nReading lists allow you to organize books into curated collections. You can create lists for different genres, themes, or reading goals.\n\n### Creating and Managing Lists\n\nCreate a new reading list:\n```bash\nlibro list create \"2025 Reading Goals\" --description \"Books I want to read this year\"\n```\n\nView all your reading lists:\n```bash\n\u276f libro list show\n\n Reading Lists\n\u250f\u2501\u2501\u2501\u2501\u2533\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2533\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2533\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2533\u2501\u2501\u2501\u2501\u2501\u2501\u2533\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2533\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2513\n\u2503 ID \u2503 Name \u2503 Description \u2503 Total Books \u2503 Read \u2503 Unread \u2503 Progress \u2503\n\u2521\u2501\u2501\u2501\u2501\u2547\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2547\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2547\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2547\u2501\u2501\u2501\u2501\u2501\u2501\u2547\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2547\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2529\n\u2502 1 \u2502 Sci-Fi Classics \u2502 Science fiction must-reads \u2502 50 \u2502 12 \u2502 38 \u2502 \u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 24.0% \u2502\n\u2502 2 \u2502 Horror Collection \u2502 Spine-tingling tales \u2502 30 \u2502 8 \u2502 22 \u2502 \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591 26.7% \u2502\n\u2502 3 \u2502 Literary Classics \u2502 Timeless masterpieces \u2502 45 \u2502 15 \u2502 30 \u2502 \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591 33.3% \u2502\n\u2514\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n\nUse 'libro list show <id>' to see books in a specific list\n```\n\nView books in a specific list:\n```bash\n\u276f libro list show 1\n\n \ud83d\udcda Sci-Fi Classics - Science fiction must-reads\n\u250f\u2501\u2501\u2501\u2501\u2533\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2533\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2533\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2533\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2533\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2533\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2513\n\u2503 ID \u2503 Status \u2503 Title \u2503 Author \u2503 Genre \u2503 Rating \u2503 Date Read \u2503\n\u2521\u2501\u2501\u2501\u2501\u2547\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2547\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2547\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2547\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2547\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2547\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2529\n\u2502 42 \u2502 \ud83d\udcd6 \u2502 Foundation \u2502 Isaac Asimov \u2502 science fiction \u2502 \u2014 \u2502 \u2014 \u2502\n\u2502 43 \u2502 \ud83d\udcd6 \u2502 Dune \u2502 Frank Herbert \u2502 science fiction \u2502 \u2014 \u2502 \u2014 \u2502\n\u2502 44 \u2502 \u2705 \u2502 The Left Hand of Darkness \u2502 Ursula K. Le Guin \u2502 science fiction \u2502 5 \u2502 2024-12-15 \u2502\n\u2502 45 \u2502 \u2705 \u2502 Neuromancer \u2502 William Gibson \u2502 science fiction \u2502 4 \u2502 2024-11-20 \u2502\n\u2514\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n\n\ud83d\udcca Progress: 12 read, 38 unread (24.0% complete)\n```\n\n### Adding Books to Lists\n\nAdd a new book to an existing list:\n```bash\nlibro list add 1\n```\n\nThis will prompt you to enter book details interactively.\n\n### Importing Books to Lists\n\nImport books from a CSV file and create a new list at the same time:\n```bash\nlibro list import books.csv --name \"Mystery Novels\" --description \"Page-turners and whodunits\"\n```\n\nImport books to an existing list:\n```bash\nlibro list import more-books.csv --id 1\n```\n\n**CSV Format**: The CSV file should have the following columns in order:\n- Title\n- Author \n- Publication Year (optional)\n- Pages (optional)\n- Genre (optional)\n\nExample CSV:\n```csv\nTitle,Author,Publication Year,Pages,Genre\nThe Martian,Andy Weir,2011,369,science fiction\nKlara and the Sun,Kazuo Ishiguro,2021,303,literary fiction\n```\n\n### List Management\n\nEdit a list's name or description:\n```bash\nlibro list edit 1 --name \"Updated Name\" --description \"New description\"\n```\n\nAdd a book to a list:\n```bash\nlibro list add 1 42\n```\n\nRemove a book from a list:\n```bash\nlibro list remove 1 42\n```\n\nDelete an entire list:\n```bash\nlibro list delete 1\n```\n\nView statistics for all lists:\n```bash\nlibro list stats\n```\n\nView statistics for a specific list:\n```bash\nlibro list stats 1\n```\n\n## Install\n\nLibro is packaged as `libro-book` on PyPI.\n\n```\npip install libro-book\n```\n\nYou can also clone this repository and install it locally:\n\n```\ngit clone https://github.com/mkaz/libro.git\ncd libro\npip install -e .\n```\n\n## Setup\n\nOn first run, libro will create a `libro.db` database file based on database location. It will prompt for confirmation to proceed which also shows the location where the file will be created.\n\n**Database locations:**\n\nThe following order is used to determine the database location:\n\n1. Using the `--db` flag on command-line.\n\n2. `libro.db` in current directory\n\n3. Environment variable `LIBRO_DB` to specify custom file/location\n\n4. Finally, the user's platform-specific data directory\n * Linux: `~/.local/share/libro/libro.db`\n * macOS: `~/Library/Application Support/libro/libro.db`\n * Windows: `%APPDATA%\\libro\\libro.db`\n\n\nFor example, if you want to create a new database file in the current directory, you can use the following command:\n\n```\nlibro --db ./libro.db\n```\n\n### Import from Goodreads\n\nLibro can import your reading history from a Goodreads export CSV file.\n\n```\nlibro import goodreads_library_export.csv\n```\n\nThere is a `genre` field that accepts any string value, but this data is not available in the Goodreads export. You can edit books to add or change the genre after import.\n\n# Database Schema\n\n## Books table\n\n| Field | Type | Description |\n|-------|------|-------------|\n| id | primary key | Unique identifier |\n| title | string | Book title |\n| author | string | Book author |\n| pages | int | Number of pages in book |\n| pub_year | int | Year book was published |\n| genre | string | Genre (any string value) |\n\n## Reviews table\n\n| Field | Type | Description |\n|-------|------|-------------|\n| id | primary key | Unique identifier |\n| book_id | foreign key | Book identifier |\n| date_read | date | Date book was read |\n| rating | float | Number between 0 and 5 |\n| review | text | Review of book |\n\n## Reading Lists table\n\n| Field | Type | Description |\n|-------|------|-------------|\n| id | primary key | Unique identifier |\n| name | string | Reading list name (unique) |\n| description | string | Optional description |\n| created_date | date | Date the list was created |\n\n## Reading List Books table\n\n| Field | Type | Description |\n|-------|------|-------------|\n| id | primary key | Unique identifier |\n| list_id | foreign key | Reading list identifier |\n| book_id | foreign key | Book identifier |\n| added_date | date | Date book was added to list |\n| priority | int | Priority/order in list (default: 0) |\n\n# Changelog\n\nSee [GitHub Releases](https://github.com/mkaz/libro/releases) for the changelog.\n\n",
"bugtrack_url": null,
"license": null,
"summary": "A command-line tool to track books read",
"version": "0.6.1",
"project_urls": {
"Documentation": "https://github.com/mkaz/libro",
"Issues": "https://github.com/mkaz/libro/issues",
"Repository": "https://github.com/mkaz/libro"
},
"split_keywords": [
"books",
" library",
" reading"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "7719b485fd8c7d77039e2d790c3a0fce12776968f7d73ea0458c97671ea67cd6",
"md5": "fbff170f4c171407cc4bc07cf816d068",
"sha256": "1955ac9d4451eeb1b1e51c47196bd4ccde3b4f98136a81adcfd30fe09a65f0ca"
},
"downloads": -1,
"filename": "libro_book-0.6.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "fbff170f4c171407cc4bc07cf816d068",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 49421,
"upload_time": "2025-09-01T21:01:16",
"upload_time_iso_8601": "2025-09-01T21:01:16.907263Z",
"url": "https://files.pythonhosted.org/packages/77/19/b485fd8c7d77039e2d790c3a0fce12776968f7d73ea0458c97671ea67cd6/libro_book-0.6.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "2fb9279d1cef05c281f84314261acc29475b356f4dc0fb8ed7e48a31d145695f",
"md5": "10b15eaa425d2746d1039c1ec6cf95e7",
"sha256": "2ad88f631df0a207871bd8ed3322b0b694d6c5d7d0b99b4e94876fd29703d015"
},
"downloads": -1,
"filename": "libro_book-0.6.1.tar.gz",
"has_sig": false,
"md5_digest": "10b15eaa425d2746d1039c1ec6cf95e7",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 73031,
"upload_time": "2025-09-01T21:01:18",
"upload_time_iso_8601": "2025-09-01T21:01:18.005693Z",
"url": "https://files.pythonhosted.org/packages/2f/b9/279d1cef05c281f84314261acc29475b356f4dc0fb8ed7e48a31d145695f/libro_book-0.6.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-09-01 21:01:18",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "mkaz",
"github_project": "libro",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "libro-book"
}