def service_search_video(**kw): kw['service'] = 'video' kw = util_pattern_format_param(**kw) # Search configs if 'slice' not in kw: kw['slice'] = conf.SEARCH_SLICE if 'ignore_case' not in kw: kw['ignore_case'] = conf.SEARCH_IGNORE_CASE if 'exact' not in kw: kw['exact'] = conf.SEARCH_EXACT # TODO: add typo allowance, etc. # Search # TODO: Support aggregation pipeline if kw['ignore_case'] is False or kw['exact'] is True or kw['slice']\ is True: kw = util_pattern_slice(**kw) kw = util_pattern_build(**kw) res_search = service_search_video_by_pattern(**kw) elif 'pattern' in kw and kw['pattern'] is True: # Pattern search kw = util_pattern_build(**kw) res_search = service_search_video_by_pattern(**kw) elif 'aggregate' in kw and kw['aggregate'] is True: # Aggregate search res_search = service_search_video_by_aggregation(**kw) for res in res_search: res['video_id'] = str(res['_id']) res.pop('_id') for res in res_search: user = query_user_get_by_id(res['user_id'])[0] res['user_name'] = user.user_name return res_search else: # Contains keyword (single) search res_search = service_search_video_by_contains(**kw) res_array = util_serializer_mongo_results_to_array(res_search) for res in res_array: user = query_user_get_by_id(res['user_id'])[0] res['user_name'] = user.user_name # default format="dict" return res_array
def query_video_op_create(user_id: str, video_id: str, init_time=get_time_now_utc()): """ Create video operations :param user_id: user's unique id :param video_id: video's unique id :param init_time: op creation time (optional, default utc now) :return VideoOp model if succeeded, -1 if no such user, -2 if no such video, -3 if VideoOp exists """ if len(query_user_get_by_id(user_id)) == 0: raise MongoError(ErrorCode.MONGODB_USER_NOT_FOUND) if len(query_video_get_by_video_id(video_id)) == 0: raise MongoError(ErrorCode.MONGODB_VIDEO_NOT_FOUND) if len(query_video_op_get_by_user_video(user_id, video_id)) > 0: raise MongoError(ErrorCode.MONGODB_VIDEO_OP_EXISTS) video_op = VideoOp(user_id=user_id, video_id=video_id, process=0, comment="", like=False, dislike=False, star=False, process_date=init_time, comment_date=init_time, like_date=init_time, dislike_date=init_time, star_date=init_time) return video_op.save()
def service_user_get_process(user_id): # user_id check if not is_valid_id(user_id): raise ServiceError(ErrorCode.SERVICE_INVALID_ID_OBJ) if len(query_user_get_by_id(user_id)) <= 0: raise ServiceError(ErrorCode.SERVICE_USER_NOT_FOUND) # perform db operations and get result search_mongo = query_video_op_get_by_user_id(user_id) if len(search_mongo) == 0: return [] search_result = util_serializer_mongo_results_to_array(search_mongo) process_result = [] for each in search_result: process_result.append({ "video_id": each["video_id"], "user_id": each["user_id"], "process": str(each["process"]), "process_date": str(each["process_date"]) }) return process_result
def service_video_comments(**kw): kw['service'] = 'video' kw = util_pattern_format_param(**kw) # keyword check and formatting if 'video_id' not in kw: raise ServiceError(ErrorCode.SERVICE_MISSING_PARAM) if not is_valid_id(kw["video_id"]): raise ServiceError(ErrorCode.SERVICE_INVALID_ID_OBJ) # perform db operations and get result search_mongo = query_video_op_get_by_video_id(kw["video_id"]) if len(search_mongo) == 0: return [] search_result = util_serializer_mongo_results_to_array(search_mongo) comments_result = [] for each in search_result: if each["comment"] != "": user_obj = query_user_get_by_id(each["user_id"])[0].to_dict() comments_result.append({ "video_id": each["video_id"], "user_id": each["user_id"], "user_name": user_obj["user_name"], "user_thumbnail": user_obj["user_thumbnail"], "comment": each["comment"], "comment_date": str(each["comment_date"]) }) return comments_result
def service_auth_user_get(token, user_id): users = query_user_get_by_id(user_id) if len(users) == 0: raise ServiceError(ErrorCode.SERVICE_USER_NOT_FOUND) user = users[0].to_dict() if user['user_status'] == 'public' or token == user_id: return True return False
def service_user_get_user(user_id): # user_id check if not is_valid_id(user_id): raise ServiceError(ErrorCode.SERVICE_INVALID_ID_OBJ) users = query_user_get_by_id(user_id) if len(users) == 0: raise ServiceError(ErrorCode.SERVICE_USER_NOT_FOUND) user_array = util_serializer_mongo_results_to_array(users) return user_array[0]
def query_video_create(user_id: str): """ Create Video :param user_id: (required) user's unique id :return: video uuid """ if len(query_user_get_by_id(user_id)) == 0: raise MongoError(ErrorCode.MONGODB_USER_NOT_FOUND) # Construct Video Model video = Video(user_id=user_id, video_title="", video_raw_content="", video_raw_status="pending", video_status="public", video_raw_size=0, video_duration=0, video_channel="", video_tag=[], video_category=[], video_description="", video_language="", video_view=0, video_comment=0, video_like=0, video_dislike=0, video_star=0, video_share=0, video_thumbnail="", video_upload_date=get_time_now_utc(), video_uri=VideoURI()) video.save() aws_uri = conf.AWS_STREAMING_FOLDER + str(video.id) + '_' aws_low = aws_uri + conf.AWS_STREAMING_LOW + conf.AWS_STREAMING_FORMAT aws_mid = aws_uri + conf.AWS_STREAMING_MID + conf.AWS_STREAMING_FORMAT aws_high = aws_uri + conf.AWS_STREAMING_HIGH + conf.AWS_STREAMING_FORMAT aws_thumbnail = conf.AWS_THUMBNAIL_FOLDER + \ str(video.id) + conf.AWS_THUMBNAIL_FORMAT Video.objects(id=video.id).update(video_uri__video_uri_low=aws_low) Video.objects(id=video.id).update(video_uri__video_uri_mid=aws_mid) Video.objects(id=video.id).update(video_uri__video_uri_high=aws_high) Video.objects(id=video.id).update(video_thumbnail=aws_thumbnail) return str(video.id)
def service_user_update_info(**kw): kw['service'] = 'user' kw = util_pattern_format_param(**kw) if 'user_id' not in kw: raise ServiceError(ErrorCode.SERVICE_MISSING_USER_ID) if 'user_status' in kw: query_user_update_status(kw['user_id'], kw['user_status']) if 'user_name' in kw: query_user_update_name(kw['user_id'], kw['user_name']) if 'user_email' in kw: query_user_update_email(kw['user_id'], kw['user_email']) if 'user_password' in kw: query_user_update_password(kw['user_id'], kw['user_password']) if 'user_thumbnail' in kw: query_user_update_thumbnail(kw['user_id'], kw['user_thumbnail']) query_user_update_details(**kw) return query_user_get_by_id(kw['user_id'])[0].to_dict()
def service_user_login(**kw): kw['service'] = 'user' kw = util_pattern_format_param(**kw) if 'user_name' in kw and 'user_password' in kw: users = query_user_get_by_name(kw['user_name']) if len(users) == 0: raise ServiceError(ErrorCode.SERVICE_USER_NOT_FOUND) user = users[0] if user.to_dict()["user_status"] == "closed": raise ServiceError(ErrorCode.SERVICE_USER_CLOSED) if util_hash_encode(kw['user_password']) != user.user_password: raise ServiceError(ErrorCode.SERVICE_USER_PASS_WRONG) elif 'user_email' in kw and 'user_password' in kw: users = query_user_get_by_email(kw['user_email']) if len(users) == 0: raise ServiceError(ErrorCode.SERVICE_USER_NOT_FOUND) user = users[0] if user.to_dict()["user_status"] == "closed": raise ServiceError(ErrorCode.SERVICE_USER_CLOSED) if util_hash_encode(kw['user_password']) != user.user_password: raise ServiceError(ErrorCode.SERVICE_USER_PASS_WRONG) elif 'user' in kw and 'user_password' in kw: user_names = query_user_get_by_name(kw['user']) user_emails = query_user_get_by_email(kw['user']) if len(user_emails) == 0 and len(user_names) == 0: raise ServiceError(ErrorCode.SERVICE_USER_NOT_FOUND) elif len(user_emails) != 0: user = user_emails[0] elif len(user_names) != 0: user = user_names[0] if user.to_dict()["user_status"] == "closed": raise ServiceError(ErrorCode.SERVICE_USER_CLOSED) if util_hash_encode(kw['user_password']) != user.user_password: raise ServiceError(ErrorCode.SERVICE_USER_PASS_WRONG) else: raise ServiceError(ErrorCode.SERVICE_MISSING_PARAM) uid = user.to_dict()['user_id'] if 'ip' in kw: query_user_add_login(uid, ip=kw['ip']) return query_user_get_by_id(uid)[0].to_dict()
def service_video_info(**kw): kw['service'] = 'video' kw = util_pattern_format_param(**kw) # keyword check and formatting if 'video_id' not in kw: raise ServiceError(ErrorCode.SERVICE_MISSING_PARAM) if not is_valid_id(kw["video_id"]): raise ServiceError(ErrorCode.SERVICE_INVALID_ID_OBJ) # perform db operations and get result video = query_video_get_by_video_id(kw["video_id"]) if len(video) == 0: raise ServiceError(ErrorCode.SERVICE_VIDEO_NOT_FOUND) res = video[0].to_dict() user_id = res["user_id"] user_obj = query_user_get_by_id(user_id)[0].to_dict() res["user_name"] = user_obj["user_name"] res["user_thumbnail"] = user_obj["user_thumbnail"] return res