from ai.models import * from ai.utils.show_prompt import * import datetime from django_redis import get_redis_connection import re # ai排片主流程 def show_main_process(): # 查看状态 redis_conn = get_redis_connection() redis_key = f'ai_show{datetime.date.today().strftime("%Y%m%d")}' if redis_conn.exists(redis_key): return False # 获取影院列表 redis_conn.set(redis_key, 1, ex=60*60*20) test_cinema_list = TestCinema.objects.filter(is_active=True).all() # 生成目标日期 show_date = datetime.date.strftime(datetime.date.today() + datetime.timedelta(days=3), '%Y-%m-%d') for cinema in test_cinema_list: print(cinema.name) show_ai = ShowAI(cinema, show_date) prompt = show_ai.general_prompt() start = datetime.datetime.now() # result, message, tokens = show_ai.get_show_result_ai() # end = datetime.datetime.now() # print('prompt:', prompt) # print('result:', result) # print('message:', message) # print('tokens:', tokens) # # 获取排片数据 # _show = next((s for s in result.split('------') if s.startswith('\n影厅别名,影厅id')), '') # _show = _show.strip() # print('_show:', _show) # # 获取销售额 # _sales = next((s for s in result.split('\n') if re.search('预估销售数据', s)), '') # _sales = str(re.findall(r'\d+\.?\d*', _sales)[0]) # print('_sales:', _sales) # # 处理返回结果 # try: # AiShow.objects.create( # cinema=cinema.name, # zz_code=cinema.zz_code, # show_date=show_date, # is_ai_show=True, # show=_show, # sales=_sales, # prompt=prompt, # result=result, # message=message, # take_times=int((end - start).seconds), # take_tokens=tokens # ) # except Exception as e: # print(e) return True