def change_likes_of_pic(pic_id, num=1): pic_list = Picture.objects(id=pic_id) if (len(pic_list) <= 0): current_app.logger.info('change_likes_of_pic find id=' + str(pic_id) + ' cannot find the pic') return pic = pic_list[0] current_app.logger.info('change_likes_of_pic find id=' + str(pic_id) + ' to change it num by ' + str(num) + ' the original is :' + str(pic.likes)) pic.likes = pic.likes + num pic.save()
def randomly_get_pics(prefered_tags=[], num=20): pictures = [] if len(prefered_tags) == 0: pictures = Picture.objects().aggregate(*[ { '$sample': { 'size': num } }, ]) else: count_sum = 20 for i in range(0, len(prefered_tags)): if i != len(prefered_tags) - 1: cnt = random.randint(0, count_sum) else: cnt = count_sum if cnt > 0: pictures.extend(Picture.objects().aggregate(*[ { '$match': { 'tags': { '$eq': prefered_tags[i] } } }, { '$sample': { 'size': cnt } }, ])) count_sum -= cnt random.shuffle(pictures) return pictures
def recommend_likes(user, num=5): rec_dict = select_random_user_and_likes(user) rec_dict = fill_dict_with_others(rec_dict) item_sim = calculate_similar_items(rec_dict) result = get_recommended_items(rec_dict, item_sim, user.username) result = result[:5] no_0_result = [] for (r, pid) in result: if r > 0: no_0_result.append(pid) pics = Picture.objects(id__in=no_0_result) return pics