beetbox / beets

music library manager and MusicBrainz tagger
http://beets.io/
MIT License
12.71k stars 1.81k forks source link

Multiple related repositories #221

Open JDLH opened 11 years ago

JDLH commented 11 years ago

My music workflow has three music repositories, all parallel and related:

  1. CD backup archive: 1 FLAC file per CD, cue sheet, can reconstruct CD media if original disc decays
  2. master tagged music: 1 FLAC file per track, fully tagged with Musicbrainz, the canonical place to go for music
  3. mp3 converted: 1 mp3 file per FLAC file in repository 2. Smaller, perhaps more suited to a portable player.

Also, since I ripped a lot of CDs before I decided to make repository 1, I have:

  1. backup untagged music: 1 FLAC file per track, cue sheet, barely tagged with MusicBrainz, but a suitable starting point for tagging, and a restore point if files in repository 2 get corrupted.

You could imagine having multiple variants of repository 3, with subsets of the music for different devices or different people.

As far as I see, beets only knows about one repository.

I propose: a. adding a way to declare multiple related repositories, and let each beets command take as a parameter the repository it should operate on b. adding beets commands to generate files in repository X based on sources in repository Y. c. adding consistency rules between repositories, so that on command beets can figure out what files need to get changed or generated, and schedule that work

I understand this might be a major architectural shift. It may take time. That's OK. I just want to put an entry in the wish-list.

sampsyo commented 11 years ago

Interesting ideas here.

To try to bring this closer to reality, can we brainstorm what concrete features would be desirable here? For example, for part A, one can currently switch between different databases and directories with command-line options. What's different in the system your imagining? And, for part B, we currently have the convert plugin, which can do transcoding of the sort you need for your repository 3. How should that be extended?

There's a chance that this kind of support would not need a radical architectural change—maybe a few well-placed, concrete new features would suffice.

JDLH commented 11 years ago

For part A, multiple repositories, my idea was to be able to have multiple repositories declared in ~/.config/beets/config.yaml. Each would have a shortcut tag, like master:, cd_archive:, converted_mp3:, etc. Each would have a directory: entry. Groups of settings like import: might be repository-specific or might be global. I haven't thought that through. I imagine using the shortcut tag in beets command line invocations, to specify in which repository an action should happen.

I haven't studied the command-line options enough to know to what extent they already let me do what I want. That's good homework for me.

JDLH commented 11 years ago

Oops, didn't mean to push the "Close" button.

sampsyo commented 11 years ago

Very cool idea.

On Fri, Mar 15, 2013 at 11:00 AM, Jim DeLaHunt notifications@github.com wrote:

For part A, multiple repositories, my idea was to be able to have multiple repositories declared in ~/.config/beets/config.yaml. Each would have a shortcut tag, like master:, cd_archive:, converted_mp3:, etc. Each would have a directory: entry. Groups of settings like import: might be repository-specific or might be global. I haven't thought that through. I imagine using the shortcut tag in beets command line invocations, to specify in which repository an action should happen.

I haven't studied the command-line options enough to know to what extent they already let me do what I want. That's good homework for me.

Reply to this email directly or view it on GitHub: https://github.com/sampsyo/beets/issues/221#issuecomment-14975749

sym3tri commented 8 years ago

i have the same problem and like this idea too

Lapin0t commented 8 years ago

+1 ... It could help to have the library.db file near the actual library directory (useful when the library is accessed from multiples computers). For example the beets library directory could contain a .beets directory with config.yaml, library.db etc. files which overwrites the ~/.config/beets ones. A global commandline switch to select the right library (with eventually like JDLH said, shortcuts and default repository declarations in ~/.config/beets/config.yaml).

With this implemented, it would be easy to write a plugin that automates your CD ripping workflow.

bitsunited commented 6 years ago

+1: I would use it to separate FLAC and mp3 on one hand. On the other side I want to separate the music for kids from the "adult" music and separate audio books and music in separate repositories.