diff options
author | 2014-02-14 14:22:58 +0100 | |
---|---|---|
committer | 2014-02-14 14:22:58 +0100 | |
commit | 15de2eca7b2689070e80ff980bc766cab9c2ac55 (patch) | |
tree | a6794dd86f2b9d9c026d649a28ce43ee2a8a945b /plugins/artwork/lastfm.c | |
parent | 7a6f3f9e8b016c4c2b0fd2a5e30e8850465e3742 (diff) |
artwork: try to substitute album name for artist, if artist is missing or cover not found (this allows to load some game music covers from lastfm)
Diffstat (limited to 'plugins/artwork/lastfm.c')
-rw-r--r-- | plugins/artwork/lastfm.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/plugins/artwork/lastfm.c b/plugins/artwork/lastfm.c index 63483406..83bda9cb 100644 --- a/plugins/artwork/lastfm.c +++ b/plugins/artwork/lastfm.c @@ -45,11 +45,17 @@ int fetch_from_lastfm (const char *artist, const char *album, const char *dest) { char url [1024]; - char *artist_url = uri_escape (artist, 0); - char *album_url = uri_escape (album, 0); + char *artist_url = NULL; + char *album_url = NULL; + +retry: + artist_url = uri_escape (artist, 0); + album_url = uri_escape (album, 0); snprintf (url, sizeof (url), BASE_URL "?method=album.getinfo&api_key=" API_KEY "&artist=%s&album=%s", artist_url, album_url); free (artist_url); + artist_url = NULL; free (album_url); + album_url = NULL; DB_FILE *fp = deadbeef->fopen (url); if (!fp) { @@ -78,6 +84,11 @@ fetch_from_lastfm (const char *artist, const char *album, const char *dest) char *end = strstr (img, "</image>"); if (!end || end == img) { + if (artist != album) { + artist = album; + goto retry; + } + trace ("fetch_from_lastfm: bad xml (or image not found) from %s\n", url); return -1; } |