본문 바로가기

Project

[책 구하기 통합 검색 서비스 ] Intro

가끔 읽고 싶은 책이 동네 구립 도서관에 없는 경우가 있다.

그럴 때면 시립도서관 사이트에 들어가서 검색한다.

크게 귀찮은 일은 아니지만 한 번에 검색할 수 있으면 좋지 않을까라는 생각이 들었다.

 

이왕이면 목적이 읽고 싶은 책을 가급적 돈 안 들이고 혹은 덜 들이고, 적어도 시간이라도 덜 쓰고 구하면 좋으므로 그런 부분에 도움을 줄 수 있는 서비스를 만들고자 한다.

 

전국 서비스를 하면 좋겠지만 시작은 작게해야 안치지고 꾸준히 할 수 있으므로 

우선은 서울시 + 전자도서관만을 대상으로 하려한다.

인근 도서관에서도 구할 수 없다면

밀리의 서재, 리디북스 셀렉트 같은 구독제 서비스(가입자라면 클릭해서 검색에 반영),

그 외에는 정부에서 지원하는 책바다, 책나래 (타관 도서를 1700원가량 지불하면 3주 빌릴 수 있다),

알라딘 중고서점 등을 생각해 보았다

 

대락 검색조건으로 반영하고자 하는 우선순위를 적어보면 아래와 같다

1. 오프라인 도서관

2. 전자도서관

3. 구독제 서비스(리디북스 셀렉트)

4. 책바다, 책나래

5. 알라딘 중고서점

6. (옵션) 일반서점

 

서울도서관에서 이미 서울시 구립, 시립 통합검색을 지원한다

 

이 기능은 겹치므로 새로 만드는 서비스가 의미 있으려면 유용한 추가 기능이 있어야 한다 생각 들었다

유저별로 검색조건을 저장하게 하는 것과 이전에 검색한 검색어, 클릭했던 도서 정보도 데이터로 가지고 있으면 유용하지 않을까 싶다.

그 외에 검색조건 2~6번 중 하나라도 된다면 기존 서비스와 차별화될 것이라 생각 든다.

 

 하지만 생각보다 쉽지 않다 openAPI 신청하기만 하면 잘 될 줄 알았는데 착각하여 국립중앙도서관 API만 신청했다든지, 실제 도서관의 실시간 대출 현황도 반영이 되는 것인지는 아직 확실치 않다.

 

구독제 서비스 두 곳 모두에 혹시 openAPI를 제공하는지 문의하였지만 아직 제공되지는 않는다는 답변을 받았다. 리디북스 셀렉트의 경우 크롤링을 해볼 수 있을 거 같은데 밀리의 서재의 경우 전체 도서를 볼 수 있는 페이지가 없어서 이 부분은 쉽지 않을 거 같다. 밀리의 서재가 수십만 권 보유하고 있다고 하니 어쩌면 전체 도서를 볼 수 있는 페이지가 없는 것도 이해는 간다

 

그래도 소박하게나마 git repo를 팠다 vanila JS에 매우 간단하게 node express 서버만 붙여놓은 상태이다

 

하나면 충분할 줄 알고 신청했던 openAPI가 사실은 국립중앙도서관만 되는 API였어서 다시 자료조사하여 신청해야 한다. 

openAPI신청하고 기다리는 사이에도 할 것들은 많으므로 그 작업들을 하며 시간을 채워봐야겠다

 


후기

open API 구할 수 있는지 서울도서관, 도서관 정보나루 등에 문의하였지만 안된다는 답변을 받았다 ㅜ

어찌 생각해 보면 당연하기도 하다. 누구에게나 서울 혹은 국내 모든 도서관의 장서 보유 여부를 넘어서 대출 현황까지 알 수 있게 한다면 트래픽이 클 수밖에 없고 그로 인해 실제 도서관 사이트 이용자들에게 불편을 줄 수 있다.

도서관 사이트들이 관별로(시립, 구립, 도립 등등) 서버가 별도로 있을 것으로 추정되기에 그 모든 도서관에서 데이터를 가져오는 것은 꽤나 무거운 작업이라 판단된다.

모든 도서관을 볼 수 있다고 판단되는 책바다 서비스를 이용해 보았을 때 확실히 검색에 지연이 발생하였던 것을 떠올려보면 그러하다.

 

직접 크롤링을 하는 방향도 있지만 비용의 문제와 예상되는 서비스 이용자 수 대비 배꼽이 많이 클 작업으로 판단되어 이 아이디어는 접어두기로 하였다

 

 

 

 

참고자료

- https://data.seoul.go.kr/together/guide/useGuide.do

- https://www.nl.go.kr/NL/contents/N31101010000.do

- https://oak.go.kr/nl-ir/bitstream/2020.oak/621/1/%EB%8F%84%EC%84%9C%EA%B4%80%EC%A0%95%EB%B3%B4%EB%82%98%EB%A3%A8 _API_Manual.pdf

- https://ecrick.com/info

- https://blog.naver.com/PostView.naver?blogId=ticoba&Redirect=View&logNo=223007281711&categoryNo=9&isAfterWrite=true

- https://i-hope9.github.io/2021/07/20/Sparta-Web-Basic-Proj.html