修复热度信息缺失的问题

main
rogersun 1 week ago
parent 6ceeadfb29
commit 270b44e225
  1. 7
      ai/utils/movie_data.py
  2. 26
      ai/utils/show_func.py
  3. 4
      ai/utils/show_prompt.py

@ -23,6 +23,7 @@ class MovieData:
# 如果本地有则读取本地数据 # 如果本地有则读取本地数据
today_obj = datetime.datetime.strptime(today_str, '%Y-%m-%d') today_obj = datetime.datetime.strptime(today_str, '%Y-%m-%d')
if not MovieHotInfo.objects.filter(Q(movie_zz_code=movie_code) & Q(req_date=today_obj)).exists(): if not MovieHotInfo.objects.filter(Q(movie_zz_code=movie_code) & Q(req_date=today_obj)).exists():
print(f'热度数据中不存在日期为{today_str}专资编码为{movie_code}数据')
params = { params = {
'movieCode': movie_code, 'movieCode': movie_code,
'timeStamp': self.ts, 'timeStamp': self.ts,
@ -30,16 +31,18 @@ class MovieData:
} }
req = requests.get(self.url, params=params) req = requests.get(self.url, params=params)
print(req.request.url) print(req.request.url)
# print(json.dumps(req.json(), indent=4)) print(json.dumps(req.json(), indent=4))
req = req.json() req = req.json()
if (req['success'] is True) and req['data']['movieInfo'] != '': if (req['success'] is True) and req['data']['movieInfo'] != '':
print('从BI获取热度数据成功')
# 基础数据 # 基础数据
info = req['data']['movieInfo'] info = req['data']['movieInfo']
movie_name = info['movie_name'] movie_name = info['movie_name']
daily = req['data']['movieDailyBox'] daily = req['data']['movieDailyBox']
if MovieHotInfo.objects.filter(Q(movie_name=movie_name) & Q(req_date=today_str)).exists(): if MovieHotInfo.objects.filter(Q(movie_name=movie_name) & Q(req_date=today_str)).exists():
print('热度数据中已包含同名影片')
return '', '', '' return '', '', ''
# 生成标题 # 生成标题
hot_info_list = ['影片名称', '想看数量', '鼎新热度指数'] hot_info_list = ['影片名称', '想看数量', '鼎新热度指数']
@ -58,7 +61,7 @@ class MovieData:
for n in range(7, 9): for n in range(7, 9):
data_list.append({'date': f"{daily[n]['businessDate']}(预售)", 'value': f"{daily[n]['boxRate']}%"}) data_list.append({'date': f"{daily[n]['businessDate']}(预售)", 'value': f"{daily[n]['boxRate']}%"})
# 写入数据 # 写入数据
MovieHotInfo.objects.create( MovieHotInfo.objects.update_or_create(
movie_zz_code=movie_code, movie_zz_code=movie_code,
movie_name=info['movie_name'], movie_name=info['movie_name'],
req_date=today_str, req_date=today_str,

@ -98,21 +98,14 @@ def get_target_show(cinema, show_date):
# 从BI接口获取影片热度信息 # 从BI接口获取影片热度信息
def get_movie_hot_info_from_bi(cinema, show_date): def get_movie_hot_info_from_bi(cinema, show_date):
data = GetData(cinema) data = GetData(cinema)
movie_old = data.get_movie_info(show_date, 'old') show_type_list = ['old', 'new']
movie_new = data.get_movie_info(show_date, 'new') for show_type in show_type_list:
print('get_movie_hot_info_from_bi', show_type)
movie_data = MovieData() movie = data.get_movie_info(show_date, show_type)
movie_name_list = [] movie_data = MovieData()
for m in movie_old: for m in movie:
name, title, hot = movie_data.get_data_from_bi(m['cinema_movie_num'], 'old') name, title, hot = movie_data.get_data_from_bi(m['cinema_movie_num'], 'old')
print('name, title, hot', name, title, hot) print('name, title, hot', name, title, hot)
if hot != '' and name not in movie_name_list:
movie_name_list.append(name)
for m in movie_new:
name, title, hot = movie_data.get_data_from_bi(m['cinema_movie_num'], 'new')
print('name, title, hot', name, title, hot)
if hot != '' and name not in movie_name_list:
movie_name_list.append(name)
return True return True
# 从本地数据库中获取影片热度信息 # 从本地数据库中获取影片热度信息
@ -124,11 +117,14 @@ def get_all_movie_hot_info(req_date: str = 'today', show_type:str='old', get_num
hot_order_day = get_runtime_val('hot_order_day') hot_order_day = get_runtime_val('hot_order_day')
hot_data = MovieHotInfo.objects.filter(Q(req_date=date_sr) & Q(show_type=show_type)).order_by(hot_order_day).all()[:get_num] hot_data = MovieHotInfo.objects.filter(Q(req_date=date_sr) & Q(show_type=show_type)).order_by(hot_order_day).all()[:get_num]
if hot_data: if hot_data:
print('if hot_data')
title = f"\t{hot_data[0].title}" title = f"\t{hot_data[0].title}"
data_list = [title] data_list = [title]
else: else:
return [] return []
for hot in hot_data: for hot in hot_data:
print(f"\t{hot.movie_name}》,{hot.wants},{hot.hots},{','.join([d['value'] for d in json.loads(hot.day_data)])}")
data_list.append( data_list.append(
f"\t{hot.movie_name}》,{hot.wants},{hot.hots},{','.join([d['value'] for d in json.loads(hot.day_data)])}") f"\t{hot.movie_name}》,{hot.wants},{hot.hots},{','.join([d['value'] for d in json.loads(hot.day_data)])}")
print(data_list)
return data_list return data_list

@ -150,9 +150,9 @@ class ShowAI:
movie_data_new = get_all_movie_hot_info('today', 'new') movie_data_new = get_all_movie_hot_info('today', 'new')
pre_data = pre_data.replace('{hot_movie_old}', pre_data = pre_data.replace('{hot_movie_old}',
'\n'.join(movie_data_old) if len(movie_data_old) == 0 else '\t') '\n'.join(movie_data_old) if len(movie_data_old) > 0 else '\t')
pre_data = pre_data.replace('{hot_movie_new}', pre_data = pre_data.replace('{hot_movie_new}',
'\n'.join(movie_data_new) if len(movie_data_new) == 0 else '\t') '\n'.join(movie_data_new) if len(movie_data_new) > 0 else '\t')
if get_runtime_val('real_target') == '1': if get_runtime_val('real_target') == '1':
pre_data = pre_data.replace('{target_already_show}', pre_data = pre_data.replace('{target_already_show}',
'\t' if data.get_show_data(target_start, '\t' if data.get_show_data(target_start,

Loading…
Cancel
Save