Good one. Even though it may not be that exciting, it's one of those basic pieces that is necessary.
All of the music sources MP3, radio, satalite and internet are lacking certain information. While MP3s can carry the most info with their built-in ID3 tags, this data is not always known or filled in. The information by the other sources is wholly up to what the source sends and what your hardware is capable of recieving/decoding.
This webservice will try to provide album art, album name, and other related content such as producer, year made, etc.. etc...
The webservice can also provide related songs/artists that the user may like, which could strictly be songs currently available locally or outside sources such as download websites such as itunes or amazon.
Secondary functions could provide related information about artist/album/song somewhat like how VHS's popup video functioned. Although the usefulness of this content may not be high in a moving vehicle.
Alone, this webservice would not provide much functionality, but paired with other webservices to either tag songs to buy or buy them outright on the spot will greatly increase it's potential. This webservice could also have high potential to suggest other songs on these tagging websites or to create playlists on the fly of local matieral based on current playing sytles.
Proposed Client Functionality
The client must be able to understand the returned data and display the data.
Proposed Web Front-End Functionality
Alone, this webservice will not have a web-based presence.
Proposed Webservice Functionality
The Webservice must be able to search for artists/songs by song and artist and provide the extra data. The service must also be able to suggest related songs/artists that match the user's styles and tastes.
Proposed Plan of Action
- Use any of the following APIs found here to provide the data
- Develop the common return datatype
Current Process = Outlining the exact scope of this service and functions.
After taking a look at the API list provided, I would love to see a list of top songs in a certain genre as provided by billboard. The list would be compared to my library, a "top ______" playlist would be created. It would also suggest songs to me to purchase to complete my "top _______" playlist.
Fleshing out this idea... let me run over the listing of functions this service should have...
Function GetSongData(string artistname, string songname OR string albumname, int songnum OR string albumname, string songname OR any other method of identifying exact song)
Return artist name, song name, song #, album name, web address of album art, and any other related info
Function GetSimilairArtist(string artistname)
Return array of similair artists
Function GetSimilairSongs(string artistname, string songname)
Return array of artists with song names
After thinking about it... getting a list of songs that are only local will be difficult. The client itself will need to search through all songs when getting data and "throw away" results that are not local. I do not see any way around this.
The best thing to do is to retrive data and to say either "you own it" if its local or "buy now" if not.
So...let the client app sort out that problem. The web service provides the information, end of story. If someone wants to program the "you have it or you don't" logic into a front end or an app, they can.
Keep it simple.
Another nice function would be to have it provide a list of "similar artists"... Kinda like what Last.fm does.
Edit: Looking at the Last.FM api they do provide this: artist.getSimilar COOL!
Failure is not an option...
The only full multizone / multiscreen cross platform open source Front End -> OpenMobile
I think ive decided to use last.fm as the main source of this webservice. However, one thing they are lacking in is cover/album art. I think that Amazon will be the best source of cover art. Between the two, I do not see anything else needed to extend all this functionality.