From 270b44e22530659de7a81ece0260fdeee268362c Mon Sep 17 00:00:00 2001 From: rogersun Date: Tue, 7 Jul 2026 08:54:12 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=83=AD=E5=BA=A6=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E7=BC=BA=E5=A4=B1=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ai/utils/movie_data.py | 7 +++++-- ai/utils/show_func.py | 26 +++++++++++--------------- ai/utils/show_prompt.py | 4 ++-- 3 files changed, 18 insertions(+), 19 deletions(-) diff --git a/ai/utils/movie_data.py b/ai/utils/movie_data.py index 28daf00..c381da7 100644 --- a/ai/utils/movie_data.py +++ b/ai/utils/movie_data.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, diff --git a/ai/utils/show_func.py b/ai/utils/show_func.py index a8006e1..6d2576c 100644 --- a/ai/utils/show_func.py +++ b/ai/utils/show_func.py @@ -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') - - movie_data = MovieData() - movie_name_list = [] - for m in movie_old: - 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) + 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() + 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) 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 \ No newline at end of file diff --git a/ai/utils/show_prompt.py b/ai/utils/show_prompt.py index 47c8be5..496b555 100644 --- a/ai/utils/show_prompt.py +++ b/ai/utils/show_prompt.py @@ -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,