|  | @@ -60,14 +60,12 @@ def get_feature_data(now_date, project, table):
 | 
	
		
			
				|  |  |      return feature_df
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -def video_rank(app_type, df, now_date, now_h, return_count):
 | 
	
		
			
				|  |  | +def video_rank(app_type, df, now_date):
 | 
	
		
			
				|  |  |      """
 | 
	
		
			
				|  |  |      对视频进行排序
 | 
	
		
			
				|  |  |      :param app_type:
 | 
	
		
			
				|  |  |      :param df:
 | 
	
		
			
				|  |  |      :param now_date:
 | 
	
		
			
				|  |  | -    :param now_h:
 | 
	
		
			
				|  |  | -    :param return_count: 小时级数据回流限制数
 | 
	
		
			
				|  |  |      :return:
 | 
	
		
			
				|  |  |      """
 | 
	
		
			
				|  |  |      df = df.fillna(0)
 | 
	
	
		
			
				|  | @@ -90,44 +88,30 @@ def video_rank(app_type, df, now_date, now_h, return_count):
 | 
	
		
			
				|  |  |      filtered_df_1 = filtered_df_1.sort_values(by=['站外播放量'], ascending=False)
 | 
	
		
			
				|  |  |      log_.info(f'filtered_df_1 count = {len(filtered_df_1)}')
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    # 排序合并
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    # 获取符合进入召回源条件的视频,进入条件:小时级回流>=20 && score>=0.005
 | 
	
		
			
				|  |  | -    h_recall_df = df[(df['lastonehour_return'] >= return_count) & (df['score'] >= 0.005)]
 | 
	
		
			
				|  |  | -    h_recall_videos = h_recall_df['videoid'].to_list()
 | 
	
		
			
				|  |  | -    log_.info(f'h_recall videos count = {len(h_recall_videos)}')
 | 
	
		
			
				|  |  | -    # 不符合进入召回源条件的视频
 | 
	
		
			
				|  |  | -    df = df.append(h_recall_df)
 | 
	
		
			
				|  |  | -    h_else_df = df.drop_duplicates(['videoid'], keep=False)
 | 
	
		
			
				|  |  | -    h_else_df = h_else_df.sort_values(by=['score'], ascending=False)
 | 
	
		
			
				|  |  | -    h_else_videos = h_else_df['videoid'].to_list()
 | 
	
		
			
				|  |  | -    # 合并,给定分数
 | 
	
		
			
				|  |  | -    final_videos = h_recall_videos + h_else_videos
 | 
	
		
			
				|  |  | +    # 排序合并,给定分数
 | 
	
		
			
				|  |  | +    merge_df = filtered_df_1.append(filtered_df_6)
 | 
	
		
			
				|  |  | +    merge_df = merge_df.drop_duplicates(['videoid'], keep=False)
 | 
	
		
			
				|  |  | +    merge_videos = merge_df['videoid'].to_list()
 | 
	
		
			
				|  |  |      final_result = {}
 | 
	
		
			
				|  |  | -    step = round(100/len(final_videos), 3)
 | 
	
		
			
				|  |  | -    for i, video_id in enumerate(final_videos):
 | 
	
		
			
				|  |  | +    step = round(100 / len(merge_videos), 3)
 | 
	
		
			
				|  |  | +    for i, video_id in enumerate(merge_videos):
 | 
	
		
			
				|  |  |          score = 100 - i * step
 | 
	
		
			
				|  |  |          final_result[int(video_id)] = score
 | 
	
		
			
				|  |  |      # 写入对应的redis
 | 
	
		
			
				|  |  | -    key_name = \
 | 
	
		
			
				|  |  | -        f"{config_.RECALL_KEY_NAME_PREFIX_APP_TYPE}{app_type}.{datetime.datetime.strftime(now_date, '%Y%m%d')}.{now_h}"
 | 
	
		
			
				|  |  | -    if len(final_result) > 0:
 | 
	
		
			
				|  |  | -        redis_helper = RedisHelper()
 | 
	
		
			
				|  |  | -        redis_helper.add_data_with_zset(key_name=key_name, data=final_result, expire_time=23 * 3600)
 | 
	
		
			
				|  |  | +    # key_name = \
 | 
	
		
			
				|  |  | +    #     f"{}{app_type}.{datetime.datetime.strftime(now_date, '%Y%m%d')}"
 | 
	
		
			
				|  |  | +    # if len(final_result) > 0:
 | 
	
		
			
				|  |  | +    #     redis_helper = RedisHelper()
 | 
	
		
			
				|  |  | +    #     redis_helper.add_data_with_zset(key_name=key_name, data=final_result, expire_time=23 * 3600)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  def rank_by_h(app_type, now_date, now_h, return_count_list, project, table):
 | 
	
		
			
				|  |  |      # 获取特征数据
 | 
	
		
			
				|  |  |      feature_df = get_feature_data(now_date=now_date, project=project, table=table)
 | 
	
		
			
				|  |  | -    # 计算score
 | 
	
		
			
				|  |  | -    score_df = cal_score(df=feature_df)
 | 
	
		
			
				|  |  |      # rank
 | 
	
		
			
				|  |  |      for cnt in return_count_list:
 | 
	
		
			
				|  |  |          log_.info(f"return_count = {cnt}")
 | 
	
		
			
				|  |  | -        video_rank(app_type=app_type, df=score_df, now_date=now_date, now_h=now_h, return_count=cnt)
 | 
	
		
			
				|  |  | +        video_rank(app_type=app_type, df=feature_df, now_date=now_date)
 | 
	
		
			
				|  |  |      # to-csv
 | 
	
		
			
				|  |  | -    score_filename = f"score_{app_type}_{datetime.datetime.strftime(now_date, '%Y%m%d%H')}.csv"
 | 
	
		
			
				|  |  | -    score_df.to_csv(f'./data/{score_filename}')
 | 
	
		
			
				|  |  | +    # score_filename = f"score_{app_type}_{datetime.datetime.strftime(now_date, '%Y%m%d%H')}.csv"
 | 
	
		
			
				|  |  | +    # score_df.to_csv(f'./data/{score_filename}')
 |