2017-03-31, 15:12
I am going to try to maintain this thread as a summary of my current work in progress on improving music library features for the Kodi v18 Leia release. Here you will find a basic road map of what is currently being developed along with my todo list. Any help others can offer - testing, discussing design, documenting or just being fun to hang out with and share my moans - is very welcome. If anyone has the skill, time and interest to set up an IDE and get involved that way then great.
At any time there may be a music test build available with my work so far that is ahead of the nightly.
Currently - none available
This is from my repo, and differs from Leia master, because of the delays in getting review and approveal to merge so it can appear in the nightlies. As all my work is focussed in one area it is often cumulative, so I can't raise later PRs until the first is merged without a lot of review confusion. Testing of my work before merge will help with the review/approveal process.
I will probably split any testing feedback or feature discussion posted here into a new thread, to stop this thread growing too big and becoming unreadable. Watch out for those when posting.
Work Completed (inc. waiting for review)
Test Build: none available, use nightly
(N) = New feature, or major improvement
(P) = Partial, more phases to come later.
(F) = Fixing bug
In Progress (stuck on the backburner)
This is the stuff that I feel I have a reasonable chance of dealing with as a single dev, or have a strong interest in. I know there are a lot more requests for things people would like, and major changes that are beyond me, for my sanity they are not listed here. But I am happy to collaborate or offer support where I can if anyone else wants to make improvements or fixes to music.
In no particular order....
I'm just one man so hitting this thread with posts for lots of feature requests (or reminders of what has been requested before) genreally is not going to work; making my todo list unmanageably long is easy. I suggest you create your own thread for those, I will see them and respond if I can. I would love to be able to do more I really would. There is a window of opportunity for others to helpfully post some friendly reminders if I have said elsewhere I would do something and I have missed it here. But please just don't tell me how easy you think something is unless you have also submitted a PR to make the changes and just want me to review!
I will be deleting posts and editing etc., so do not take offense if that happens to your post.
I declare this thread is mine to do with as I will!!!
At any time there may be a music test build available with my work so far that is ahead of the nightly.
Currently - none available
This is from my repo, and differs from Leia master, because of the delays in getting review and approveal to merge so it can appear in the nightlies. As all my work is focussed in one area it is often cumulative, so I can't raise later PRs until the first is merged without a lot of review confusion. Testing of my work before merge will help with the review/approveal process.
I will probably split any testing feedback or feature discussion posted here into a new thread, to stop this thread growing too big and becoming unreadable. Watch out for those when posting.
Work Completed (inc. waiting for review)
- (P) Forced scanning of tags
The need for a forced scan is now held in the db, so with client server setups you only get prompted once after an upgrade, not every client. PR11557 This also added option (add <promptfulltagscan> to the musiclibrary section of advancedsettings.xml) to be prompted for a forced scan of tags when rescanning a source from context menu of fileview. Very useful when testing changes to tag processing but was later PR12891 replaced by a question folowing selection of "scan to library" on the context menu in file view.
- (F) Cleanonupdate
Fix implementation (to match video) as since Gotham this option was accidentally preventing any subsequent scraping additional album or artist information, and failed to clean the library when no files were being scanned for tags. https://github.com/xbmc/xbmc/pull/11609
- (N) Tags: WRITER, BAND and ENSEMBLE
Add processing of WRITER tag, correct BAND and ENSEMBLE tags (Vorbis and APE formats). https://github.com/xbmc/xbmc/pull/11735
- Replaygain reduction clipping protection option
Restore option for replaygain reduction as clipping protection. See forum thread and https://github.com/xbmc/xbmc/pull/11865
- (N) Artist sort names - Phase #1
Add processing of ARTISTSORT (TSOP), ALBUMARTISTSORT (TS02) and COMPOSERSORT (TSOC) tags to provide a sort name for artists. Optionally use field this when sorting artists, albums or songs by artist name. https://github.com/xbmc/xbmc/pull/11738
- (F) Duplicate Musicbrainz track ids within in an album
It is fairly rare but Musicbrainz track ids are not always unique, tracks with the same id can be repeated e.g. silence or on multi-disc anthology albums. Kodi simply didn't load these. https://github.com/xbmc/xbmc/pull/12079
- (F)Cuesheet regressions: replay gain and db design
Refactor db implementation of cuesheets to avoid needlessly slowing the songs node (disabled for v17 anyway), and actually have replay gain applied for library items. Fix other oddities in playback of embedded cuesheet songs from file view. https://github.com/xbmc/xbmc/pull/12082
- (F)Album Type and Record Label merging
Fix bug where scraped type and label values were always overwriting those derived from tags. When scraped value was empty this effectively cleared the tag value. Also backported to Krypton v17.4
https://github.com/xbmc/xbmc/pull/12216
- Better Album and Artist Additional Info Scraping From Online Sources - Phase #1
- When fetching additional info on library update:
- Scan all metadata tags from the music files first before scraping (rather than do it album at a time).
- This populates the library with the basic music without delay so the user can start using it.
- Tagging can be mixed quality - some with mbids, some without, so artist mbid may be obtained from music files later in the scan.
- Avoids unwanted consequnces arising from the order in which folders are processed. The common example of this is the compilation/NFO issue where early processing of various artist compilations causes the artist folder to be misidentified and artist.nfo is either not found or scraping goes wrong. The work around was to put all compliations in a folder named "zzzzzCompilations", to ensure it was processed last, otherwise the song artists from these albums was added to the library and additional info scraped before the other albums by that artist had been scanned, and so the artist.nfo file was never found and applied. This is no longer required.
- Having passed through all the music during scanning tags we know how many albums we are processing, so during scraping phases the progress bar can show meaningful position though task.
- Repeat of failed scraping due to server timeouts could be added at a later time.
- This populates the library with the basic music without delay so the user can start using it.
- Scraping album artist(s) as part of library update, even if the album lookup has failed.
Otherwise known artists can go unscraped just because the albums in the library are not found.
- Avoid repeatedly requesting artists that are not in the online sources.
- Scan all metadata tags from the music files first before scraping (rather than do it album at a time).
- Scanning Musicbrainz release group id from tags as well as release id (album) for use by addons to fetch artwork
- Saving scraped Musicbranz ids for artist/album (both release id and release group id) when not in tags, but need to ensure succesfully identified and/or provide a means to modify
https://github.com/xbmc/xbmc/pull/12120
- Fix throttling of Musicbrainz requests https://github.com/xbmc/xbmc/pull/12402 Significantly reducing the 503 errors and gaps left after scraper runs. Also backported to v17.4
- Changes to Universal Album Scraper (v2.7.2) https://github.com/xbmc/repo-scrapers/pull/51 avoiding inefficient duplicated requests to Musicbrainz. @olympia has also fixed some additional parsing issues.
- Fix Change Information Provider for albums and artists PR12597
a) Setting artist or album info provider selectively that works!
b) Facility to set info provider for multiple artists or albums
c) Facility to set default info provider from within library, and to reset all artists or albums
The old functionality was so broken I doubt it was used. Note: library is bumped to MyMusic67.db
-
- When fetching additional info on library update:
- Music Export / NFO and Art handling for All Artists (Better Album and Artist Additional Info Scraping From Online Sources - Phase #2)
See PR12891, also discussed in detail here https://forum.kodi.tv/showthread.php?tid=319284- Support for local art and nfo files for all artists via new Artist Information Folder and numerous fixes to better match art and nfo with correct artist
- Export done asynchronously (not lock UI), with new dialog (rather than series of yes/no dialogs), offering export of all artists and allowing greater control of what exported to where.
- Support for local art and nfo files for all artists via new Artist Information Folder and numerous fixes to better match art and nfo with correct artist
- Extra Artist Data (type, gender, disambiguation) PR12963. The music db version is bumped to 68.
- GUI info label, media filter and smartplaylist support is added, and the data is included in import from and export it to xml and NFO files.
- Add GUI info labels for artist sort name (PR11738) and album release groupd id data (PR12120).
- Update JSON API to include all the above.
- GUI info label, media filter and smartplaylist support is added, and the data is included in import from and export it to xml and NFO files.
- (N)New Information Provider Dialog PR12987.
- Easy access to default music scraper (Info Provider) settings when adding music source via a "settings" button.
- The same dialog is also used to provide the UI to change information provider for artists and albums (separately) from the artists or albums nodes. A follow on from PR12957
- Easy access to default music scraper (Info Provider) settings when adding music source via a "settings" button.
- (F)Fix Album Genre Inconsistencies PR13042.
Genre in library navigation is implicitly song genre.
Makes album genre similar to artist genre (or album mood, style and theme) - a discriptive string that happens to have the name "genre" but can be completely different from the song genre values of related songs. [Note I had originally thought that both artist genre and album genres should be codified, but there simply is no need to associate ids with these strings, much like mood, style and theme, since we are not using them to navigate the library]
- (F)Fix various JSON API issues
- Breaking change bump to v9.0.0 of API. PR13051
- GetAlbums() and GetAlbumDetails() - sort out genre use
- SetAlbumDetails() and SetSongDetails() - get these to actually work!!!
- GetAlbums() and GetAlbumDetails() - sort out genre use
- (F)Fix wrong playback order for smartplaylists, playlists and upnp PR13059 Longstanding Trac ticket that had playlists started from JSON always in a set order.
- Add "art" parameter to audio library Get and Set methods PR13101
- Breaking change bump to v9.0.0 of API. PR13051
- Music library extended artwork support Epic discussion on the forum core framework to support any art type set via JSON API, addons or manually via UI.
- Artwork consistently available to the GUI via Listitem.Art(...) and Container.Art(...)PR13352.
- Refactor Song Information dialog PR13533.
- Refactor Artist/Album Information dialog PR13672.
- Add "Choose Art" button to support selection of any type of art
- Get album or artist art changes to show immediately.
- Update the artwork for the currently playing song, or songs on current playlist, if the related album or artist art changes.
- Improve artist discography list to always show all the albums in the music library by that artist, and then any additional titles scraped from online sources.
- Clear local images from cache prior to image selection in attempt to immediately show any recent external changes made to the contents of the file. See https://forum.kodi.tv/showthread.php?tid=330078
- Add an "Artist info" button on the album info dialog that links to the primary artist
- Replace the scraped track listing on album info dialog to show the songs in the library from the album. This change happened in DB v68 and deprecates the albumsonginfo table . See http://forum.kodi.tv/showthread.php?tid=298528 and PR12597.
- Fixed issues with resfresh button after switching between artist and album info dialogs (same dialog so gots confused).
- Move data read and write off the main thread to avoid possibility of locking UI.
- Add "Choose Art" button to support selection of any type of art
- Artwork consistently available to the GUI via Listitem.Art(...) and Container.Art(...)PR13352.
- Disc set local artwork support PR13769
Some baby steps to improve disc set handling by correctly picking up any thumbs from subfolders when the album is spread across multiple subfolders (one per disc), as well as album (the boxed set) and artist art. See more details here. Note this does not handle round disc/CD art (round images), but cover (thumbs) that each disc in a boxed set could have.
- (N)Prefer online album art PR13812
Add the option to automatically use scraped art in preference to that found embedded in music files. See thread for details.
- (N) Fetching any type of art automatically PR13848
It makes fetching additional art, from local files or scraper results, configurable in a white list rather than hard coded. This means showing additional art, such as "clearlogo" or "discart" or anything else people may dream up in the future, will just be a matter of either putting the correctly named image file in an appropriate place, and/or the scraper returning a URL for it , and then editing the skin. See thread for details, discussion and feedback.
- (N) Filtering By Media Source PR14012
New facility to filter artists, albums and songs by media source, from either side blade filter or smartplaylist rules. It is very natural to categorise music by putting it under separate folders, and with the introduction of the Artist Information Folder, users can arrange their music files into whatever folders they like (there is no longer any need to try to have all the music by an artist, and only that artist, under one unique folder in order to have local art and artist.nfo files). By adding these folder as separate sources (via the media source dialog), items can then be filtered using them. See thread for details, discussion and feedback.
- (N) JSON API Music Data Faster Access PR14160
An internal reworking of the batch access to song, album and artist data via JSON API making it significantly faster.
Test Build: none available, use nightly
(N) = New feature, or major improvement
(P) = Partial, more phases to come later.
(F) = Fixing bug
In Progress (stuck on the backburner)
- Tags: ORIGINALDATE(TDOR), DATE(TDRC) and RELEASEDATE (TDRL)
Support for various dates for albums and songs rather than just year. See discussion http://forum.kodi.tv/showthread.php?tid=313952
How users can optionally see music by the date it was originally produced as well as the post 1980s release dates of all digital media, and support for month and date.
- Smart Playlist Rules, Filtering and Default Nodes
A unification of SQL Query building so that filtering and navigation from playlist results combines query logic correctly. Essential ground work before filtering and navigation options can be extended. First attempts are here PR10098, but this needs further work.
Needs to fix navigation of results when have smart playlist within smart playlist, and navigation of artist search results when role <> 1.
- Custom Properties
Facility for songs, albums and artists to have user defined properties, either edited within Kodi, or scanned from custom tags embeded in music files or from NFO files
- Music Scraping From Online Sources
While others are looking at converting to Python based scrapers, a review of how music is scraped, what data fetched etc., how it is merged and any other core changes to support the Python change.- Make scraping of genre data for artists and albums optional
- Make scraping of genre data for artists and albums optional
This is the stuff that I feel I have a reasonable chance of dealing with as a single dev, or have a strong interest in. I know there are a lot more requests for things people would like, and major changes that are beyond me, for my sanity they are not listed here. But I am happy to collaborate or offer support where I can if anyone else wants to make improvements or fixes to music.
In no particular order....
- Smartplaylist and Filter Rules
- Track and Disc Number
Fix track number smart playlist rule to correctly split just track number form the combined track and disc filed in song table. Add disc number as a smart playlist rule and filter option for songs and albums.
- Filetimestamp
Add filetimestamp (misnamed Dateadded field) as smartplaylist and filter rule for artists, albums and songs.
- Recently Added (unscraped) Artists
A way to list those recently added or not yet sucesfully scraped for re-scraping attempts.
- Track and Disc Number
- Consistent Application of Node Options
Apply folder type node options at genre or role level. Currently can create a node with say <path>musicdb:// genres/?ambumartistonly=true&year=1988</path> that will show all genres, but when navigate down for a selected genre the options are applied only see the album artists with songs from 1988, and there could be nothing to show.
- Extended artwork support - Phase #2
- Embedded Art
- Fix way APIC tag is handled to correctly fetch front cover art when there is more than one image. Explore possibility to handle more than one image per song or album.
- Include embedded in art browse/selection from album/song information dialog.
- Option to use embedded art only as a last resort (or ignore?) for users that have messy art to be able to have first scraped album art apply by default
- Fix way APIC tag is handled to correctly fetch front cover art when there is more than one image. Explore possibility to handle more than one image per song or album.
- Local file cache refresh
Add a "refresh" button on the file selection dialog when browsing for local art, so recent file content changes are visible immediately. See https://forum.kodi.tv/showthread.php?tid=330078
- Embedded Art
- Genre Handling
- Genre Separator - Allow for multiple item separators, add ";" (a sensible separator value). Useful for ID3 v2.3 tags (single frame) as semicolon is the default separator used by meia Monkey when tagging.
- Add support for a genre hierarchy, a way to group genre together as subgenres to unscramble the usual large mix of genres that result from scraping/tags
- Clarify JSON API and smart playlist/filter rules where artist, album and song genre are being used.
- Genre Separator - Allow for multiple item separators, add ";" (a sensible separator value). Useful for ID3 v2.3 tags (single frame) as semicolon is the default separator used by meia Monkey when tagging.
- Improve multidisc set Album handling
Process TOTALDISKS, DISCTOTAL (TPOS) tags so can show disc 2 of 3.
Process DISCSUBTITLE tag.
[Adding a disc level GUI for boxed set releases (albums) is under "other issues"]
- Album Series
Add support for album series e.g. “Now That’s what I call music”, to help categorise and navigate various artist complitaions. Some breakup is possible via custom nodes based on path rules, but maybe could scrape Musicbrainz series id and use that to identify series.
- (N)(F)Refactor Sorting
- Fix multi-field sorting – current field contatenation approach is flawed and produces odd results see http://forum.kodi.tv/showthread.php?tid=298544
- Look at initially sorting in DB using ORDER BY and COLLATE for efficiency (currently all sorting is done in memory after fetch from db). But still need to be able produce same sort order in locally held FileItemlist for subsequent on screen order changes.
- Support user defined field combination sorting, not limit to predefined hard coded sort orders. See http://forum.kodi.tv/showthread.php?tid=...pid2505865
- Fix multi-field sorting – current field contatenation approach is flawed and produces odd results see http://forum.kodi.tv/showthread.php?tid=298544
- Artist Art
Fix issues where user gets stuck with artist image even when image file has been deleted.
- Add Audio properties – bitrate, channels – as data and filter
TagLib can extract these from music files as part of tag scanning. Store this data in the library, add to smartplaylist and filter rules. Add info labels so skins can display as part of songs node, and expose via JSON API
- (F)Fix Other JSON API Issues
- (F)Cuesheet Support
Expose song.offset as part of song details. Look at returning track duration for non-library cuecheet items as part of filemode info
- (F)Cuesheet Support
- Export Dynamic Song Data
Add facility to save and restore song play count, last played datetime and user rating so this data is not lost when music source is dropped, and can be transfered to a clean installation
- Review Music Settings UI
Add to Settings UI for new music options e.g. Forced Scan of tags, sort artist by sort name
I'm just one man so hitting this thread with posts for lots of feature requests (or reminders of what has been requested before) genreally is not going to work; making my todo list unmanageably long is easy. I suggest you create your own thread for those, I will see them and respond if I can. I would love to be able to do more I really would. There is a window of opportunity for others to helpfully post some friendly reminders if I have said elsewhere I would do something and I have missed it here. But please just don't tell me how easy you think something is unless you have also submitted a PR to make the changes and just want me to review!
I will be deleting posts and editing etc., so do not take offense if that happens to your post.
I declare this thread is mine to do with as I will!!!