|
Hey there. I've been integrating Echonest's API into my application in order to scan a user's music library and enhance the information available for selecting songs, but so far i'm finding that the matching is not working quite as I expected and I'd like to know how to improve the matches without needing to use further API calls if possible. I've also collected some of the other API bugs I've come across with the report.
I'm using the catalog api with the following user story:
User calls create catalog to begin a new catalog:
result: ok
other bugs (seems to occur in all catalog requests): service sometimes returns an Nginx 502 error, which breaks XML parsing.
User then sends qualifying songs using the update api in the following formats:
- if the song name is from a user ripped cd in winamp from 1999 (sorry, the json may not be perfect in my copy pastes):
case: artist_name: underworld; release: Beaucoup Fish; song_name: Underworld - Beaucoup Fish - Bruce Lee - Track 07; Track #: 7
send: {"action":"update","item":{"item_id":"db15165db5625965e8d5e56f27673cc6ad9b0718","artist_name":"Underworld", "release":"Beaucoup Fish", "track_number":7}}
expected result: finds the track information
result after testing: can't resolve item no matter what other info is sent
other bugs: if you send a blank field or whitespace " ", "rn" for the song_name, the update will never finish.
- if the song is from iTunes and is Well formatted for a word for word match but is missing track numbers:
case: artist_name: Radiohead; release: The King Of Limbs; song_name: Feral
send: {"action":"update","item":{"item_id":"db15165db5625965e8d5e56f27673cc6ad9b0719","artist_name":"Radiohead", "release":"The King of Limbs", "song_name":"Feral"}}
expected result: Should resolve most songs on a given album
result: resolves only a fraction of songs per album - this might just be an issue with a limited song catalog and more obscure albums
- If the Song has all fields then send everything with the request
case: artist_name: Radiohead; release: The King Of Limbs; song_name: Feral; track_number: 4
send: {"action":"update","item":{"item_id":"db15165db5625965e8d5e56f27673cc6ad9b0719","artist_name":"Radiohead", "release":"The King of Limbs", "song_name":"Feral", "track_number": 4}}
expected result: an even better match than a song with no track information
result: sometimes adding a track number lowers the matching quality
User then gets a ticket and calls status at 5 second intervals to see if the service has finished resolving the content.
result:ok
User then uses the read command to download an XML formatted response from the service. The user may add the following buckets: song_hotttnesss, audio_summary and artist_hotttnesss.
expected result: the response contains a matching entry for every song request sent whether any metadata is available or not
result: XML feed is sometimes missing request information including item_ids making it hard to update the state of my app. Strangely enough, a completely unresolved request will have all of the request data.
If a User no longer uses a given catalog, a delete command can be used to remove the catalog
result: ok
The process seems quite smooth with only occasional service hiccups, but I'd like to see better name resolution where track numbers are presented and resolution if a song name is not entered. For users with large libaries, it might be difficult to do one off resolution requests. I was hoping that the catalog service would be the best to use for the above user stories. Let me know if I need to retool my side at all. Please let me know if you need more comprehensive json requests and XML responses and I will follow up with some gists.
Thanks for your help,
-Rich (streeme.com)
|