+ mane = (card['title'], mlpccg.CardDb.CardDb.set_ids[card['set']].upper())
+
+ elif card['type'] == 'Friend':
+ aspects[card['color']] += 1
+
+ elif card['type'] != 'Problem':
+ aspects[card['type']] += 1
+
+ aspects_sorted = sorted(aspects.iteritems(), reverse=True, key=operator.itemgetter(1))
+ aspects_sum = float(sum([aspect[1] for aspect in aspects_sorted]))
+ aspects_filtered = []
+ cutoff = 0.66
+ amount = 0.0
+ for aspect, value in aspects_sorted:
+ amount += value / aspects_sum
+ if amount < cutoff:
+ aspects_filtered += [aspect]
+ else:
+ break
+
+ return (mane, aspects_filtered)
+
+ @property
+ def description(self):
+ mane, aspects = self.aspects
+ if not mane or len(aspects) == 0:
+ return 'Unknown'
+
+ return '%s %s %s' % (mane[0], mane[1], '/'.join(aspects))
+
+ @property
+ def ponyhead_link(self):
+ cards = defaultdict(int)
+ for card in self.cards:
+ cards[card['id'].replace('f', 'F')] += 1