So I think step 1 should to have both projects work indednatly and have seperate DBs. mStream curently does no have the ability to edit metadata, so I don't see a problem where the DBs get out of sync
We could add a command to Beets that calls the mStream to scan for changes whenever beets updates
sampsyo
Sure, sounds good—we do similar things for MPD, Plex, and Kodi, for example
IrosTheBeggar
Cool, this way mStream can provide a solid streaming web UI for Beets
After that I can work on an mStream plugin that will pull data directly from beets DB. This plugin can come with additional API endpoints and UIs that allows the user to edit metadata and modify the library in other ways
sampsyo
And would that plugin want to speak directly to the SQLite database, or should it talk to beets itself over some interface?
IrosTheBeggar
Ideally it would talk to beets
That way things don't get out of sync
sampsyo
Yeah, I like that too
Perhaps this is too low-level, but I can also imagine that going two ways: the interaction could happen via CLI invocations and stdin/stdout, or over an HTTP protocol of its own
IrosTheBeggar
STDIO would be easier to get working
That way you don't have to program a server for Beets
sampsyo
Yep. Either way we'll probably want some new plugin that makes a better interface for programmatic interaction than the human-facing commands
dograt has quit
dograt joined the channel
One semi-crazy idea I've been thinking about is making a plugin that works like the AURA API (which is traditionally over HTTP) but just writes JSON to stdout instead
That could make it easier in the future to, for example, have the mStream server talk to a beets instance on a different host. But we should not worry about that use case for now
IrosTheBeggar
Yea, we'll have to sit down later and hash out the scheme for the interface
sampsyo
Yes, sounds great
IrosTheBeggar
JSON over stdio is a pretty good system
I'm working on a NodeJS server write now that manager a number of other servers over STDIO and JSON. SO far it's been a smooth project
sampsyo
That's cool. This seems like a good design.
IrosTheBeggar
Ok, lets think short term for now. We'll need a beets command to call mStream on update
And I think that's it really
sampsyo
Right. We can build that by cloning the existing {plex,mpd,kodi}update plugins and hitting the appropriate mStream API call
IrosTheBeggar
I can write up something to add to the Beets docs on how to configure an mStream server