I got totally obsessive on this subject, like a golfer who's swinging away at the 14th tee at midnight in a thunderstorm trying to figure out how to shave a few strokes off his game. So I wrote my own program to do it in C#. It was a learning experience, and a lot of fun.
Total Size: 123.99 GB
Total Duration: 42 Days, 18 Hours, 52 Minutes, and 16 Seconds
mmedia > audio > music > [Genre] > [Artist] > [Album]
The music folder is watched by a FileSystemWatcher. When a new album or artist is pasted into music the following is automated:
Album cover is downloaded from Google Images
Artist bio info is parsed from Last.fm and Wikipedia
Artist images are downloaded from Last.fm
Audio tags, including ratings and file and audio properties, are parsed and then stored in a local SQL Server database (over 40 fields per track). The new database rows are then synced to a non-local SQL Server, and the files mirrored to the same server via FTP.
The new database rows are converted to XML and stored in a file in the album folder (album.xml) and artist folder (artist.xml). A new full xml database of the entire library is made ever few days. File, album, and artist IDs and a few other properties are saved in the file's properties.
The database and xml files are also updated on any change to a file's tags, rating, location, etc.. Play counts are tracked for tracks, albums, and artists, as well as playtimes. It can also write and track file tags (keywords), and allows the creation of custom properties for tracks for organization, such as "favorite".
After creating this system, I then wrote an online interface to it and eventually a local interface, all in HTML5, AJAX, and jQuery (and ASP.Net/.Net). It had a kiosk view that displayed track info, album and artist images, and the artist bio. It also allowed browsing the collection through searching, or by artist or album with images, and by listening habits.
I created a media player for my desktop (an html desktop in a WebBrowser object) that remotes WMP using an existing plugin. So, I can control WMP from the desktop, load dynamic playlists based on the database (4 Stars, not listened to in last 6 months, etc..), keep bookmarks for long radio shows and audiobooks, etc..
Other than that, WMP