docs: def profile(ids=None, track_ids=None, buckets=None, limit=False):
      """get the profiles for multiple songs at once
          
      Args:
          ids (str or list): a song ID or list of song IDs
      
      Kwargs:
          buckets (list): A list of strings specifying which buckets to retrieve
  
          limit (bool): A boolean indicating whether or not to limit the results to one of the id spaces specified in buckets
      
      Returns:
          A list of term document dicts
      
      Example:
  
      >>> song_ids = ['SOBSLVH12A8C131F38', 'SOXMSGY1338A5D5873', 'SOJPHZO1376210AFE5', 'SOBHNKR12AB0186218', 'SOSJAHD13770F4D40C']
      >>> songs = song.profile(song_ids, buckets=['audio_summary'])
      [<song - Say It Ain't So>,
       <song - Island In The Sun>,
       <song - My Name Is Jonas>,
       <song - Buddy Holly>]
      >>> songs[0].audio_summary
      {u'analysis_url': u'https://echonest-analysis.s3.amazonaws.com/TR/7VRBNguufpHAQQ4ZjJ0eWsIQWl2S2_lrK-7Bp2azHOvPN4VFV-YnU7uO0dXgYtOKT-MTEa/3/full.json?Signature=hmNghHwfEsA4JKWFXnRi7mVP6T8%3D&Expires=1349809918&AWSAccessKeyId=AKIAJRDFEY23UEVW42BQ',
       u'audio_md5': u'b6079b2b88f8265be8bdd5fe9702e05c',
       u'danceability': 0.64540643050283253,
       u'duration': 255.92117999999999,
       u'energy': 0.30711665772260549,
       u'key': 8,
       u'liveness': 0.088994423525370583,
       u'loudness': -9.7799999999999994,
       u'mode': 1,
       u'speechiness': 0.031970700260699259,
       u'tempo': 76.049999999999997,
       u'time_signature': 4}
      >>> 
      """
      kwargs = {}
  
      if ids:
          if not isinstance(ids, list):
              ids = [ids]
          kwargs['id'] = ids
  
      if track_ids:
          if not isinstance(track_ids, list):
              track_ids = [track_ids]
          kwargs['track_id'] = track_ids
  
      buckets = buckets or []
      if buckets:
          kwargs['bucket'] = buckets
  
      if limit:
          kwargs['limit'] = 'true'
      
      result = util.callm("%s/%s" % ('song', 'profile'), kwargs)
      return [Song(**util.fix(s_dict)) for s_dict in result['response']['songs']]