Console: Support (multiple) playlists as casting source
In order to completely cover my Use case(s) with your Sharpcaster.Console app, I would like to be able to somehow define a list of "My CD-Collection" (and "My WebRadios") available for casting in LAN(/WAN). In my own attempt on this ( https://github.com/RobertK66/HomeAudio ), I tried to abstract the audio sources. In "cast terminology" the 2 types I use are a "single (live) cast URL" and a "list of cast URLs to be queued with a name (for the list/queue)".
There I (manually/run once) used (my local) DLNA - Digital Media Server (running on my NAS) to generate/cache the List of CD Albums/Tracks in my own simple json format. (coded in Cli/Program.cs). I did this for 2 reasons: 1.) I do not want the timing and dependency on this DLNA API to be in my 'start console/cd" code. and 2.) I really, really hate the structure of the DLNA DMS presentation of content with its sh..y "favorites, artists, blablabla non hierarchically structure" where you always need multiple clicks to get where you really want to be ....
My ConGui/appsettings.json allows the TUI to present this audio sources in configurable "MediaTabs" with custom col/row count.
That said, I have not yet fully thought how to fit this in your Sharpcaster.Console. Maybe somehow having a configurable menu structure for the cast sources and/or using a more standard playlist format for the media lists to be used there. I am not sure if there is any format which would allow multiple named playlists in a single file. As I understand m3u, there I would need a file per CD and I would need to specify the CD title/artist with a 'non standard' tag line like e.g. "#PLAYLIST:anyname"
Pls. let me know what you think of this feature enhancement. If you like it, I would be willing to go in further detailed discussions and then write a pull request to implement this feature. If going the DLNA way, I am not sure how to make this generic enough. My 'run once' code was very specific re-engeneered to get a single working definition file out of my NAS media Server without checking on options and API definitions of any DMS (if there are some standards on that...)
Maybe the DLNA part could be its own "Flow" with filters and option to store URL lists into files/configuration ...
Ok, just reread my (github cloned) code for the DLNA. It depends on a COM object dll. So it does not fit your multitarget AOT architecture here :-).
I like the playlist/queue part a lot.
I think it would be great if it would work somehow in following fashion:
- You could set in a config file URLs & titles for playlists
- Then the console application would allow you to either load from those or write your URL manually
- The file itself would be JSON and contain the data in a format which the console application could parse as a queue and submit to Chromecast (queue can contain either multiple items or just a single media file)
This would mean there's very minimal changes required on the console application itself.
If there's something required for handling of Chromecast media queue then I’m totally up for improving the experience for that.
When it comes to DLNA I'm not sure at all how I would even approach that. I'm not very keen on adding features that are outside of straight Chromecast controlling into the console application itself. If it's very minimal and there would be demand for it, I'm open to it.
Yes, I agree with the DLNA part being its own beast. So this is in for a different app (for generating any config file format, like I did it in the past) and has nothing to do with Chromecast.
So I will start the playlist/queue code in a feature/branch in my fork and give it a try. (not sure about my time budget yet, but lets see...)