audiobookshelf/client
Victor Da Luz 640c2f98b8 Add "Download by Chapters" tool for audiobooks
Adds a new tool in the item tools tab that splits a book's audio file
into per-chapter files using ffmpeg -c copy (no re-encoding) and
packages them as a ZIP download.

Key details:
- New GET /api/items/:id/download-chapters endpoint
- Accepts optional ?fileIno= to select which audio file to split when
  a book has multiple (e.g. m4b + mp3)
- Computes each file's start offset in the global chapter timeline and
  filters + re-bases chapter timestamps to be file-relative before
  splitting, handling the case where ABS stores chapters from all audio
  files with concatenated global timestamps
- Splits all chapters in parallel (ffmpeg -c copy per chapter) then
  streams the result as a ZIP
- Temp files written to MetadataPath/cache/items/:id/chapter-split-:ts
  with a timestamp suffix to prevent concurrent request collisions;
  cleaned up in a finally block regardless of success or failure
- UI shows a file selector dropdown when multiple audio files exist,
  with "Preparing..." state feedback during the request
- 10 new tests covering guard conditions and the chapter offset logic

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-14 17:24:01 -06:00
..
assets Add base style for button for cursor:pointer, update default btn bg and confirm yes btn color 2025-03-25 17:47:11 -05:00
components Add "Download by Chapters" tool for audiobooks 2026-04-14 17:24:01 -06:00
cypress Fix LazySeriesCard component test 2025-07-07 16:49:20 -05:00
layouts Remove providers prefetch, refresh on custom provider add/remove 2025-10-19 11:47:17 +03:00
middleware Add:Series filters #712 2022-10-29 15:33:38 -05:00
mixins Fix item edit modal show next/prev arrows when opening from Files or Match context menu item #4718 2025-10-08 14:52:14 -05:00
pages Update Confirm component to support allowHtml prompt option 2026-03-18 16:51:51 -05:00
players Update comments on matroska 2026-04-10 16:42:39 -05:00
plugins Merge pull request #5071 from pavel-miniutka/master 2026-02-22 16:19:19 -06:00
static Update material symbols icon font 2024-08-16 16:57:17 -05:00
store Remove custom providers from library fetch action 2025-10-19 11:40:40 +03:00
strings Add "Download by Chapters" tool for audiobooks 2026-04-14 17:24:01 -06:00
cypress.config.js Move test files to a separate directory 2024-04-30 11:30:00 +03:00
nuxt.config.js Implement new JWT auth 2025-06-29 17:22:58 -05:00
package-lock.json Version bump v2.33.1 2026-03-19 17:09:14 -05:00
package.json Version bump v2.33.1 2026-03-19 17:09:14 -05:00
postcss.config.js Use separate postcss.config and remove from nuxt.config, uninstall autoprefixer 2025-03-21 09:25:29 -05:00