djdembeck / bragibooks

An audiobook library cleanup and management tool built with Python and Django. Leveraging m4b-merge for audiobook standardization and editing. Ideal for enhancing audiobook library management.
GNU General Public License v3.0
146 stars 20 forks source link
audible audiobook-cleanup audiobooks audnexus django docker library-management m4b metadata-management metadata-parser python

Project logo

Bragibooks

[![Status](https://img.shields.io/badge/status-active-success.svg)]() [![GitHub Issues](https://img.shields.io/github/issues/djdembeck/bragibooks.svg)](https://github.com/djdembeck/bragibooks/issues) [![GitHub Pull Requests](https://img.shields.io/github/issues-pr/djdembeck/bragibooks.svg)](https://github.com/djdembeck/bragibooks/pulls) [![License](https://img.shields.io/github/license/djdembeck/bragibooks)](https://github.com/djdembeck/bragibooks/blob/develop/LICENSE) [![Docker](https://github.com/djdembeck/bragibooks/actions/workflows/docker-publish.yml/badge.svg)](https://github.com/djdembeck/bragibooks/actions/workflows/docker-publish.yml) [![Docker Pulls](https://img.shields.io/docker/pulls/djdembeck/bragibooks)](https://hub.docker.com/r/djdembeck/bragibooks) [![Docker Image Size (latest by date)](https://img.shields.io/docker/image-size/djdembeck/bragibooks)](https://hub.docker.com/r/djdembeck/bragibooks) [![Docker Image Version (latest by date)](https://img.shields.io/docker/v/djdembeck/bragibooks)](https://hub.docker.com/r/djdembeck/bragibooks) [![CodeFactor Grade](https://img.shields.io/codefactor/grade/github/djdembeck/bragibooks)](https://www.codefactor.io/repository/github/djdembeck/bragibooks) [![All Contributors](https://img.shields.io/badge/all_contributors-2-orange.svg?style=flat-square)](#contributors-)

An audiobook library cleanup & management app, written as a frontend for web use of m4b-merge.

šŸ“ Table of Contents

šŸ§ About

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 selection ASIN input
file-selection asin-auto-search
Folder/file selection Post-proccess overview
asin-custom-search post-process

šŸ Getting Started

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:

Parameter Function
-v /path/to/input:/input Input folder
-v /path/to/output:/output Output folder
-v /appdata/bragibooks/config:/config Persistent config storage
-p 8000:8000/tcp Port for your browser to use
-e LOG_LEVEL=WARNING Choose any logging level
-e DEBUG=False Turn django debug on or off (default False)
-e UID=99 User ID to run the container as (default 99)
-e GID=100 Group ID to run the container as (default 100)
-e CELERY_WORKERS=1 The number or celery workers for processing books (default 1)
-e CSRF_TRUSTED_ORIGINS=https://bragibooks.mydomain.com Domains 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

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

āœļø Authors

@djdembeck - Idea & Initial work

Contributors āœØ

Thanks goes to these wonderful people (emoji key):

Koby Huckabee
Koby Huckabee

šŸ’» šŸ¤” šŸ“–
Andreas
Andreas

šŸ”§

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