diff --git a/pandora/item/models.py b/pandora/item/models.py index 92fb63e25..32903aa8d 100644 --- a/pandora/item/models.py +++ b/pandora/item/models.py @@ -617,11 +617,50 @@ class Item(models.Model): return i def get_item_description(self): - if settings.USE_IMDB: - info = tuple([self.data.get(k, 0) for k in ['hue', 'saturation', 'lightness']]) - description = 'Hue: %.3f, Saturation: %.3f, Lightness: %.3f' % info - else: - description = ox.strip_tags(self.get('summary', '')) + return ox.strip_tags( + self.get_item_description_html().replace( + '
', '; ' + ) + ) + + def get_item_description_html(self): + description = '' + data = self.get_json() + info = [] + for key in [ + 'director', 'writer', 'producer', + 'cinematographer', 'editor', 'actor' + ]: + value = data.get(key, []) + if value: + info.append('%s: %s' % ( + 'Cast' if key == 'actor' else key.capitalize(), + ', '.join(value) + )) + if info: + description += '
%s
' % '; '.join(info) + info = [] + for key in [ + 'duration', 'aspectratio', + 'hue', 'saturation', 'lightness', + 'volume', 'cutsperminute' + ]: + value = data.get(key, 0) + if value: + info.append('%s: %s' % ( + 'Aspect Ratio' if key == 'aspectratio' + else 'Cuts per Minute' if key == 'cutsperminute' + else key.capitalize(), + ox.format_duration(value * 1000 if value else 0, milliseconds=False) if key == 'duration' + else '%.3f:1' % value if key == 'aspectratio' + else '%.3f' % value + )) + if info: + description += '
%s
' % '; '.join(info) + if not settings.USE_IMDB: + value = data.get('summary', '') + if value: + description += '
Summary: %s
' % value return description def oxdb_id(self):