블로그 이미지
JEEN

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

Rss feed Tistory
IT/Mac 2009.11.17 18:47

[ Perl & DeliciousLibrary2 ] with Bookmarklet

2009/10/11 - [IT/Perl] - [ Perl & Delicious Library 2 ] 그럼 이제 웹 브라우저에서 DL2 로!
2009/10/10 - [IT/Perl] - [ Perl & Delicious Library 2 ] 한국책을 스캔하려고 해봐야 팔만 아프다!
2009/10/09 - [IT/Mac] - [ Delicious Library 2 ] Loves Perl! 안되면 되게 하라!

  벌서 한달정도 지난 DL2 관련 이슈를 다시 끄집어 내 봅니다.
  웹브라우저 상에서의 DL2 로 등록에 관해서 Drag and Drop 이라는 일반적이지 못한 방법을 고집했다가, "골빈해커"님과 "@y0ngbin"님에게 북마클릿을 쓰는 게 어떠냐고 들었습니다.
  그러겠다고 하고 GTD 의 Someday 에 넣어놓은 지 한달이 지났습니다.
  그러던 중에 capri91 님이 애플포럼에서 DL2 플러그인을 만들어 공개하셨으니 할 맘은 더욱 없어져 갔습니다.
  요즘 하도 의욕이 없다시피하다가 보니, 다시 하나 끄집어내야 되겠다고 해서 코드를 다시 만들었습니다.
  모조리 갈아엎고 Version 0.01 로 다시 시작해서 하루만에 0.02 까지 해놓았습니다.

***
  기능상으로는 Drag and Drop 기능을 없애고, 피드백을 받은 Bookmarklet 으로 만들었습니다.
  사실 JS 는 좀 버벅거려서, 기존에 쓰고 있던 Instapaper 의 Bookmarklet 을 참고해서 만들었습니다.
  우선은 Aladdin 에서 작동이 가능합니다.

***
  우선 사용가능환경에 대해서는 Mac 을 가지고 계시며, Delicious Library 2 를 가지고 계신 분에 한해서 입니다.
  설치는 아직까지 번거롭지만... 한번 도전해 보실 분에게는...
  * 1. XCode 설치
  * 2. CPAN 모듈 설치 (README 문서 참고)
  를 해야합니다.

** Terminal 에서
git clone git://github.com/JEEN/Delicious-Library-2-for-Korean.git
을 하시거나..
링크를 통해서 zip 파일을 다운받아서 압축을 풀고

** 바코드 스캔
  - perl bin/isight.pl

** ISBN 직접 입력
  - perl bin/term.pl

** Bookmarklet 사용 (서버 모드)
  - perl bin/server-starter.pl

과 같은 세가지 기능이 있습니다.
그 중 이것은 북마클릿 사용시의 화면입니다. 서버를 띄우고, 서적페이지로 가서 등록된 북마클릿 버튼을 클릭하면 자동으로 DL2 로 등록시켜주게 됩니다.



  일단은 Aladdin 뿐이지만, 제가 주로 책을 구입하는 곳은 Yes24 이고, 컴퓨터 서적관련해서 자주 보는 곳은 강컴이고, 아이리버 스토리 지름신이 살짝 왔다갔다 하는 지라 교보문고에도 들락거리기에...
  조만간 이 모든 서적 사이트를 지원하게끔 만들어보고자 합니다.

  사용 시의 고쳐줬으면 하는 점, 설치시의 문제점 등에 관한 것이 있으시다면 댓글을 남겨주시면 되도록 친절하게 알려드리고자 노력하겠습니다. :-)

  북마클릿은 아래의 링크를 끌어서 [북마크 도구모음] 란에 끌어놓으시면 됩니다.

  Insert into DL2
 
신고
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 로 등록하는 기능을 생각하고 있습니다.
신고
이빨까기 2009.01.21 20:54

[ 요청 ] 알라딘은 해외(혹은 일본) 유저를 무시하지 말아주세요.


  예전에는 잘되던 알라딘 접속이 일본에서는 안되더군요. 지난주 한국에 갔었을 때는 잘 접속이 되었는데 말이죠. 왜 YES24 도 있는데 왜 알라딘을 고집하느냐구요?

 - 다양한 온라인서점 사이트과의 비교

  YES24 의 베스트셀러와 알라딘의 베스트셀러는 비슷비슷하지만, 약간의 차이를 보입니다. 이벤트하는 도서가 다른 것도 있을테고, 주로 애용하는 고객도 다르겠죠. 온라인서점 특성상 "포인트" 때문에 이용하는 사이트를 쉽사리 바꾸기 힘듭니다.
  거기에 YES24 는 이유를 알 수 없는 해외배송불가서적들이 존재하죠. 해외주문시에 상당한 불편함을 느끼는 대목입니다.


 - API 제공

 이게 가장 큰 이유입니다. 현재 BookPedia 라는 Mac 용 서적관리 App 를 사용하고 있는데..(2008/11/24 - [IT/Mac] - [ Mac ] Bookpedia - 책을 관리해볼까요?) 이것은 알라딘 API 와 연동되어 있습니다. 그러므로 알라딘에서 접속을 차단시켜버렸으니 어떻게 할 수가 없습니다. 국내서적은 관리할 수 조차 없게됩니다.
 거기에 WebService::Aladdin 이라는 CPAN 모듈을 만들어 올렸는데... CPAN Tester 에서 계속해서 Test FAIL 연락이 옵니다. 해외접속을 차단했으니.. 접속 테스트를 실패한 것이죠.


 - Aladdin Thanks to Blogger

  이 블로그에 쓴 독후감 식의 포스트는 전부 TTB 링크를 걸어두었고, 또 앞으로는 그러려고 하고 있습니다. 하지만 접속이 차단된 마당에야 제가 어떻게 할 수는 없죠. YES24 는 자사 블로그가 아니면 그런 서비스를 제공해주지 않기때문에... 볼 것 없죠.

 아쉽게도 전 주로 YES24 를 사용하지만, 알라딘으로 전환하려고 시도할 때마다 이런 접속제한 문제가 저를 가로막는군요. 알라딘 담당자분께서 어떤 정책을 가지고 해외유저의 접속을 차단했는지는 모르겠지만, 대량접속으로 인한 서버부하증가는 기술로 맞서야지, 막는 게 능사가 아니라고 생각합니다.
 알라딘 담당자께서 봐주실 지 모르겠지만, 이런저런 투덜거림은 여기까지 입니다.
 덧붙여 불만사항을 말하자면 "해외VISA카드사용"이 불가능하다는 것두요.
신고
TOTAL 466,867 TODAY 41

티스토리 툴바