오늘 새로운 백준 문제를 풀고 저번에 만든 생성기를 실행하니 갑자기 에러가 떴다! 얼마 쓰지도 않았는데 벌써 에러가 나나 싶었지만, 오히려 빨리 찾아서 다행일 수도...?
에러의 내용을 보니, 여기에 해당하는 key가 없어서 KeyError
가 발생한 것이었다...
다시 solved.ac API에서 문제를 검색해 보니, 태그 이름의 O가 대문자로 저장되어 있었는데 BOJ에서 가져온 태그는 소문자라서 오류가 난 것이었다!
안 그래도 BOJ 사이트와 solved.ac 이렇게 두 개의 출처에서 데이터를 끌어오고, bs4 라이브러리와 API를 같이 쓰고 있어서 마음에 걸리던 차에 차라리 API로 정보 출처를 통일해 버리는 게 낫다는 생각이 들었다!
API 문서를 보면 이렇게 BOJ 태그의 목록을 볼 수 있는데, 여기서 bojTagId
필드와 displayNames
의 name
필드를 적당히 이용하면 이러한 문제가 발생하지 않을 것이라고 생각했다!
에러를 고치고 나서, 결과적으로 드러나지는 않았지만 다른 문제점을 발견했는데 API 문서를 제대로 안 봐서인지, 문제 번호를 problems
리스트에 저장해 놓고 for
loop를 돌려서 각각의 문제 번호마다 API를 호출한다는 것이었다.
지금은 문제를 별로 안 풀어서 큰 문제가 없었지만, 내가 문제를 100개, 1000개 풀면 API 요청을 100번, 1000번 보내게 되는데, 다시 보니 한 번의 요청으로 여러 개의 문제를 가져올 수 있어 for
하나를 없애고 한 번의 요청으로 정보를 가져오도록 코드를 수정했다!
마지막으로, 지금까지는 문제를 풀고 README.md를 수정하고 나면 git add .
과 git commit -m "..."
와 git push
를 해 주어야 했는데, 이것도 단순 노동이라서 os.system()
함수를 이용해 자동화하기로 했다!
그래서 이제는 문제를 푼 다음 프로그램을 실행시키기만 하면 끝!!
이제는 열심히 문제나 계속 풀어야지...