- self._fetch(payload)
- for art in self.current_element.get('similarartists').get('artist'):
- match = 100 * float(art.get('match'))
- yield Artist(mbid=art.get('mbid', None),
- name=art.get('name')), match
+ ans = self._fetch(payload)
+ # Artist might be found be return no 'artist' list…
+ # cf. "Mulatu Astatqe" vs. "Mulatu Astatqé" with autocorrect=0
+ # json format is broken IMHO, xml is more consistent IIRC
+ # Here what we got:
+ # >>> {"similarartists":{"#text":"\n","artist":"Mulatu Astatqe"}}
+ # autocorrect=1 should fix it, checking anyway.
+ simarts = ans.get('similarartists').get('artist')
+ if not isinstance(simarts, list):
+ raise WSError('Artist found but no similarities returned')
+ for art in ans.get('similarartists').get('artist'):
+ yield Artist(name=art.get('name'), mbid=art.get('mbid', None))