|
|
|
|
import csv
|
|
|
|
|
from io import StringIO
|
|
|
|
|
import pymysql
|
|
|
|
|
from pymysql.cursors import DictCursor
|
|
|
|
|
|
|
|
|
|
s = """
|
|
|
|
|
影厅别名,影厅id,影片别名,本地影片id,语言,放映日期,开始时间,结束时间,片长,场间
|
|
|
|
|
2楼 百花厅(部分按摩椅),1,功夫女足,4292,国语,2026-07-13,10:30,12:16,106,0
|
|
|
|
|
2楼 百花厅(部分按摩椅),1,功夫女足,4292,国语,2026-07-13,12:30,14:16,106,14
|
|
|
|
|
2楼 百花厅(部分按摩椅),1,功夫女足,4292,国语,2026-07-13,14:30,16:16,106,14
|
|
|
|
|
2楼 百花厅(部分按摩椅),1,功夫女足,4292,国语,2026-07-13,16:30,18:16,106,14
|
|
|
|
|
2楼 百花厅(部分按摩椅),1,功夫女足,4292,国语,2026-07-13,18:30,20:16,106,14
|
|
|
|
|
2楼 百花厅(部分按摩椅),1,功夫女足,4292,国语,2026-07-13,20:30,22:16,106,14
|
|
|
|
|
2楼1号厅(部分按摩椅),2,三国第一部:争洛阳,4281,国语,2026-07-13,11:00,13:17,137,0
|
|
|
|
|
2楼1号厅(部分按摩椅),2,三国第一部:争洛阳,4281,国语,2026-07-13,13:30,15:47,137,13
|
|
|
|
|
2楼1号厅(部分按摩椅),2,三国第一部:争洛阳,4281,国语,2026-07-13,16:00,18:17,137,13
|
|
|
|
|
2楼1号厅(部分按摩椅),2,三国第一部:争洛阳,4281,国语,2026-07-13,18:30,20:47,137,13
|
|
|
|
|
2楼1号厅(部分按摩椅),2,三国第一部:争洛阳,4281,国语,2026-07-13,21:00,23:17,137,13
|
|
|
|
|
2楼2号速度与激情厅(部分按摩椅),3,三国第一部:争洛阳,4281,国语,2026-07-13,10:20,12:37,137,0
|
|
|
|
|
2楼2号速度与激情厅(部分按摩椅),3,三国第一部:争洛阳,4281,国语,2026-07-13,12:50,15:07,137,13
|
|
|
|
|
2楼2号速度与激情厅(部分按摩椅),3,三国第一部:争洛阳,4281,国语,2026-07-13,15:20,17:37,137,13
|
|
|
|
|
2楼2号速度与激情厅(部分按摩椅),3,三国第一部:争洛阳,4281,国语,2026-07-13,17:50,20:07,137,13
|
|
|
|
|
2楼2号速度与激情厅(部分按摩椅),3,三国第一部:争洛阳,4281,国语,2026-07-13,20:20,22:37,137,13
|
|
|
|
|
2楼3号厅(部分按摩椅),4,小黄人与大怪兽,4288,原版,2026-07-13,10:30,12:00,90,0
|
|
|
|
|
2楼3号厅(部分按摩椅),4,玩具总动员5,4269,原版,2026-07-13,12:15,13:57,102,15
|
|
|
|
|
2楼3号厅(部分按摩椅),4,特立独行,4280,国语,2026-07-13,14:10,16:13,123,13
|
|
|
|
|
2楼3号厅(部分按摩椅),4,后室,4279,原版,2026-07-13,16:25,18:16,111,12
|
|
|
|
|
2楼3号厅(部分按摩椅),4,功夫女足,4292,国语,2026-07-13,18:30,20:16,106,14
|
|
|
|
|
2楼3号厅(部分按摩椅),4,八仙!,4296,国语,2026-07-13,20:30,22:54,144,14
|
|
|
|
|
2楼4号优选福励厅,5,功夫女足,4292,国语,2026-07-13,10:20,12:06,106,0
|
|
|
|
|
2楼4号优选福励厅,5,功夫女足,4292,国语,2026-07-13,12:20,14:06,106,14
|
|
|
|
|
2楼4号优选福励厅,5,功夫女足,4292,国语,2026-07-13,14:20,16:06,106,14
|
|
|
|
|
2楼4号优选福励厅,5,功夫女足,4292,国语,2026-07-13,16:20,18:06,106,14
|
|
|
|
|
2楼4号优选福励厅,5,功夫女足,4292,国语,2026-07-13,18:20,20:06,106,14
|
|
|
|
|
2楼4号优选福励厅,5,功夫女足,4292,国语,2026-07-13,20:20,22:06,106,14
|
|
|
|
|
3楼5号厅(部分按摩椅),6,功夫女足,4292,国语,2026-07-13,10:25,12:11,106,0
|
|
|
|
|
3楼5号厅(部分按摩椅),6,功夫女足,4292,国语,2026-07-13,12:25,14:11,106,14
|
|
|
|
|
3楼5号厅(部分按摩椅),6,功夫女足,4292,国语,2026-07-13,14:25,16:11,106,14
|
|
|
|
|
3楼5号厅(部分按摩椅),6,功夫女足,4292,国语,2026-07-13,16:25,18:11,106,14
|
|
|
|
|
3楼5号厅(部分按摩椅),6,功夫女足,4292,国语,2026-07-13,18:25,20:11,106,14
|
|
|
|
|
3楼5号厅(部分按摩椅),6,功夫女足,4292,国语,2026-07-13,20:25,22:11,106,14
|
|
|
|
|
3楼6号泰隆银行厅(部分按摩椅),7,功夫女足,4292,国语,2026-07-13,10:30,12:16,106,0
|
|
|
|
|
3楼6号泰隆银行厅(部分按摩椅),7,功夫女足,4292,国语,2026-07-13,12:30,14:16,106,14
|
|
|
|
|
3楼6号泰隆银行厅(部分按摩椅),7,功夫女足,4292,国语,2026-07-13,14:30,16:16,106,14
|
|
|
|
|
3楼6号泰隆银行厅(部分按摩椅),7,功夫女足,4292,国语,2026-07-13,16:30,18:16,106,14
|
|
|
|
|
3楼6号泰隆银行厅(部分按摩椅),7,功夫女足,4292,国语,2026-07-13,18:30,20:16,106,14
|
|
|
|
|
3楼6号泰隆银行厅(部分按摩椅),7,功夫女足,4292,国语,2026-07-13,20:30,22:16,106,14
|
|
|
|
|
3楼7号厅,8,海洋奇缘:启航,4293,原版,2026-07-13,10:40,12:36,116,0
|
|
|
|
|
3楼7号厅,8,特立独行,4280,国语,2026-07-13,12:50,14:53,123,14
|
|
|
|
|
3楼7号厅,8,玩具总动员5,4269,原版,2026-07-13,15:05,16:47,102,12
|
|
|
|
|
3楼7号厅,8,后室,4279,原版,2026-07-13,17:00,18:51,111,13
|
|
|
|
|
3楼7号厅,8,小黄人与大怪兽,4288,原版,2026-07-13,19:05,20:35,90,14
|
|
|
|
|
3楼7号厅,8,功夫女足,4292,国语,2026-07-13,20:50,22:36,106,15
|
|
|
|
|
2楼 三江VIP厅,9,功夫女足,4292,国语,2026-07-13,12:15,14:01,106,0
|
|
|
|
|
2楼 三江VIP厅,9,八仙!,4296,国语,2026-07-13,14:15,16:39,144,14
|
|
|
|
|
2楼 三江VIP厅,9,特立独行,4280,国语,2026-07-13,16:55,18:58,123,16
|
|
|
|
|
2楼 三江VIP厅,9,后室,4279,原版,2026-07-13,19:10,21:01,111,12
|
|
|
|
|
2楼 三江VIP厅,9,小黄人与大怪兽,4288,原版,2026-07-13,21:15,22:45,90,14
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 将csv转化成字典
|
|
|
|
|
def csv_to_obj(csv_data):
|
|
|
|
|
f = StringIO(csv_data)
|
|
|
|
|
print(csv_data, f)
|
|
|
|
|
reader = csv.DictReader(f)
|
|
|
|
|
return list(reader)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_real_data(cinema_code: str, show_date: str):
|
|
|
|
|
db_config = {
|
|
|
|
|
'host': '172.16.1.63',
|
|
|
|
|
'port': 3306,
|
|
|
|
|
'user': 'root',
|
|
|
|
|
'password': 'Cine123456',
|
|
|
|
|
'database': 'dingxin_toolbox',
|
|
|
|
|
}
|
|
|
|
|
db_conn = pymysql.connect(**db_config)
|
|
|
|
|
db_cursor = db_conn.cursor(cursor=DictCursor)
|
|
|
|
|
db_cursor.execute(
|
|
|
|
|
"SELECT * FROM dingxin_toolbox.ai_show_result WHERE zz_code=%s AND show_date=%s AND is_ai_show=%s",
|
|
|
|
|
(cinema_code, show_date, 0))
|
|
|
|
|
real_data = db_cursor.fetchone()
|
|
|
|
|
return real_data['show']
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def count_data(data):
|
|
|
|
|
count = len(data) - 1
|
|
|
|
|
movie_dict = {}
|
|
|
|
|
for movie in data[1:]:
|
|
|
|
|
movie_name = movie[None][2]
|
|
|
|
|
if movie_name in movie_dict.keys():
|
|
|
|
|
movie_dict[movie_name] += 1
|
|
|
|
|
else:
|
|
|
|
|
movie_dict[movie_name] = 1
|
|
|
|
|
movie_dict = dict(sorted(movie_dict.items(), key=lambda item: item[1], reverse=True))
|
|
|
|
|
print(f"共{count}场")
|
|
|
|
|
for key, value in movie_dict.items():
|
|
|
|
|
print(f"《{key}》: {value}场 占比{round(value / count * 100, 2)}%")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _get_hall_count(show: list) -> dict:
|
|
|
|
|
hall_show_count = dict()
|
|
|
|
|
for show in show[1:]:
|
|
|
|
|
hall = show[None][1]
|
|
|
|
|
if hall in hall_show_count.keys():
|
|
|
|
|
hall_show_count[show[None][1]] += 1
|
|
|
|
|
else:
|
|
|
|
|
hall_show_count[show[None][1]] = 1
|
|
|
|
|
return hall_show_count
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_hall_show_count(ai: list, real: list) -> dict:
|
|
|
|
|
ai_hall_show_count = _get_hall_count(ai)
|
|
|
|
|
real_hall_show_count = _get_hall_count(real)
|
|
|
|
|
more = ai_hall_show_count if len(ai_hall_show_count) >= len(real_hall_show_count) else real_hall_show_count
|
|
|
|
|
hall_show_count = dict()
|
|
|
|
|
for key in more.keys():
|
|
|
|
|
hall_show_count[key] = ai_hall_show_count[key] if ai_hall_show_count.get(key, 0) >= real_hall_show_count.get(
|
|
|
|
|
key, 0) else real_hall_show_count[key]
|
|
|
|
|
return hall_show_count
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def show_data(zz_code: str, show_date: str):
|
|
|
|
|
real_obj = csv_to_obj(get_real_data(zz_code, show_date))
|
|
|
|
|
ai_obj = csv_to_obj(s)
|
|
|
|
|
print('ai_obj', ai_obj)
|
|
|
|
|
print('real_obj', real_obj)
|
|
|
|
|
hall_show_count = get_hall_show_count(ai_obj, real_obj)
|
|
|
|
|
print(hall_show_count)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
|
count_data(csv_to_obj(s))
|
|
|
|
|
# show_data('33040301', '2026-07-13')
|