90 lines
4.0 KiB
Python
90 lines
4.0 KiB
Python
|
|
#!/usr/bin/env python3
|
|||
|
|
# -*- coding: utf-8 -*-
|
|||
|
|
|
|||
|
|
import json
|
|||
|
|
import re
|
|||
|
|
|
|||
|
|
def update_profile_ranking():
|
|||
|
|
"""
|
|||
|
|
更新mockData.js中profileOverview的ranking数据,使用能源个人档案数据
|
|||
|
|
"""
|
|||
|
|
|
|||
|
|
# 读取能源个人档案数据
|
|||
|
|
with open("网页未导入数据/能源产业/能源个人档案.json", 'r', encoding='utf-8') as f:
|
|||
|
|
energy_data = json.load(f)
|
|||
|
|
|
|||
|
|
# 读取mockData.js
|
|||
|
|
with open("src/data/mockData.js", 'r', encoding='utf-8') as f:
|
|||
|
|
content = f.read()
|
|||
|
|
|
|||
|
|
# 创建备份
|
|||
|
|
with open("src/data/mockData.js.backup_before_ranking", 'w', encoding='utf-8') as f:
|
|||
|
|
f.write(content)
|
|||
|
|
|
|||
|
|
# 构建能源学生头像映射
|
|||
|
|
avatar_mapping = {
|
|||
|
|
"奚思瑶": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/avatar/douyin/199b35fbd6ed5e3ea6d6d064cf895a13.jpg",
|
|||
|
|
"王承泽": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/avatar/douyin/152361c6c68a193660cdbdf9074c2cf3.jpg",
|
|||
|
|
"赵纯": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/avatar/douyin/07a0a14c8c8d5476b2c8d54de12e6a06.jpg",
|
|||
|
|
"陈知夏": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/avatar/douyin/13c5709a3993fdf353d147209f8145cb.jpg",
|
|||
|
|
"苏拓": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/avatar/douyin/02393125baa474d558c484c0677664b1.jpg",
|
|||
|
|
"王亦舒": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/avatar/douyin/152361c6c68a193660cdbdf9074c2cf3.jpg",
|
|||
|
|
"戚瑶瑶": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/avatar/douyin/199b35fbd6ed5e3ea6d6d064cf895a13.jpg",
|
|||
|
|
"吴珩": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/avatar/douyin/29af3e9db4c435f0f3d76c1b91d8a7f6.jpg",
|
|||
|
|
"李月平": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/avatar/douyin/2b2cb2ed96901b1bb3750559d6323620.jpg",
|
|||
|
|
"章世龙": "https://ddcz-1315997005.cos.ap-nanjing.myqcloud.com/static/avatar/douyin/2e8af9fd9b8425946272fec27af82910.jpg",
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
# 构建新的rankings数组
|
|||
|
|
rankings_items = []
|
|||
|
|
for student in energy_data:
|
|||
|
|
name = student["学员名称"]
|
|||
|
|
is_me = name == "苏拓"
|
|||
|
|
|
|||
|
|
ranking_item = f''' {{
|
|||
|
|
rank: {student["班级排名"]},
|
|||
|
|
studentId: "{student["学号"]}",
|
|||
|
|
studentName: "{name}",
|
|||
|
|
name: "{name}",
|
|||
|
|
avatar: "{avatar_mapping.get(name, "https://p1-arco.byteimg.com/tos-cn-i-uwbnlip3yd/3ee5f13fb09879ecb5185e440cef6eb9.png~tplv-uwbnlip3yd-webp.webp")}",
|
|||
|
|
score: {student["学分"]},
|
|||
|
|
credits: {student["学分"]},
|
|||
|
|
school: "{student["学校名称"]}",
|
|||
|
|
major: "{student["专业名称"]}",
|
|||
|
|
isMe: {str(is_me).lower()},
|
|||
|
|
}}'''
|
|||
|
|
rankings_items.append(ranking_item)
|
|||
|
|
|
|||
|
|
new_rankings_array = ",\n".join(rankings_items)
|
|||
|
|
|
|||
|
|
# 替换rankings数组
|
|||
|
|
rankings_pattern = r'rankings: \[\s*\{[\s\S]*?\}\s*,[\s\S]*?\]'
|
|||
|
|
new_rankings_section = f'''rankings: [
|
|||
|
|
{new_rankings_array}
|
|||
|
|
]'''
|
|||
|
|
|
|||
|
|
updated_content = re.sub(rankings_pattern, new_rankings_section, content)
|
|||
|
|
|
|||
|
|
# 更新其他班级信息
|
|||
|
|
updated_content = re.sub(r'totalStudents: \d+', 'totalStudents: 10', updated_content)
|
|||
|
|
updated_content = re.sub(r'averageScore: [\d.]+', 'averageScore: 94.5', updated_content)
|
|||
|
|
|
|||
|
|
# 写入更新后的内容
|
|||
|
|
with open("src/data/mockData.js", 'w', encoding='utf-8') as f:
|
|||
|
|
f.write(updated_content)
|
|||
|
|
|
|||
|
|
print(f"✅ profileOverview ranking数据更新完成")
|
|||
|
|
print(f"📋 更新内容:")
|
|||
|
|
print(f" - 更新了 {len(energy_data)} 名能源学生的排名数据")
|
|||
|
|
print(f" - 苏拓排名第5位,学分95分")
|
|||
|
|
print(f" - 班级总人数: 10人")
|
|||
|
|
print(f" - 班级平均分: 94.5分")
|
|||
|
|
|
|||
|
|
# 显示前5名
|
|||
|
|
print(f"\n📍 前5名学生:")
|
|||
|
|
for i, student in enumerate(energy_data[:5], 1):
|
|||
|
|
is_me = "👤" if student["学员名称"] == "苏拓" else " "
|
|||
|
|
print(f"{is_me} {i}. {student['学员名称']} - {student['学分']}分")
|
|||
|
|
|
|||
|
|
if __name__ == "__main__":
|
|||
|
|
update_profile_ranking()
|