From e45df85c9ec11103db1cb424b3caae9fce7ec422 Mon Sep 17 00:00:00 2001 From: rogersun Date: Mon, 10 Aug 2026 18:31:58 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=8F=90=E7=A4=BA=E8=AF=8D?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E7=82=B9=E6=98=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ai/utils/show_database.py | 57 ++++++++++++++++++++++++++++++++++++++- ai/utils/sql.py | 19 ++++++++++--- 2 files changed, 71 insertions(+), 5 deletions(-) diff --git a/ai/utils/show_database.py b/ai/utils/show_database.py index ac424a3..38dffb5 100644 --- a/ai/utils/show_database.py +++ b/ai/utils/show_database.py @@ -120,10 +120,65 @@ class GetData: if new is not None and len(new) > 0: list(available_movie).extend(list(new)) available_movie_list = [ - f"\t{m['cinema_movie_alias']} - 影片id:{m['cinema_movie_id']},影片时长:{m['cinema_movie_time']},语言:{m['language']},制式:{m['media_type']}, 最早排片开始时间:{m['cinema_movie_start_datetime']}, 最晚排片截止时间:{m['cinema_movie_end_datetime']};" + f"\t{m['cinema_movie_alias']} - 影片id:{m['cinema_movie_id']},影片时长:{m['cinema_movie_time']},语言:{m['language']},制式:{m['media_type']}, 最早排片开始时间:{self.get_start(m,date)}, 最晚排片截止时间:{self.get_end(m,date)};" for m in available_movie] return '\n'.join(available_movie_list) + @staticmethod + def get_start(movie, show_date_str): + start = '06:00' + show_date = datetime.datetime.strptime(show_date_str, '%Y-%m-%d') + show_start_datetime = movie['cinema_movie_show_datetime'] + # show_end_datetime = movie['cinema_movie_offline_date'] + if show_date.date() < show_start_datetime.date(): + preview = json.loads(movie['cinema_movie_preview_show_time']) + if movie.get('cinema_movie_preview_show_type') == 1: + for p in preview: + p_start_date = datetime.datetime.strptime(p['startDate'], '%Y-%m-%d') + p_end_date = datetime.datetime.strptime(p['endDate'], '%Y-%m-%d') + if p_start_date.date() <= show_date.date() <= p_end_date.date(): + start = p['startTime'] + break + else: + for p in preview: + p_start_datetime = datetime.datetime.strptime(p['start'], '%Y-%m-%d %H:%M:%S') + # p_end_datetime = datetime.datetime.strptime(p['end'], '%Y-%m-%d %H:%M:%S') + if p_start_datetime.date() == show_date.date(): + start = p_start_datetime.strftime('%H:%M') + break + else: + if show_date.date() == show_start_datetime.date(): + start = datetime.datetime.strftime(show_start_datetime, '%H:%M') + return start + + @staticmethod + def get_end(movie, show_date_str): + end = '23:59' + show_date = datetime.datetime.strptime(show_date_str, '%Y-%m-%d') + show_start_datetime = movie['cinema_movie_show_datetime'] + show_end_datetime = movie['cinema_movie_offline_date'] + if show_date.date() < show_start_datetime.date(): + preview = json.loads(movie['cinema_movie_preview_show_time']) + if movie.get('cinema_movie_preview_show_type') == 1: + for p in preview: + p_start_date = datetime.datetime.strptime(p['startDate'], '%Y-%m-%d') + p_end_date = datetime.datetime.strptime(p['endDate'], '%Y-%m-%d') + if p_start_date.date() <= show_date.date() <= p_end_date.date(): + end = p['endTime'] + break + else: + for p in preview: + # p_start_datetime = datetime.datetime.strptime(p['start'], '%Y-%m-%d %H:%M:%S') + p_end_datetime = datetime.datetime.strptime(p['end'], '%Y-%m-%d %H:%M:%S') + if p_end_datetime.date() == show_date.date(): + end = p_end_datetime.strftime('%H:%M') + break + else: + if show_date.date() == show_end_datetime.date(): + end = datetime.datetime.strftime(show_end_datetime, '%H:%M') + return end + + # 获取新上映的影片 def get_new_movie(self, date): start_datetime = datetime.datetime.strptime(date, '%Y-%m-%d') diff --git a/ai/utils/sql.py b/ai/utils/sql.py index 08b43c1..d9c6158 100644 --- a/ai/utils/sql.py +++ b/ai/utils/sql.py @@ -203,8 +203,11 @@ SELECT cmi.cinema_movie_alias, cmi.cinema_movie_time, cmlt.cinema_movie_lang_type_desc as language, scvm.system_const_val_desc as media_type, - cmi.cinema_movie_start_datetime, - cmi.cinema_movie_end_datetime + cmi.cinema_movie_show_date, + cmi.cinema_movie_show_datetime, + cmi.cinema_movie_offline_date, + cmi.cinema_movie_preview_show_type, + cmi.cinema_movie_preview_show_time FROM cinema_movie_info cmi JOIN cinema_movie_lang_type cmlt ON cmi.cinema_movie_lang_id = cmlt.cinema_movie_lang_type_id JOIN system_const_val_map scvm ON cmi.cinema_movie_media_type = scvm.system_const_val_value @@ -330,8 +333,11 @@ SELECT sd.cinema_movie_alias, sd.cinema_movie_time, sd.language, sd.media_type, - sd.cinema_movie_start_datetime, - sd.cinema_movie_end_datetime, + sd.cinema_movie_show_date, + sd.cinema_movie_show_datetime, + sd.cinema_movie_offline_date, + sd.cinema_movie_preview_show_type, + sd.cinema_movie_preview_show_time, SUM(sd.total_income) total_income, COUNT(sd.cinema_movie_show_id) show_count FROM (SELECT mi.cinema_movie_alias, @@ -342,6 +348,11 @@ FROM (SELECT mi.cinema_movie_alias, scvm.system_const_val_desc as media_type, mi.cinema_movie_start_datetime, mi.cinema_movie_end_datetime, + mi.cinema_movie_show_date, + mi.cinema_movie_show_datetime, + mi.cinema_movie_offline_date, + mi.cinema_movie_preview_show_type, + mi.cinema_movie_preview_show_time, CAST(ms.cinema_movie_show_id AS CHAR) cinema_movie_show_id, SUM(IF(sl.cinema_ticket_status <> 3, sl.cinema_ticket_income, 0)) total_income FROM cinema_movie_show ms