code: def get_tracks(self, catalog, cache=True):
          
          if not (cache and ('tracks' in self.cache) and (catalog in [td['catalog'] for td in self.cache['tracks']])):
              kwargs = {
                  'bucket':['tracks', 'id:%s' % catalog],
              }
                          
              response = self.get_attribute('profile', **kwargs)
              if not 'tracks' in self.cache:
                  self.cache['tracks'] = []
              # don't blow away the cache for other catalogs
              potential_tracks = response['songs'][0].get('tracks', [])
              existing_track_ids = [tr['foreign_id'] for tr in self.cache['tracks']]
              new_tds = filter(lambda tr: tr['foreign_id'] not in existing_track_ids, potential_tracks)
              self.cache['tracks'].extend(new_tds)
          return filter(lambda tr: tr['catalog']==util.map_idspace(catalog), self.cache['tracks'])
docs: Get the tracks for a song given a catalog.
          
          Args:
              catalog (str): a string representing the catalog whose track you want to retrieve.
          
          Returns:
              A list of Track dicts.
          
          Example:
              >>> s = song.Song('SOWDASQ12A6310F24F')
              >>> s.get_tracks('7digital')[0]
              {u'catalog': u'7digital',
               u'foreign_id': u'7digital:track:8445818',
               u'id': u'TRJGNNY12903CC625C',
               u'preview_url': u'http://previews.7digital.com/clips/34/8445818.clip.mp3',
               u'release_image': u'http://cdn.7static.com/static/img/sleeveart/00/007/628/0000762838_200.jpg'}
              >>>