|
@@ -0,0 +1,171 @@
|
|
|
+#coding utf-8
|
|
|
+from db_helper import RedisHelper
|
|
|
+from config import set_config
|
|
|
+from utils import request_post
|
|
|
+import json
|
|
|
+
|
|
|
+config_ = set_config()
|
|
|
+def get_featurs(data, size, top_K, flow_pool_P, env_dict):
|
|
|
+ recall_list = []
|
|
|
+ vidKeys = []
|
|
|
+ feature_dict = {}
|
|
|
+ # defult value
|
|
|
+ apptype = 0
|
|
|
+ pagesource = ""
|
|
|
+ versioncode = ""
|
|
|
+ machineinfo_brand=""
|
|
|
+ recommendsource = ""
|
|
|
+ machineinfo_platform = ''
|
|
|
+ sencetype = ''
|
|
|
+ mid = ''
|
|
|
+ if env_dict:
|
|
|
+ apptype = env_dict.get('app_type','')
|
|
|
+ pagesource = env_dict.get('versioncode', '')
|
|
|
+ versioncode = env_dict.get('versioncode', '')
|
|
|
+ machineinfo_brand = env_dict.get('machineinfo_brand', '')
|
|
|
+ machineinfo_model = env_dict.get('machineinfo_model', '')
|
|
|
+ recommendsource = env_dict.get('recommendsource', '')
|
|
|
+ machineinfo_platform = env_dict.get('machineinfo_platform', '')
|
|
|
+ sencetype = env_dict.get('sencetype', '')
|
|
|
+ redisObj = RedisHelper()
|
|
|
+ pre_str = "v_ctr:"
|
|
|
+ mid_list = []
|
|
|
+ videoid_list = []
|
|
|
+ apptype_list = []
|
|
|
+ pagesource_list = []
|
|
|
+ versioncode_list = []
|
|
|
+ machineinfo_brand_list = []
|
|
|
+ machineinfo_model_list = []
|
|
|
+ recommendsource_list = []
|
|
|
+ machineinfo_platform_list = []
|
|
|
+ sencetype_list = []
|
|
|
+ day_rov_list = []
|
|
|
+ day_share_return_score_list = []
|
|
|
+ day_share_score_list = []
|
|
|
+ day_return_rate_list = []
|
|
|
+ day_ctr_score_list = []
|
|
|
+ day_play_pv_list = []
|
|
|
+ day_play_users_list = []
|
|
|
+ day_return_users_list = []
|
|
|
+ day_share_pv_list = []
|
|
|
+ day_view_pv_list = []
|
|
|
+ day_view_users_list = []
|
|
|
+ day_share_users = []
|
|
|
+ for recall_item in data['rov_pool_recall']:
|
|
|
+ if len(recall_item)<=0:
|
|
|
+ continue
|
|
|
+ vid = recall_item.get("videoId",0)
|
|
|
+ mid_list.append(mid)
|
|
|
+ videoid_list.append(vid)
|
|
|
+ apptype_list.append(apptype)
|
|
|
+ pagesource_list.append(pagesource)
|
|
|
+ versioncode_list.append(versioncode)
|
|
|
+ machineinfo_brand_list.append(machineinfo_brand)
|
|
|
+ machineinfo_model_list.append(machineinfo_model)
|
|
|
+ recommendsource_list.append(recommendsource)
|
|
|
+ machineinfo_platform_list.append(machineinfo_platform)
|
|
|
+ sencetype_list.append(sencetype)
|
|
|
+ vidKeys.append(pre_str + str(vid))
|
|
|
+ recall_list.append(recall_item)
|
|
|
+ video_static_info = redisObj.get_batch_key(vidKeys)
|
|
|
+ if video_static_info:
|
|
|
+ for i in range(len(video_static_info)):
|
|
|
+ try:
|
|
|
+ # print(video_scores[i])
|
|
|
+ vid = vidKeys[i].replace(pre_str,"")
|
|
|
+ if video_static_info[i] :
|
|
|
+ per_video_staic = json.loads(video_static_info[i])
|
|
|
+ if vid in feature_dict:
|
|
|
+ vid_fea_info = feature_dict[vid]
|
|
|
+ day_rov_list.append(per_video_staic[0])
|
|
|
+ day_share_return_score_list.append(per_video_staic[1])
|
|
|
+ day_share_score_list.append(per_video_staic[2])
|
|
|
+ day_return_rate_list.append(per_video_staic[3])
|
|
|
+ day_ctr_score_list.append(per_video_staic[4])
|
|
|
+ day_view_users_list.append(per_video_staic[5])
|
|
|
+ day_view_pv_list.append(per_video_staic[6])
|
|
|
+ day_play_users_list.append(per_video_staic[7])
|
|
|
+ day_play_pv_list.append(per_video_staic[8])
|
|
|
+ day_share_users.append(per_video_staic[9])
|
|
|
+ day_share_pv_list.append(per_video_staic[10])
|
|
|
+ day_return_users_list.append(per_video_staic[11])
|
|
|
+ except Exception:
|
|
|
+ day_rov_list.append(0.0)
|
|
|
+ day_share_return_score_list.append(0.0)
|
|
|
+ day_share_score_list.append(0.0)
|
|
|
+ day_return_rate_list.append(0.0)
|
|
|
+ day_ctr_score_list.append(0.0)
|
|
|
+ day_view_users_list.append(0)
|
|
|
+ day_view_pv_list.append(0)
|
|
|
+ day_play_users_list.append(0)
|
|
|
+ day_play_pv_list.append(0)
|
|
|
+ day_share_users.append(0)
|
|
|
+ day_share_pv_list.append(0)
|
|
|
+ day_return_users_list.append(0)
|
|
|
+ feature_dict["mid_list"] = mid_list
|
|
|
+ feature_dict["videoid_list"] = videoid_list
|
|
|
+ feature_dict["apptype_list"] = apptype_list
|
|
|
+ feature_dict["pagesource_list"] = pagesource_list
|
|
|
+ feature_dict["versioncode_list"] = versioncode_list
|
|
|
+ feature_dict["machineinfo_brand_list"] = machineinfo_brand_list
|
|
|
+ feature_dict["machineinfo_model_list"] = machineinfo_model_list
|
|
|
+ feature_dict["recommendsource_list"] = recommendsource_list
|
|
|
+ feature_dict["machineinfo_model_list"] = machineinfo_model_list
|
|
|
+ feature_dict["machineinfo_platform_list"] = machineinfo_platform_list
|
|
|
+ feature_dict["sencetype_lis"] = sencetype_list
|
|
|
+ feature_dict["day_rov_list"] = day_rov_list
|
|
|
+ feature_dict["day_share_return_score_list"] = day_share_return_score_list
|
|
|
+ feature_dict["day_share_score_list"] = day_share_score_list
|
|
|
+ feature_dict["day_return_rate_list"] = day_return_rate_list
|
|
|
+ feature_dict["day_ctr_score_list"] = day_ctr_score_list
|
|
|
+ feature_dict["day_ctr_score_list"] = day_ctr_score_list
|
|
|
+ feature_dict["day_play_pv_list"] = day_play_pv_list
|
|
|
+ feature_dict["day_play_users_list"] = day_play_users_list
|
|
|
+ feature_dict["day_return_users_list"] = day_return_users_list
|
|
|
+ feature_dict["day_share_pv_list"] = day_share_pv_list
|
|
|
+ feature_dict["day_view_pv_list"] = day_view_pv_list
|
|
|
+ feature_dict["day_view_users_list"] = day_view_users_list
|
|
|
+ feature_dict["day_share_users_list"] = day_share_users
|
|
|
+ return feature_dict
|
|
|
+
|
|
|
+def get_tf_serving_sores(feature_dict):
|
|
|
+ #for k, v in feature_dict:
|
|
|
+ inputs_data = {
|
|
|
+ "mid": feature_dict["mid_list"],
|
|
|
+ "videoid": feature_dict["videoid_list"],
|
|
|
+ "apptype": feature_dict["apptype_list"],
|
|
|
+ "pagesource": feature_dict["pagesource_list"],
|
|
|
+ "versioncode": feature_dict["versioncode_list"],
|
|
|
+ "machineinfo_brand": feature_dict["machineinfo_brand_list"],
|
|
|
+ "machineinfo_model": feature_dict["machineinfo_model_list"],
|
|
|
+ "recommendsource": feature_dict["recommendsource_list"],
|
|
|
+ "machineinfo_platform": feature_dict["machineinfo_platform_list"],
|
|
|
+ "sencetype": feature_dict["sencetype_list"],
|
|
|
+ "day_rov": feature_dict["day_rov_list"],
|
|
|
+ "day_share_return_score": feature_dict["day_share_return_score_list"],
|
|
|
+ "day_share_score": feature_dict["day_share_score_list"],
|
|
|
+ "day_return_rate": feature_dict["day_return_rate_list"],
|
|
|
+ "day_ctr_score": feature_dict["day_ctr_score_list"],
|
|
|
+ "day_play_pv": feature_dict["day_play_pv_list"],
|
|
|
+ "day_play_users": feature_dict["day_play_users_list"],
|
|
|
+ "day_share_pv": feature_dict["day_share_pv_list"],
|
|
|
+ "day_return_users": feature_dict["day_return_users_list"],
|
|
|
+ "day_share_users": feature_dict["day_share_users_list"],
|
|
|
+ "day_view_pv": feature_dict["day_view_pv_list"],
|
|
|
+ "day_view_users":feature_dict["day_view_users_list"]
|
|
|
+ }
|
|
|
+ request_data= {}
|
|
|
+ request_data["inputs"] = inputs_data
|
|
|
+ print(request_data)
|
|
|
+ # 调用http接口
|
|
|
+ result = request_post(request_url=config_.TF_SERVING_URL, request_data=request_data, timeout=(0.1, 1))
|
|
|
+
|
|
|
+ # print("result:", result)
|
|
|
+ if result is None:
|
|
|
+ # print("result is None")
|
|
|
+ # log_.info('过滤失败,types: {}'.format(types))
|
|
|
+ return []
|
|
|
+
|
|
|
+ print(result)
|
|
|
+
|
|
|
+ filtered_videos = result['data']
|