{"id":27147378,"url":"https://github.com/pablocpas/epub_reader","last_synced_at":"2025-04-08T11:25:56.784Z","repository":{"id":285555458,"uuid":"958513308","full_name":"pablocpas/epub_reader","owner":"pablocpas","description":"A terminal-based EPUB reader built in Rust, featuring vim-like navigation","archived":false,"fork":false,"pushed_at":"2025-04-01T11:46:52.000Z","size":28,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-01T12:27:09.760Z","etag":null,"topics":["cli","command-line","ebook","epub-reader","reader","rust","terminal"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pablocpas.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-04-01T10:16:35.000Z","updated_at":"2025-04-01T11:46:55.000Z","dependencies_parsed_at":"2025-04-01T12:38:01.142Z","dependency_job_id":null,"html_url":"https://github.com/pablocpas/epub_reader","commit_stats":null,"previous_names":["pablocpas/epub_reader"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pablocpas%2Fepub_reader","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pablocpas%2Fepub_reader/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pablocpas%2Fepub_reader/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pablocpas%2Fepub_reader/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pablocpas","download_url":"https://codeload.github.com/pablocpas/epub_reader/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247831835,"owners_count":21003474,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","command-line","ebook","epub-reader","reader","rust","terminal"],"created_at":"2025-04-08T11:25:56.387Z","updated_at":"2025-04-08T11:25:56.777Z","avatar_url":"https://github.com/pablocpas.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# EPUB Reader\n\nA terminal-based EPUB reader written in Rust. This application allows you to read EPUB files directly in your terminal with a clean, navigable interface.\n\n## Features\n\n- Open and read EPUB 2.0 and 3.0 format books\n- Terminal-based user interface with vim-like navigation\n- Chapter navigation (next/previous/goto)\n- Table of contents view\n- Metadata display\n- Text rendering with basic formatting (headings, paragraphs, emphasis)\n- Keyboard shortcuts for easy navigation\n\n## Installation\n\n### Prerequisites\n\n- Rust and Cargo (install from [rustup.rs](https://rustup.rs/))\n\n### Building from Source\n\n1. Clone the repository:\n   ```\n   git clone https://github.com/yourusername/epub_reader.git\n   cd epub_reader\n   ```\n\n2. Build the project:\n   ```\n   cargo build --release\n   ```\n\n3. The executable will be available at `target/release/epub_reader`\n\n## Usage\n\nRun the application with an EPUB file as an argument:\n\n```\nepub_reader path/to/your/book.epub\n```\n\n## Navigation and Commands\n\n### Keyboard Shortcuts (Normal Mode)\n\n- `j`: Scroll down\n- `k`: Scroll up\n- `Ctrl+d`: Scroll half page down\n- `Ctrl+u`: Scroll half page up\n- `g`: Go to the beginning of the text\n- `G`: Go to the end of the text\n- `n`: Go to the next chapter\n- `p`: Go to the previous chapter\n- `:`: Enter command mode\n- `q`: Quit the application\n- `Esc`: Return to main view from TOC or metadata view\n\n### Command Mode\n\nEnter command mode by pressing `:` and then type one of the following commands:\n\n- `q` or `quit`: Exit the application\n- `n` or `next`: Go to the next chapter\n- `p` or `prev`: Go to the previous chapter\n- `g \u003cnumber\u003e` or `goto \u003cnumber\u003e`: Go to a specific chapter by number\n- `t` or `toc`: Show the table of contents\n- `m` or `meta`: Show the book metadata\n\nPress `Enter` to execute a command or `Esc` to cancel.\n\n## Project Structure\n\n- `src/main.rs`: Application entry point\n- `src/epub/mod.rs`: EPUB file parsing and handling\n- `src/navigation.rs`: Chapter navigation and TOC management\n- `src/metadata.rs`: EPUB metadata handling\n- `src/render/mod.rs`: XHTML to text rendering\n- `src/ui/mod.rs`: Terminal UI implementation\n- `src/errors.rs`: Error handling\n\n## Dependencies\n\n- `zip`: For handling EPUB files (which are ZIP archives)\n- `roxmltree`: XML parsing\n- `scraper`: HTML parsing\n- `thiserror`: Error handling\n- `ego-tree`: Tree data structures\n- `ratatui`: Terminal UI framework\n- `crossterm`: Terminal manipulation\n- `unicode-width`: Unicode text width calculations\n- `textwrap`: Text wrapping utilities\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpablocpas%2Fepub_reader","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpablocpas%2Fepub_reader","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpablocpas%2Fepub_reader/lists"}