Skip to content

Commit 3cfffec

Browse files
committed
FIX LOGIC
1 parent 0381e7e commit 3cfffec

1 file changed

Lines changed: 44 additions & 7 deletions

File tree

.github/scripts/update_readme.py

Lines changed: 44 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -51,20 +51,54 @@ def parse_readme(lines):
5151

5252

5353
# -----------------------------
54-
# 백준 정보 수집
54+
# 백준 정보 수집 (정상 동작)
5555
# -----------------------------
5656
def fetch_baekjoon_info(number):
5757
url = f"https://www.acmicpc.net/problem/{number}"
58-
res = requests.get(url, timeout=10)
58+
headers = {
59+
"User-Agent": "Mozilla/5.0"
60+
}
61+
62+
res = requests.get(url, headers=headers, timeout=10)
63+
if res.status_code != 200:
64+
return {
65+
"title": "UNKNOWN",
66+
"level": "UNKNOWN",
67+
"link": url,
68+
}
5969

6070
soup = BeautifulSoup(res.text, "html.parser")
6171

62-
title = soup.select_one("#problem_title")
63-
level = soup.select_one("#problem-info tbody tr td")
72+
# 문제 제목
73+
title_tag = soup.select_one("#problem_title")
74+
title = title_tag.text.strip() if title_tag else "UNKNOWN"
75+
76+
# solved.ac tier 이미지에서 난이도 추출
77+
tier_img = soup.select_one("img.solvedac-tier")
78+
level = "UNKNOWN"
79+
80+
if tier_img and "src" in tier_img.attrs:
81+
src = tier_img["src"]
82+
# 예: silver5.svg
83+
tier = src.split("/")[-1].replace(".svg", "")
84+
85+
tier_map = {
86+
"bronze": "Bronze",
87+
"silver": "Silver",
88+
"gold": "Gold",
89+
"platinum": "Platinum",
90+
"diamond": "Diamond",
91+
"ruby": "Ruby",
92+
}
93+
94+
for k, v in tier_map.items():
95+
if tier.startswith(k):
96+
level = f"{v} {tier[len(k):].upper()}"
97+
break
6498

6599
return {
66-
"title": title.text.strip() if title else "UNKNOWN",
67-
"level": level.text.strip() if level else "UNKNOWN",
100+
"title": title,
101+
"level": level,
68102
"link": url,
69103
}
70104

@@ -93,7 +127,7 @@ def make_row(index, status, platform, number, info):
93127

94128

95129
# -----------------------------
96-
# 메인 처리
130+
# 디렉토리 처리
97131
# -----------------------------
98132
def process_directory(dir_path):
99133
readme_path = os.path.join(dir_path, "README.md")
@@ -141,6 +175,9 @@ def process_directory(dir_path):
141175
return updated
142176

143177

178+
# -----------------------------
179+
# 메인
180+
# -----------------------------
144181
def main():
145182
any_updated = False
146183

0 commit comments

Comments
 (0)