修复热度信息缺失的问题

main
rogersun 1 week ago
parent 6ceeadfb29
commit 270b44e225
  1. 7
      ai/utils/movie_data.py
  2. 20
      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')
if not MovieHotInfo.objects.filter(Q(movie_zz_code=movie_code) & Q(req_date=today_obj)).exists():
print(f'热度数据中不存在日期为{today_str}专资编码为{movie_code}数据')
params = {
'movieCode': movie_code,
'timeStamp': self.ts,
@ -30,16 +31,18 @@ class MovieData:
}
req = requests.get(self.url, params=params)
print(req.request.url)
# print(json.dumps(req.json(), indent=4))
print(json.dumps(req.json(), indent=4))
req = req.json()
if (req['success'] is True) and req['data']['movieInfo'] != '':
print('从BI获取热度数据成功')
# 基础数据
info = req['data']['movieInfo']
movie_name = info['movie_name']
daily = req['data']['movieDailyBox']
if MovieHotInfo.objects.filter(Q(movie_name=movie_name) & Q(req_date=today_str)).exists():
print('热度数据中已包含同名影片')
return '', '', ''
# 生成标题
hot_info_list = ['影片名称', '想看数量', '鼎新热度指数']
@ -58,7 +61,7 @@ class MovieData:
for n in range(7, 9):
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_name=info['movie_name'],
req_date=today_str,

@ -98,21 +98,14 @@ def get_target_show(cinema, show_date):
# 从BI接口获取影片热度信息
def get_movie_hot_info_from_bi(cinema, show_date):
data = GetData(cinema)
movie_old = data.get_movie_info(show_date, 'old')
movie_new = data.get_movie_info(show_date, 'new')
show_type_list = ['old', 'new']
for show_type in show_type_list:
print('get_movie_hot_info_from_bi', show_type)
movie = data.get_movie_info(show_date, show_type)
movie_data = MovieData()
movie_name_list = []
for m in movie_old:
for m in movie:
name, title, hot = movie_data.get_data_from_bi(m['cinema_movie_num'], 'old')
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
# 从本地数据库中获取影片热度信息
@ -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_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:
print('if hot_data')
title = f"\t{hot_data[0].title}"
data_list = [title]
else:
return []
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(
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

@ -150,9 +150,9 @@ class ShowAI:
movie_data_new = get_all_movie_hot_info('today', 'new')
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}',
'\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':
pre_data = pre_data.replace('{target_already_show}',
'\t' if data.get_show_data(target_start,

Loading…
Cancel
Save