알라딘 OpenAPI 의 초상 - Part 1
“이 한 권의 책” 포스트를 준비하면서 알라딘에서 제공하는 “알라딘 OpenAPI” 를 사용해보게 되었습니다. 이 때 얻게 된 몇 가지 인상을 기록으로 남겨볼까 합니다.
알라딘에는 각 도서정보 창에서 “블로그에 상품정보 복사” 라는 이름으로 도서의 표지사진과 서지정보를 블로그에서 인용하기 좋은 형태로 복사할 수 있게 해줍니다. 몇 가지 스타일 정보를 선택하면 HTML 조각을 만들어주고, 사용자는 이를 복사해서 자신의 블로그 입력 창에 붙이면 됩니다. 저도 이 서비스를 자주 이용한 편입니다. 하지만 “이 한 권의 책” 의 경우는 목록을 제시하는 형태인데, 각 도서마다 얻은 HTML 조각을 이어 붙이기 하려니 제가 원하는 형태의 포스트를 만들기가 힘들더군요. 해서 “이 한 권의 책”을 위한 도구를 제작했습니다. Git 에 들어있는 도서 별 파일들을 취합하여 포스트를 구성해주는 형태로 되어있습니다. ”알라딘 OpenAPI" 가 필요한 곳은 도서 별 파일을 만들 때 서지 정보를 자동으로 채워주는 기능입니다.
서지정보는 확인 절차를 거쳐야 합니다
주 초에는 선택되었으나 최종 포스트에서는 빠진 “필경사 바틀비” 의 경우를 보면, 몇일 사이에 출판사가 “푸른책들” 에서 “보물창고”로 변경되었습니다. “보물창고” 는 “푸른책들” 의 자회사입니다. 입력하는 과정에서 발생한 단순한 실수이고, 실수의 원인도 짐작할 수 있는 이유입니다. 특히나 신간의 경우는 서지정보에 이런 종류의 실수가 있을 수 있다고 가정하는 것이 안전합니다.
서지정보 중 subTitle 은 title 에 이미 포함된 정보를 줍니다. “이 한 권의 책” 은 부제를 함께 보여주려고 했기 때문에 문제가 되지는 않지만, 다른 형태로 구성하는 편이 API 를 더 쓸모 있게 만들지 않을까 합니다.
pubDate 는 좀 특이한 모습을 보입니다. 문서상으로는 “출간일(출시일)” 이라고 설명됩니다. “이 한 권의 책” 에서도 도서의 순서가 출간일 기준임을 알리고, 예약주문 도서를 쉽게 알아챌 수 있도록 하기 위해 뒤쪽에 이 날짜를 표시하고 있습니다. 그런데 살펴보면 이 날짜에는 문제가 있습니다.
API 의 출간일은 웹 페이지에 기록된 날짜보다 정확히 하루가 빠릅니다.
“거침없이 배우는 라즈베리 파이” 라는 책을 살펴봅시다. 웹 페이지에는 2013-03-25 로 표시되고 있는 반면, OpenAPI 는 2013-03-24 라고 주장합니다. 모든 책이 다 이런 식입니다. 처음에는 웹 페이지와 API 가 다른 데이터베이스를 쓰는 것은 아닌가 의심했습니다만, 곰곰이 생각해보니 그럴듯한 설명이 아닙니다. 제가 생각할 수 있는 가장 그럴듯한 설명은 이렇습니다.
서지정보를 입력하는 웹 페이지가 있을 겁니다. 이 곳에서 2013-03-25 를 입력합니다. 그런데 웹 페이지는 이 정보를 단순한 문자열로 데이터베이스에 저장하는 것이 아니라 날짜와 시간으로 저장합니다. 시간을 특별히 입력하지 않았으니 0시 0분 0초로 들어갑니다. 타임존 역시 지정하지 않아서 한국에 해당하는 GMT+9 이 선택됩니다. 이러면 국제 표준시로는 2013-03-24:15:00:00 에 해당되는 시간이 데이터베이스에 기록되게 됩니다. 웹 페이지는 이 시간을 읽어서 화면에 표시할 때 로컬타임으로 변환해서 표시하는 반면, API 는 로컬타임변환 없이 날짜부분만 전달하는 것이 아닌가 합니다.
그래서 “이 한 권의 책” 은 하루를 더해서 표시합니다. 그런데 한가지 걱정이 있네요. 알라딘에서 이 문제를 언젠가 손보게 된다면 “이 한 권의 책” 에는 엉터리 날짜가 나가게 됩니다. 그렇다고 이 문제 때문에 웹 페이지를 스크래핑하기는 귀찮고요. 그냥 독자들께서 제보해주시기를 기대해봅니다.
그런데 진짜 문제는 2013-03-25 도 올바른 날짜가 아니라는 것입니다. 책의 말미에 인쇄된 서지정보를 보면 인쇄일이 2013-03-20 이고 발행일은 2013-03-27 입니다. 앞서 언급한 날짜는 어디에도 나오지 않습니다. 다른 책들을 통해 확인한 바에 따르면 알라딘에 도서가 처음 등록된 날도 아니며, 구매 버튼이 처음 켜진 날도 아닙니다. 단순 입력 실수라고 보는 것 밖에는 다른 설명이 떠오르지는 않는군요. “이 한 권의 책” 의 목표에 “정확한 발행일 제공” 은 없기 때문에 대부분의 경우는 문제가 되지 않습니다. 하지만 “구간은 소개하지 않는다” 는 원칙 때문에 발행일이 과거날짜로 잘 못 입력되는 경우는, 아예 대상에서 제외될 위험이 있기는 합니다. 이 경우 그냥 인연이 아닌가 보다 하고 연연하지 않는 것으로 합니다.
이 번 포스트에서는 API 가 제공하는 데이터를 살펴보았습니다. 다음에는 API 를 사용하는 과정에서 만난 기술적인 문제들을 소개하겠습니다.