Allow Plugins to store additional fields in library #310

triplem opened this Issue Jun 5, 2013 · 2 comments


None yet

2 participants

triplem commented Jun 5, 2013

I am using currently the discogs plug for determination of album information. Right now I do have the discogs release id stored in my tags (well basically I am storing this into a file called id.txt in each album) and I would also like to see this information in the library to avoid the need to type this in again on a re-scan.

Did I miss anything?

So what I propose is the possibility for each plugin to store additional fields in the library (like discogs_id).

triplem commented Jun 5, 2013

I have browsed through the source code and would suggest one solution, which could also be implemented for already existing plugins/fields:

  • a new plugin_album table, fields: album_id, plugin_name, key_name, value
  • a new plugin_item table with the following fields: album_id, item_id, plugin_name, key_name, value

This could be used by already existing plugins (e.g. chroma) to store their values. Most of this could be abstracted away by using a "plugin_library" to have a common handling of this. Of course, if already existing fields are done with the new structure, a migration have to be written as well.

Queries could be offered on this one as well. Problem could be, that on very large collection, the above mentioned table could grow quite fast.

It would be even more perfect if the above would be "automatically" done with the MediaFile fields, but I guess, that this would not be as easy and not really needed anyway.

sampsyo commented Jun 5, 2013

Great idea—this is probably the right design, and is in fact almost exactly what we're already starting to implement in the flexattr branch. See the discussion in #101. If you're interested, we could use some bright ideas about the implementation strategy there—it's nearly working but still has a few warts. I plan pushing on this feature more aggressively after the next release is finalized.

@sampsyo sampsyo closed this Jun 5, 2013
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment