|
2 | 2 |
|
3 | 3 | <div align="center"> |
4 | 4 |
|
| 5 | + |
5 | 6 |
|
6 | 7 | **The ultimate bridge for cross-platform reading and listening synchronization.** |
7 | 8 |
|
8 | | -[Features](#-features) • [How It Works](#-how-it-works) • [Quick Start](#-quick-start) • [Configuration](#-configuration) • [Web UI](#-web-interface) • [Troubleshooting](#-troubleshooting) |
9 | | - |
10 | | -</div> |
11 | | - |
12 | | ---- |
13 | | - |
14 | | -## 📖 What is it? |
15 | | - |
16 | | -**ABS-KoSync Enhanced** is a powerful, automated synchronization engine designed to unify your reading and listening experiences. It bridges the gap between audiobooks and ebooks, ensuring that whether you're listening on the go or reading on your e-reader, your progress is always perfectly aligned. |
17 | | - |
18 | | -### 🔄 Five-Way Synchronization |
19 | | - |
20 | | -The system keeps your progress in sync across all major platforms: |
21 | | - |
22 | | -| Platform | Type | Capability | |
23 | | -| :--- | :--- | :--- | |
24 | | -| **Audiobookshelf** | Audiobooks | Full Read/Write Sync | |
25 | | -| **KOReader / KOSync** | Ebooks | Full Read/Write Sync | |
26 | | -| **Storyteller** | Enhanced Reader | Full Read/Write Sync (REST API & SQLite) | |
27 | | -| **Booklore** | Library Management | Full Read/Write Sync | |
28 | | -| **Hardcover.app** | Book Tracking | Write-Only Tracking (Auto-Update Finished Status) | |
29 | | - |
30 | | ---- |
31 | | - |
32 | | -## ✨ Features |
33 | | - |
34 | | -### 🚀 Core Sync Engine |
35 | | -- **AI-Powered Alignment**: Uses Whisper AI transcription to accurately map audio timestamps to ebook text. |
36 | | -- **Multi-Platform Support**: Synchronize progress across five different ecosystems simultaneously. |
37 | | -- **Smart Conflict Resolution**: "Furthest progress wins" logic with built-in anti-regression protection. |
38 | | -- **Rich Positioning**: Support for XPath, CSS selectors, and EPUB CFI for pixel-perfect positioning. |
39 | | -- **Resumable Jobs**: Background transcription jobs resume automatically if interrupted. |
40 | | - |
41 | | -### 🖥️ Management Web UI |
42 | | -- **Real-Time Dashboard**: Monitor progress and sync status across all your books. |
43 | | -- **Advanced Matcher**: Manual mapping for complex titles or different editions. |
44 | | -- **Batch Processing**: Queue and process multiple books for synchronization in bulk. |
45 | | -- **Book Linker**: Automated workflow for Storyteller readaloud generation. |
46 | | -- **Dynamic Settings**: Configure your entire system from the Web UI with instant hot-reloading. |
47 | | - |
48 | | -### 🤖 Automation & Reliability |
49 | | -- **Background Daemon**: Configurable sync intervals for hands-off operation. |
50 | | -- **Auto-Organization**: Automatic addition to ABS collections and Booklore shelves. |
51 | | -- **Error Recovery**: Automatic retry logic for failed transcription or sync tasks. |
| 9 | +[](https://cporcellijr.github.io/abs-kosync-bridge/) |
| 10 | +[](LICENSE) |
| 11 | +[](https://github.com/cporcellijr/abs-kosync-bridge/releases) |
52 | 12 |
|
53 | 13 | --- |
54 | 14 |
|
55 | | -## 🛠️ How It Works |
| 15 | +### 📚 [Read the Full Documentation](https://cporcellijr.github.io/abs-kosync-bridge/) |
56 | 16 |
|
57 | | -The sync cycle ensures a seamless transition between platforms: |
| 17 | +</div> |
58 | 18 |
|
59 | | -```mermaid |
60 | | -graph TD |
61 | | - A[Start Sync Cycle] --> B[Fetch Progress from All Platforms] |
62 | | - B --> C{Identify Leader} |
63 | | - C -->|New Progress Found| D[Convert Position] |
64 | | - D --> E[Audio <--> Text Translation] |
65 | | - E --> F[Update All Participating Platforms] |
66 | | - F --> G[Save Final State] |
67 | | - G --> A |
68 | | -``` |
| 19 | +## 📖 What is it? |
69 | 20 |
|
70 | | -> [!NOTE] |
71 | | -> **Audio to Text Conversion**: The system extracts a snippet of text from the audiobook transcript at the current timestamp and performs a fuzzy search within the EPUB to find the corresponding ebook location. |
| 21 | +**ABS-KoSync Enhanced** is a powerful synchronization engine that bridges the gap between **Audiobookshelf** and **KOReader**. It ensures your reading and listening progress is always perfectly aligned, whether you're on your e-reader or listening on the go. |
72 | 22 |
|
73 | | ---- |
| 23 | +## ✨ Key Features |
74 | 24 |
|
75 | | -## 🚦 Quick Start |
| 25 | +- **Five-Way Sync**: Syncs Audiobookshelf, KOReader, Storyteller, Booklore, and Hardcover. |
| 26 | +- **AI-Powered**: Uses Whisper for precise audio-to-text alignment. |
| 27 | +- **Web UI**: Full management dashboard for tracking syncs and matching books. |
| 28 | +- **Self-Hosted**: Runs entirely in Docker on your own server. |
76 | 29 |
|
77 | | -### 1. Prepare Environment |
78 | | -```bash |
79 | | -mkdir abs-kosync && cd abs-kosync |
80 | | -mkdir data |
81 | | -``` |
82 | | - |
83 | | -### 2. Configure Docker Compose |
84 | | -Create a `docker-compose.yml` file. |
| 30 | +## 🚀 Quick Start |
85 | 31 |
|
86 | 32 | ```yaml |
87 | 33 | services: |
88 | 34 | abs-kosync: |
89 | 35 | image: ghcr.io/cporcellijr/abs-kosync-bridge:latest |
90 | | - container_name: abs_kosync |
91 | | - restart: unless-stopped |
92 | 36 | ports: |
93 | 37 | - "8080:5757" |
94 | 38 | environment: |
95 | 39 | - TZ=America/New_York |
96 | | - - ABS_SERVER=https://your-abs-server.com |
97 | | - - ABS_KEY=your_abs_api_token |
98 | | - - ABS_LIBRARY_ID=your_library_uuid |
| 40 | + # NOTE: All configuration is managed in the Web UI. |
99 | 41 | volumes: |
100 | | - # === REQUIRED === |
101 | | - - ./data:/data # App data (database, transcripts) |
102 | | - - /path/to/ebooks:/books # Your EPUB library |
103 | | - |
104 | | - # === OPTIONAL: Helper Workflows === |
105 | | - # Map these if you plan to use the "Book Linker" automation: |
106 | | - # - /path/to/ebooks:/linker_books # Source ebooks to copy from |
107 | | - # - /path/to/audiobooks:/audiobooks # Source audiobooks to copy from |
108 | | - # - /path/to/processing:/processing # Temp folder for Storyteller processing |
109 | | - # - /path/to/storyteller/library:/storyteller_ingest # Final Storyteller library destination |
110 | | - |
111 | | - # === OPTIONAL: Legacy Support === |
112 | | - # - /path/to/storyteller/data:/storyteller_data # Only if using SQLite sync mode |
113 | | -``` |
114 | | - |
115 | | -### 3. Deploy |
116 | | -```bash |
117 | | -docker compose up -d |
| 42 | + - ./data:/data |
| 43 | + - /books:/books |
118 | 44 | ``` |
119 | 45 |
|
120 | | -### 4. Configure via Web UI |
121 | | -Once the container is running, open `http://localhost:8080/settings`. You can configure all optional integrations (KOSync, Storyteller, Booklore, Hardcover) and sync behavior directly from the UI. **No container restart required!** |
| 46 | +For full installation instructions, checking logs, and advanced configuration, please visit the **[Documentation Site](https://cporcellijr.github.io/abs-kosync-bridge/)**. |
122 | 47 |
|
123 | 48 | --- |
124 | 49 |
|
125 | | -## ⚙️ Configuration |
126 | | - |
127 | | -While you can use environment variables in your `docker-compose.yml`, we recommend using the **Web Settings Page** for easier management. |
128 | | - |
129 | | -### 🔊 Audiobookshelf (Required) |
130 | | -| Variable | Description | |
131 | | -| :--- | :--- | |
132 | | -| `ABS_SERVER` | Your Audiobookshelf URL | |
133 | | -| `ABS_KEY` | API Token (Settings → Users) | |
134 | | -| `ABS_LIBRARY_ID` | The ID of the library to sync | |
135 | | - |
136 | | -### 🔧 Integration Options (Configurable via UI) |
137 | | -- **KOSync**: Connect your KOReader sync server. |
138 | | -- **Storyteller**: Link your Storyteller library (API or local DB). |
139 | | -- **Booklore**: Integrate with Calibre-Web/Booklore management. |
140 | | -- **Hardcover**: Automatically update your "Finished" status on Hardcover.app. |
141 | | -- **Sync Tuning**: Adjust thresholds, Whisper models, and sync intervals. |
142 | | - |
143 | | ---- |
144 | | - |
145 | | -## 🖥️ Web Interface |
146 | | - |
147 | | -Access the UI at `http://your-ip:8080`. |
148 | | - |
149 | | -- **Dashboard**: Overview of all active syncs and their current progress. |
150 | | -- **Settings**: Manage all configuration options with per-save hot-reloading. |
151 | | -- **Match Page**: Search for audiobooks and select their matching ebook file. |
152 | | -- **Batch Match**: Add multiple titles to a queue for automated processing. |
153 | | -- **Book Linker**: Automated Storyteller ingestion workflow. |
154 | | - |
155 | | ---- |
156 | | - |
157 | | -## ❓ Troubleshooting |
158 | | - |
159 | | -> [!TIP] |
160 | | -> **Check the Logs**: Documentation and live logs are available directly in the Web UI, or via `docker compose logs -f`. |
161 | | - |
162 | | -- **Transcription taking too long?** Try setting `WHISPER_MODEL=tiny` in the Settings page, or enable **GPU acceleration** (see below). |
163 | | -- **Books not showing up?** Ensure your `/books` volume is correctly mounted and readable. |
164 | | -- **Syncing backwards?** The system includes anti-regression, but you can "Clear Progress" for a book in the Dashboard to reset its state. |
165 | | - |
166 | | -### 🎮 GPU Acceleration (Optional) |
167 | | - |
168 | | -For faster transcription, you can enable NVIDIA GPU acceleration: |
169 | | - |
170 | | -1. Install [NVIDIA Container Toolkit](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html) |
171 | | -2. Add the GPU deploy section to your `docker-compose.yml`: |
172 | | - ```yaml |
173 | | - deploy: |
174 | | - resources: |
175 | | - reservations: |
176 | | - devices: |
177 | | - - driver: nvidia |
178 | | - count: 1 |
179 | | - capabilities: [gpu] |
180 | | - ``` |
181 | | -3. In the Settings page, set: |
182 | | - - **Whisper Device**: `cuda` (or `auto` to auto-detect) |
183 | | - - **Whisper Compute Type**: `float16` (optimal for GPU) |
184 | | - - **Whisper Model**: `small` or `medium` for better accuracy (GPU handles larger models faster) |
185 | | - |
186 | | ---- |
187 | | - |
188 | | -## 🤝 Contributing & Support |
189 | | - |
190 | | -Found a bug or have a suggestion? |
191 | | -1. Open an [Issue](https://github.com/cporcellijr/abs-kosync-bridge/issues) |
192 | | -2. Submit a [Pull Request](https://github.com/cporcellijr/abs-kosync-bridge/pulls) |
193 | | - |
194 | | -### 📝 Contribution Guidelines |
195 | | -We follow a structured workflow to ensure stability: |
196 | | -- **`main`**: Stable release branch. Accepts merges **only** from `dev`. |
197 | | -- **`dev`**: Development branch. Target this branch for all Pull Requests. |
198 | | -- **Feature Branches**: Create your branch from `dev` (e.g., `feature/new-thing` or `fix/bug-name`). |
199 | | - |
200 | | -> [!IMPORTANT] |
201 | | -> **PRs targeting `main` directly will be automatically blocked.** Please ensure your PR targets `dev`. |
202 | | - |
203 | | ---- |
204 | | - |
205 | | -<p align="center"> |
206 | | - Generated by Antigravity AI |
207 | | -</p> |
| 50 | +<div align="center"> |
| 51 | + <sub>Generated by Antigravity AI</sub> |
| 52 | +</div> |
0 commit comments