Example #1
0
    def songs_search_resolver(json={}):
        """
        解析音乐的搜索结果
            重点拿到 id 就好了,其余的交给 detail 去解析
        :param song:
        :param json:
        :return:
        """
        result = {'data': [], 'count': 0}

        try:
            if json.get('code') is 200:
                songs = json.get('result').get('songs')
                count = json.get('result').get('songCount')
                result['count'] = count

                for item in songs:
                    song = Song()
                    song.set_id(item.get('id'))
                    song.set_name(item.get('name'))
                    song.set_picture_url(item.get('al').get('picUrl'))
                    song.set_duration(item.get('dt'))
                    name = ''
                    ars = item.get('ar')
                    for ar in ars:
                        if len(ars) - 1 is ars.index(ar):
                            name += ar.get('name')
                        else:
                            name += ar.get('name') + '/'
                    song.set_artist(name)

                    album = Album()
                    album.set_id(item.get('al').get('id'))
                    album.set_name(item.get('al').get('name'))
                    album.set_picture_url(item.get('al').get('picUrl'))

                    song.set_album(album)

                    privilege = Privilege.dict_to_object(
                        item.get('privilege'), Privilege())
                    song.set_privilege(privilege)

                    result.get('data').append(song.to_json())

        except Exception as e:
            raise NeteaseResolverException(
                'resolver exception; json: {}'.format(json))
        finally:
            return result