init
Some checks failed
Clean ESA Versions on Main / clean-esa-versions (push) Has been cancelled

This commit is contained in:
2026-01-02 00:03:49 +08:00
commit 7b7e32ddd4
348 changed files with 148701 additions and 0 deletions

View File

@@ -0,0 +1,74 @@
import re
import json
import os
def extract_friend_data(html_content):
"""从HTML内容中提取友链数据"""
# 匹配友链卡片的正则表达式
pattern = r'<a href="([^"]+)"[^>]*class="friend-card">\s*' \
r'<div class="flex items-center gap-2">\s*' \
r'<img src="([^"]+)"[^>]*>\s*' \
r'<div class="font-bold[^"]*">([^<]+)</div>\s*' \
r'</div>\s*' \
r'<div class="text-sm[^"]*">([^<]+)</div>'
friends = []
for match in re.finditer(pattern, html_content, re.DOTALL):
url, avatar, name, description = match.groups()
friend = {
"name": name.strip(),
"avatar": avatar.strip(),
"description": description.strip(),
"url": url.strip()
}
friends.append(friend)
return friends
def read_friends_astro():
"""读取friends.astro文件内容"""
file_path = os.path.join(os.path.dirname(os.path.dirname(__file__)),
'src', 'pages', 'friends.astro')
with open(file_path, 'r', encoding='utf-8') as f:
return f.read()
def read_existing_friends_json():
"""读取现有的friends.json文件内容"""
file_path = os.path.join(os.path.dirname(os.path.dirname(__file__)),
'src', 'data', 'friends.json')
try:
with open(file_path, 'r', encoding='utf-8') as f:
return json.load(f)
except (FileNotFoundError, json.JSONDecodeError):
return {"friends": []}
def write_friends_json(friends_data):
"""将友链数据写入friends.json文件"""
file_path = os.path.join(os.path.dirname(os.path.dirname(__file__)),
'src', 'data', 'friends.json')
with open(file_path, 'w', encoding='utf-8') as f:
json.dump(friends_data, f, ensure_ascii=False, indent=2)
def main():
# 读取friends.astro内容
astro_content = read_friends_astro()
# 提取友链数据
new_friends = extract_friend_data(astro_content)
# 读取现有的friends.json
existing_data = read_existing_friends_json()
# 将新的友链数据添加到现有数据中
# 使用URL作为唯一标识符避免重复
existing_urls = {friend["url"] for friend in existing_data["friends"]}
for friend in new_friends:
if friend["url"] not in existing_urls:
existing_data["friends"].append(friend)
existing_urls.add(friend["url"])
# 写入更新后的数据
write_friends_json(existing_data)
print(f"成功提取并添加了 {len(new_friends)} 个友链数据")
if __name__ == "__main__":
main()