Giter Club home page Giter Club logo

docker-beets's Introduction

docker-beets

Docker Image Size (latest by date) GitHub Workflow Status (branch) Docker Pulls DockerHub ghcr.io

A docker image for beets beet's logo with automation

What is Beets ?

From beets.io:

Beets is the media library management system for obsessive music geeks.

The purpose of beets is to get your music collection right once and for all. It catalogs your collection, automatically improving its metadata as it goes using the MusicBrainz database. Then it provides a bouquet of tools for manipulating and accessing your music.

How to use these images

All the lines commented in the examples below should be adapted to your environment.

Note: --user $(id -u):$(id -g) should work out of the box on linux systems. If your docker host run on windows or if you want specify an other user id and group id just replace with the appropriates values.

With Docker

docker run \
    --detach \
    --interactive \
    --name beets \
    --user $(id -u):$(id -g) \
    #--publish 4030:4030 \
    #--env MODE=betanin \
    #--env BETANIN_HOST=0.0.0.0 \
    #--env BETANIN_PORT=4030 \
    #--env WATCH_DIR=/Downloads \
    --env UMASK_SET=022 \
    --env TZ=Europe/Paris \
    --volume /etc/localtime:/etc/localtime:ro \
    #--volume ./config:/config \
    #--volume ./MyMusic:/Music \
    #--Volume ./Downloads:/Downloads \
    j33r/beets:latest

With Docker Compose

docker-compose can help with defining the docker run config in a repeatable way rather than ensuring you always pass the same CLI arguments.

Here's an example docker-compose.yml config:

version: '3'

services:
  beets:
    image: j33r/beets:latest
    container_name: beets
    restart: unless-stopped
    user: $(id -u):$(id -g)
    #ports:
    #  - 4030:4030
    #environment:
      #- MODE=betanin
      #- BETANIN_HOST="0.0.0.0"
      #- BETANIN_PORT="4030"
      #- WATCH_DIR=/Downloads
      #- UMASK_SET=022
      #- TZ=Europe/Paris
    volumes:
      #- ./config:/config
      #- ./Download:/Download
      #- ./MyMusic:/Music
      - /etc/localtime:/etc/localtime:ro

Volume mounts

Due to the ephemeral nature of Docker containers these images provide a number of optional volume mounts to persist data outside of the container:

  • /config contain :
    • .config/beets: The Beets config directory containing config.yaml.
    • .config/betanin: The Betanin config directory containing config.toml.
    • .local/share/betanin/: Containing betanin.db and secret_key files.
  • /Downloads: Incomming directory, this is where new music are comming must match with WATCH_DIR variable.
  • /Music: Final directory where are audio files moved after beets process is done.
  • etc/localtime: This directory is for have the same time as host inthe container.

You should create directory before run the container otherwise directories are created by the docker deamon and owned by the root user

Environment variables

  • MODE: automation mode inotifywait|betanin|standalone (default: betanin)
  • WATCH_DIR: This is where inotifywait will watch for incomming files , only used in inotify MODE.
  • BEETS_ARGS: add arguments to beet import command in entrypoint file (optional, default: none)
  • TZ: To change the timezone of the container set the TZ environment variable. The full list of available options can be found on Wikipedia.
  • UMASK: set permission of files created by the container process. More info on ArchLinux Wiki ArchLinux Wiki.

Ports

  • 4030: Betanin default port can be changed in betanin config file.

Automation

This image come with Inotifywait and Betanin this tools are used for automatic import/rename/tag new audio files.

Inotifywait

Inotifywait efficiently waits for changes and automatic import/rename/tag new audio file in the WATCH_DIR.

Betanin

Betanin is a beets based man-in-the-middle of your torrent client and music player

Betanin receive call from torrent client when the download is done then add the news files to the import queue process.

more info : https://github.com/sentriz/betanin

Contributing :

You are welcome to contribute to this project, but read this before please.

Issues

Found any issue or bug in the codebase? Have a great idea you want to propose ? You can help by submitting an issue to the Github repository.

Before opening a new issue, please check if the issue has not been already made by searching the issues

Questions

We would like to have discussions and general queries related to this repository. you can reach me on Libera irc server /query jee

Pull requests

Before submitting a pull request, ensure that you go through the following:

  • Ensure that there is no open or closed Pull Request corresponding to your submission to avoid duplication of effort.
  • Create a new branch on your forked repo based on the main branch and make the changes in it. Example:
    git clone https://your_fork
    git checkout -B patch-N main
  • Submit the pull request, provide informations (why/where/how) in the comments section

License

This project is under the GNU Generic Public License v3 to allow free use while ensuring it stays open.

docker-beets's People

Contributors

jee-r avatar renovate[bot] avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

docker-beets's Issues

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

Detected dependencies

dockerfile
Dockerfile
  • node 16-alpine3.17
  • alpine 3.18
  • alpine 3.18
  • alpine 3.18
github-actions
.github/workflows/build_test.yaml
  • actions/checkout v4
  • docker/setup-buildx-action v3
.github/workflows/deploy.yaml
  • actions/checkout v4
  • docker/setup-buildx-action v3
  • docker/login-action v3
  • docker/login-action v3
  • docker/build-push-action v5
.github/workflows/mirroring.yaml
  • actions/checkout v4
  • jee-r/docker-git-mirror v1

  • Check this box to trigger a request for Renovate to run again on this repository

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.