def save(cls, media):
recent_owner_ids = (memcache.get(cls.KEY_PRE_OWNER_IDS) or '').split()
recent_codes = cls._get_recent_codes()
codes_set = set(recent_codes)
owner_ids_set = set(recent_owner_ids)
new_media = []
for item in media:
if not TagValidator.is_valid_tags(item['tags']):
continue
if item['code'] in codes_set:
continue
if item['owner']['id'] in owner_ids_set:
continue
new_media.append(item)
owner_ids_set.add(item['owner']['id'])
codes_set.add(item['code'])
if not new_media:
return 0
tag_text = cls()
tag_text.text = '\n'.join(map(cls._to_line, new_media))
tag_text.put()
recent_codes.extend([x['code'] for x in media])
recent_owner_ids.extend([x['owner']['id'] for x in new_media])
cls._set_cache(recent_codes, cls.MAX_CODES_COUNT, cls.KEY_RECENT_CODES)
cls._set_cache(recent_owner_ids, cls.MAX_OWNER_COUNT, cls.KEY_PRE_OWNER_IDS)
tags = reduce(lambda y,x: y+x['tags'], new_media, [])
tags = set(tags)
cls._set_last_tags(tags)
return len(new_media)
评论列表
文章目录