블로그 이미지
JEEN

서울에 사는 꽃청년의 IT찌질모험기

Rss feed Tistory
IT/Mac 2009.10.09 11:36

[ Delicious Library 2 ] Loves Perl! 안되면 되게 하라!

  Delicious Library 2 라는 아주 멋진 Mac App 이 있습니다.
  자세한 소개를 해놓은 블로그는 아래와 같습니다.

  http://techblog.tistory.com/entry/DeliciousLibrary
  http://drzekil.tistory.com/380
  http://chateau.tistory.com/143

  하지만 공통적으로 Delicious Library 2 의 문제점을 말하는 것은 "한국 도서 등록시의 수작업" 입니다.
  저도 그래서 Bookpedia 를 사용하고 있었습니다. 바로 알라딘 API 를 이용한 검색 플러그인을 지원하기 때문이죠. -- 하지만 스캐닝은 제대로 안됩니다. Bookpedia 는 ISBN 형식의 바코드를 인식하지 못하는 것은 아닐까 생각해봅니다. 그렇지만 Delicious Library 2 는 ISBN 형식의 바코드를 읽을 수 있습니다. 그리고 뽀대면에서도 Delicious Library 2 는 더 좋아보입니다.

  현재 한국도서를 자동으로 Delicious Library 2 에 등록할 수는 없다.
  하지만  Delicious Library 2 에서 한국 도서를 자동으로 등록하게 하고 싶다! 는 욕심은 제게 계속되는 생각을 요구했습니다.

  http://twitter.com/JEEN_LEE/status/4705505506
  http://twitter.com/JEEN_LEE/status/4705521324
  http://twitter.com/JEEN_LEE/status/4706267445

  트위터에서 설레발을 떨었지만, 제가 생각한 방법은 두가지 였습니다.
 
  첫번째는 Amazon WebService 로 가는 것을 제 서버로 보내게 해서, 해당 바코드 정보를 이용해 알라딘 API 로 검색, Amazon WebService 와 같은 결과(json 이든 xml 이든) 를 반환해주는 것이었습니다. 
  문제는 네트워크 지식이 전무이사 라서... 몇번 구글해보다가 그냥 포기했습니다. 하지만 이 방법이 가장 깔끔할 것 같다고 지금도 생각하고 있습니다. (된다면 말이죠...)

  제가 채택한 두번째 방법은 의외로 간단합니다. Delicious Library 2 에서는 스캔시의 바코드 정보를 특정 파일에 계속 추가해놓고 있다는 것을 알았습니다. 그 파일을 잡아놓고 추가되는 정보가 있다면 그것은 바코드 정보이니 그 정보를 집어서 알라딘 API를 사용, 결과를 받아서 Delicious Library 2 에 등록하는 것이었습니다.
  그럼 어떻게 등록하느냐...

  첫번째는, Bookpedia 도 마찬가지 였지만 Delicious Library 2 는 SQLite 로 데이터베이스 접근이 가능합니다. 거기에서 일일이 쿼리를 날려가면서 책 정보를 추가하는 방법이 있었습니다.
 
  두번째는, AppleScript 입니다. Delicious Library 2 의 환경설정에서는 AppleScript 예제에 대한 항목이 있었습니다. 여기에서 새책 정보를 등록하는 AppleScript 를 발견하고는 이거다! 싶었습니다. 하지만 AppleScript 는 제대로 해본 적이 별로 없어서, 예제를 보고 하나하나 보고 나가기로 했습니다.

  여기서 첫번째 방법인 DB 구조를 파악하는 것과, 두번째 AppleScript 의 예제 샘플을 좀 더 만져서 작업하는 것에서... 두번째가 더 빨리 끝날 것 같아서 이걸 채택하고 작업에 들어갔습니다.

  마침 예전에 WebService::Aladdin 이라는 Perl 의 CPAN 모듈을 만든 적이 있었기 때문에, 알라딘 API 를 따로 파싱하거나 하는 추가작업은 필요없었습니다.

  * http://search.cpan.org/perldoc?WebService::Aladdin

  마침내 작업은 끝났습니다.

  http://twitter.com/JEEN_LEE/status/4711215750
  http://twitter.com/JEEN_LEE/status/4711467095

  하지만 한국책을 바코드로 찍었을 때, 그 바코드 정보로 세계 각국의 아마존 서버를 들락거리는 Delicious Library 2 의 자체적인 처리의 결과는 "해당 아이템을 찾을 수 없다" 라는 경고창이 나오는 것이 좀 거시기 하기는 합니다.
  그래도  한국 책은 제대로 슉슉 들어갑니다.

  이렇게 말이죠.
 
  소스는 공개되어 있습니다.

  http://github.com/JEEN/Delicious-Library-2-for-Korean

  github 를 사용하고 있으며, 현재 Perl 스크립트 하나로 만들어져 있으며, 간단한 프로토타입입니다.
  나중에 기능을 더해감에 따라서 세분화시켜나갈 생각입니다.
  코코아 개발이 가능하신 분이라면 어떻게 좀 더 세련되게 만들어 주실 수 있지 않을까 생각해봅니다.
  (어디까지나 이 프로젝트의 유효기간은 아름다운 맥 어플이 나와서 제가 봉착한 문제들을 다 풀어줄 때까지 입니다.)

  그리고 설치를 말하자면...
  일단 프로그래머 경험이 없으신 분들에게 설치는 약간 번거로울지도 모르겠습니다.
 
$ sudo cpan WebService::Aladdin
$ sudo cpan AnyEvent
$ sudo cpan Mac::AppleScript

  터미널에서 이 세가지 커맨드를 입력하시고.. 나오는 모든 선택지에서 엔터를 눌러주시면 됩니다.
  그리고

  http://github.com/JEEN/Delicious-Library-2-for-Korean/zipball/master

  에서 zip 파일을 다운로드, 압축 해제후에 나오는 delicious_lib_ko.pl을 실행합니다.

$  perl delicious_lib_ko.pl

  그리고 Delicious Library 2 에서 바코드 스캐닝 후에 제대로 책정보가 들어갔는지 확인하시면 됩니다.

  피드백은 트위터: @JEEN_LEE 로 부탁드리겠습니다. :-)

** 추기
 - Delicious Library 2 자체의 도서 검색을 통한 책 정보 등록을 불가능합니다.
 -- 방법이 있다면 다른 인터페이스를 통해서 Delicious Library 2 로 책정보를 등록할 수 있습니다.
 -- 현재 Yes24 / Aladdin 웹 페이지에서 바로 Delicous Library 2 로 등록하는 기능을 생각하고 있습니다.
신고
TOTAL 462,298 TODAY 48

티스토리 툴바