ArturSierzant / OMPD

O!MPD is free, opensource MPD client based on PHP and mySQL.
http://ompd.pl
GNU General Public License v3.0
40 stars 13 forks source link

Genre enhancements #43

Open brendan-pike opened 7 years ago

brendan-pike commented 7 years ago

I would like to request a few genre features, I realise my ideal may not be widely suitable but I can dream right, however I think there is good middle ground available. In the order of importance

  1. Support for genre separation I use semi-colons for genre separation, eg. "Rock; Pop" however OPMD renders this as a single genre.

  2. Support for multiple genre tags After much research I decided to follow the discog formatting guideline which has only 15 genres but then many sub-genres (styles). So I need both my "genre" and "style" tags included.

  3. Discog genre support This is the dreaming part. For full Discog genre support OMPD would probably need to be aware of the style/genre relationships, eg. Free-Funk can relate to Funk / Soul or Jazz. So if an album was listed with: Genre: Blues; Jazz Style: Free-Funk; Chicago The system would need understand that Free-Funk is only listed under Jazz while Chicago is only listed under Blues. But what a truly clean system that would present

ArturSierzant commented 7 years ago

Ad. 1: Done in 647fa14 - genre separator is defined in $cfg['multigenre_separator']. In your case it has to be $cfg['multigenre_separator'] = '; ' i.e. semicolon and space

Ad. 2: Done (at least partially) in 647fa14 - now STYLES tag will be added to genres (I know, this might not be exactly what you expect). To use this, you must set $cfg['style_enable'] to true and force update database (this can be done from Settings > Update > Update only selected directory). $cfg['multigenre_separator'] is also used as styles separator.

Ad. 3: This requires dynamic update of genres/styles tree from discogs to keep it up to date - for now I don't know how to download all the tree. So for now this issue remains open...

brendan-pike commented 7 years ago

Hey Artur, thanks so much for your work, its amazing. I tested these today and it works although I still have a joined categories, eg. "Jazz; Blues; Folk, World, & Country " even though I added $cfg['multigenre_separator'] = "; "; Do I perhaps have to drop my old database or should forced update clear the older incorrect tags?

When I get some time I'll investigate and learn what I can about the discogs APIs, I think slimpd might use it but not certain.

othmar52 commented 7 years ago

... I think slimpd might use it but not certain.

Yes sliMpd already uses it for fetching single releases information.

@ArturSierzant : in case you consider to make use of the Discogs-API be aware that the oauth documentation of discogs seems to be incorrect @see discogs-thread

ArturSierzant commented 7 years ago

@brendan-pike: forced update should re-index all files (no matter if they have been changed since last update or not) so there is no need to drop DB. Have you changed $cfg['style_enable'] to true? I've tested Jazz; Blues; Folk, World, & Country and new genre Folk, World, & Country appeared on the list of genres (Jazz and Blues have been there already), so it seems to work correctly. Please try to update (just for test) one album with multi-genre using Update album from Album view (it also performs forced update) and see what happens.

@othmar52: thanks for hint, always good to know :)

brendan-pike commented 7 years ago

I've been reading further into discog API, I don't think its even possible to pull genre/styles without album references which makes the API useless for this function. What I'm thinking is that it will be far easier to write a scraper for the website by going through the genres and recording the styles. We could allow the user to trigger the scrapper manually or we could write the result into the OMPD file set and update it on new releases. I'm happy to write this the scraper if you give the format but obviously there is a lot of other coding work outside of that for you.