#!/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()