Home

Awesome

<p align="center"> <a href="" rel="noopener"> <img width=200px height=200px src="../assets/logos/logo.png?raw=true" alt="Project logo"></a> </p> <h3 align="center">Bragibooks</h3> <div align="center">

Status GitHub Issues GitHub Pull Requests License Docker Docker Pulls Docker Image Size (latest by date) Docker Image Version (latest by date) CodeFactor Grade

<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->

All Contributors

<!-- ALL-CONTRIBUTORS-BADGE:END --> </div>
<p align="center"> An audiobook library cleanup & management app, written as a frontend for web use of <a href="https://github.com/djdembeck/m4b-merge">m4b-merge</a>. <br> </p>

📝 Table of Contents

🧐 About <a name = "about"></a>

Bragi - (god of poetry in Norse mythology): Bragibooks provides a minimal and straightforward webserver that you can run remotely or locally on your server. Since Bragibooks runs in a docker, you no longer need to install dependencies on whichever OS you are on. You can

Some basics of what Bragi does:

Screens

Folder/file selectionASIN input
file-selectionasin-auto-search
Folder/file selectionPost-proccess overview
asin-custom-searchpost-process

🏁 Getting Started <a name = "getting_started"></a>

You can either install this project directly or run it prepackaged in Docker.

Prerequisites

Docker

Direct (Gunicorn)

Installing

Docker

To run Bragibooks as a container, you need to pass some paramaters in the run command:

ParameterFunction
-v /path/to/input:/inputInput folder
-v /path/to/output:/outputOutput folder
-v /appdata/bragibooks/config:/configPersistent config storage
-p 8000:8000/tcpPort for your browser to use
-e LOG_LEVEL=WARNINGChoose any logging level
-e DEBUG=FalseTurn django debug on or off (default False)
-e UID=99User ID to run the container as (default 99)
-e GID=100Group ID to run the container as (default 100)
-e CELERY_WORKERS=1The number or celery workers for processing books (default 1)
-e CSRF_TRUSTED_ORIGINS=https://bragibooks.mydomain.comDomains to trust if bragibooks is hosted behind a reverse proxy.

Which all together should look like:

docker run --rm -d --name bragibooks -v /path/to/input:/input -v /path/to/output:/output -v /appdata/bragibooks/config:/config -p 8000:8000/tcp -e LOG_LEVEL=WARNING ghcr.io/djdembeck/bragibooks:main

Docker Compose

version: '3'

services:
  bragi:
    image: ghcr.io/djdembeck/bragibooks:main
    container_name: bragibooks
    environment:
      - CSRF_TRUSTED_ORIGINS=https://bragibooks.mydomain.com
      - LOG_LEVEL=INFO
      - DEBUG=False
      - UID=1000
      - GID=1000
    volumes:
      - path/to/config:/config
      - path/to/input:/input
      - path/to/output/output:/output
      - path/to/done:/done
    ports:
      - 8000:8000
    restart: unless-stopped

Direct Build (Gunicorn)

🎈 Usage <a name="usage"></a>

The Bragibooks process is a linear, 3 step process:

  1. Select input - Use the file multi-select box to choose which books to process this session, and click next.
  2. Submit ASINs - Bragi will auto search for the audiobook data on Audible.com (US only). If the data found is incorrect you can do a custom search to find the correct title and then submit for processing.
  3. Wait for books to finish processing. This can take anywhere from 10 seconds to a few hours, depending on the number and type of files submitted. This will be done in the background.
  4. Books page - Page where you can see the data assigned to each book after it has finished processing. You can also check the status of the books still being processed.

⛏️ Built Using <a name = "built_using"></a>

✍️ Authors <a name = "authors"></a>

<img src="https://github.com/djdembeck.png?size=100"/>

@djdembeck - Idea & Initial work

Contributors ✨

Thanks goes to these wonderful people (emoji key):

<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --> <!-- prettier-ignore-start --> <!-- markdownlint-disable --> <table> <tbody> <tr> <td align="center" valign="top" width="14.28%"><a href="https://koby.huckabee.dev"><img src="https://avatars.githubusercontent.com/u/14910857?v=4?s=100" width="100px;" alt="Koby Huckabee"/><br /><sub><b>Koby Huckabee</b></sub></a><br /><a href="https://github.com/djdembeck/bragibooks/commits?author=AceTugboat" title="Code">💻</a> <a href="#ideas-AceTugboat" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/djdembeck/bragibooks/commits?author=AceTugboat" title="Documentation">📖</a></td> <td align="center" valign="top" width="14.28%"><a href="https://pilabor.com"><img src="https://avatars.githubusercontent.com/u/2050604?v=4?s=100" width="100px;" alt="Andreas"/><br /><sub><b>Andreas</b></sub></a><br /><a href="#tool-sandreas" title="Tools">🔧</a></td> </tr> </tbody> </table> <!-- markdownlint-restore --> <!-- prettier-ignore-end --> <!-- ALL-CONTRIBUTORS-LIST:END -->

This project follows the all-contributors specification. Contributions of any kind welcome!