<%page args="error, list, artist, stylesheet, datasource" /> <%! import re import cgi import rfc822 from gettext import ngettext def cleanup(text): return re.sub(r'\([^\)]*\)', '', text) def sec2hms(time): hr = time / 3600 if hr > 0: time %= 3600 mn = time / 60 sec = time % 60 if hr > 0: return _("%d:%02d:%02d") % (hr,mn,sec) else: return _("%d:%02d") %(mn,sec) def format_year(date): try: parsed = rfc822.parsedate(date) except Exception, e: return "" if parsed is None: return "" else: return '[' + str(parsed[0]) + ']' %> %if error is None: <% num_albums = min(8, len(list)) %>

${ _("Top albums by %s") % ("" + cgi.escape(artist, True) + "") }

%for i, entry in enumerate(list) : <% if 'tracklist' not in entry or len(entry['tracklist']) == 0: continue if i == num_albums: break %>
${entry['images'] | h}

${entry['title'] | h} %if 'releasedate' in entry: ${ format_year(entry['releasedate']) } %endif

%if 'duration' in entry: <% album_time = sec2hms(entry['duration']) tracks = len(entry['tracklist']) str = ngettext("%s (%d track)", "%s (%d tracks)", tracks) %>

${ str % (album_time, tracks) }

%endif %if 'tracklist' in entry: %for num, title, time in entry['tracklist'] : <% time = sec2hms(time) title = cleanup(title) num = num+1 %> %endfor %else:

${ _("Track list not available") }

%endif
%endfor

${datasource}

%else:

${ _("Unable to retrieve album information:") }

${error | h}

%endif