호기심, 관심사

도서 검색 크롬 확장프로그램 만들기 - 4. 검색결과 화면



  1. 검색을 누르면 form action 으로 지정된 php 에서 라디오 버튼 선택값과 검색어를 받는다.
         



  1. URL 쿼리중 가변부분인 query 와 QueryType 만 변수로 받아 쿼리 스트링을 만들어 검색결과 xml을 리터받는다.

$finalquery  = http://www.aladin.co.kr/ttb/api/ItemSearch.aspx?ttbkey=typeyourttbkeyhere&query=%EA%B9%80%EC%B6%A9%EC%9B%90&QueryType=Author&MaxResults=10&start=1&SearchTarget=Book&output=xml&Version=20070901&Cover=Big ;

$xmlresult = simplexml_load_file($finalquery);

3. 검색결과 xml 파일을 받아 사용할 항목을 골라내고

4. item id = .... 항목이 책 정보가 들어있으므로 loop 를 돌며 필요한 정보를 가져와 뿌린다. 책 제목과 커버이미지에는 알라딘의 해당 책 페이지로 갈 수 있게 링크를 걸어준다.



  1. 5. 일단 아래와 같이 표시.


,
호기심, 관심사

도서 검색 크롬 확장프로그램 만들기 - 3. 검색화면

처음엔 입력폼과 검색 버튼만 만들었다가 쿼리상 입력옵션(제목,저자,출판사,아무거나다)만큼 라디오 버튼으로 선택하게 고쳤다.


라디오 버튼중 기본체크는 checked 라는 속성을 주면 되는데, 라디오 버튼 넷중 하나를 선택하면 기존 선택된게 해제가 되야되는데 안되는 것이다.

찾아보니 라디오 버튼 속성중 name 을 동일하게 주니 해결.


Subtmit 버튼을 누르면 php 에서 입력값을 받아 검색결과처리할 예정.


,
호기심, 관심사

도서 검색 크롬 확장프로그램 만들기 - 2. 알라딘 API 사

찾아보니 API는 아무나 쓸 수 있는게 아니고 알라딘으로 부터 TTBKey를 발급받아 쿼리문에 포함시켜야 사용이 가능하다.  

 ==> 알라딘 OpenAPI 신청, 사용방법 참고 (http://blog.aladin.co.kr/openapi/category/29154404?communitytype=MyPaper

TTB 란 Thanks To Blogger 의 약자. 예를 들어 본인 블로그에 책 리뷰를 작성하고 알라딘 API 를 사용해서 책 링크를  걸었을때 글을 본 사람이 해당 링크를 통해 알라딘에서 책을 구입하는 경우 수익을 일정부분 나눠주는 제도.

API 는 3가지로 1.일반검색(제목,저자등 검색어로), 2.단독검색(ISBN or 알라딘id), 3.상품검색(베스트,신간 식) 이 있는데 1번 방식으로 하면 될듯.

URL 쿼리 input/output 옵션이 꽤 다양하다.

  • 요청 URL샘플 : http://www.aladin.co.kr/ttb/api/ItemSearch.aspx?ttbkey=TTBKey&Query=aladdin&QueryType=Title&MaxResults=10&start=1&SearchTarget=Book&output=xml&Version=20070901 

<< 검색 요청(Request) 파라미터 스펙 >>
구분 요청변수 변수종류 설명
필수 TTBKey 문자열 부여받은 TTBKey값
Query 문자열 검색어
옵션
(옵션 조정 변수가 없을 경우에는 기본값으로 검색)
QueryType Keyword (기본값) : 제목+저자
Title : 제목검색
Author : 저자검색
Publisher : 출판사검색
검색어 종류
SearchTarget

Book(기본값) : 도서
foreign : 외국도서
Music : 음반
DVD : DVD
Beauty : 화장품
Gift : 기프트
used : 중고샵(도서/음반/DVD 등) 
Movie : 영화정보 
All : 위의 모든 타겟(몰)

검색 대상 Mall
Start 1이상, 양의 정수(기본값:1) 검색결과 시작페이지
MaxResults 1이상 100이하, 양의 정수(기본값:10) 검색결과 한 페이지당 최대 출력 개수
Sort accuracy : 정확도순(기본값)
PublishTime : 출간일
Title : 제목
SalesPoint : 판매량
CustomerRating 고객평점
MyReviewCount :마이리뷰갯수
정렬순서
Cover Big : 큰 크기
Mid(기본값) : 중간 크기
Small : 작은 크기
Mini : 매우 작은 크기
None : 없음
표지크기
CategoryId 양의정수 - 분야의 고유 번호(기본값:0, 전체)
(참고 : 알라딘 모든 분야 카테고리)
특정 분야로 검색결과를 제한함
Output XML(기본값) : REST XML형식
OS : 확장RSS(OpenSearch방식)
JS : JSON방식
출력방법
Partner 문자 파트너코드. 제휴사의 경우 파트너코드 입력으로 제휴사 유효성 체크.
Omitkey 양의정수(기본값:0) Omitkey가 1인경우 결과링크값에 TTBKey가 제외됨.
InputEncoding 문자열(인코딩의 영문이름 - 기본값:utf-8) 검색어의 인코딩 값을 설정. "utf-8"이나 "euc-kr"과 같은 인코딩의 영문이름.
Version 정수형 날짜
(기본값: 20070901이며 20131101도 가능)
검색API의 Version(날짜형식)을 설정. 
20131101의 경우 검색결과 최대 상품수는 200건으로 제약.
CallBack javascript function이름 호출후 불려질 javascript function의 이름을 지정.
output이 js인 경우에 한해 작동됨.
outofStockfilter 품절/절판 등 재고 없는 상품 필터링("1"이 제외 필터) 숫자

<< 검색 응답(Reponse) 결과값 스펙 >> 
필드명 설명 자료형
title 조회결과의 제목 문자열
link 조회결과를 확인할 수 있는 Html페이지의 링크 문자열(URL)
language 검색결과의 언어. 무조건 "ko"가 입력됨 문자열
copyright API제공자의 Copyright 문자열
pubDate 조회시간(GMT기준시) 날짜
totalResults 총 검색 결과 개수 정수형
startIndex 현재 페이지 정수형
itemsPerPage 한 페이지당 출력 결과 개수 정수형
query 요청 쿼리 문자열
version 현재 검색API의 Version 정수형 날짜
searchCategoryId 특정 분야로 검색을 제한한 경우 분야의 고유번호 출력 정수형
searchCategoryName 특정 분야로 검색을 제한한 경우 분야의 이름 출력 문자열
ISBN 해당 아이템의 ISBN(10자리) 숫자
ISBN13 해당 아이템의 ISBN(13자리) 숫자
item < itemId 해당 아이템의 고유한 값(알라딘 내부 KEY값) 숫자
item < category
(출력형식 OS에서만 해당)
'알라딘'이 출력 문자열
item < content:encoded
(출력형식 OS에서만 해당)
바로 사용할 수 있는 HTML이 포함된 간략한 상품 설명 문자열
item < description OS 출력형식: HTML이 없는 상품설명
기타 출력형식: HTML이 포함된 간략한 상품 설명
문자열
item < pubDate
item < dc:date
도서 출간일(GMT기준) 날짜
item < dc:creator
(출력형식 OS에서만 해당)
'aladdin'이 출력 문자열
item < priceStandard 상품 정가 숫자(통화)
item < priceSales 알라딘에서 판매하는 판매가(수시로 변동 가능) 숫자(통화)
item < stockStatus 상품의 재고 상태.
재고 보유 상태에서는 특별한 문자도 들어가있지 않으며 
품절,절판 등의 특별한 상태일때만 문자열이 출력
문자열
item < mileage 상품 구입시 지급되는 마일리지 숫자(통화)
item < cover 상품 표지 URL 문자열(URL)
item < categoryId 상품 대표 분야의 고유번호(알라딘은 복수 분류체계,그 중 대표 분류 하나)(참고 : 알라딘 모든 분야 카테고리) 숫자
item < categoryName 대표 분류의 상위 분류들(분류 히스토리, "<"를 기준으로 나누어져 있음) 문자열
item < publisher 상품의 출판사(제작사) 문자열
item < customerReviewRank 상품에 대해 고객이 부여한 별점(10점만점) 숫자

저자(김충원)로 검색하면 이런 식으로 xml 반환이 된다. ( 확장RSS, JSON 포맷도 지원함 ). To be continued....
 


,
호기심, 관심사

도서 검색 크롬 확장프로그램 만들기 - 1. 시작

 올여름과 가을에 각 5회에 걸쳐 웹어플리케이션 관련 수업을 두번 들었다. 교육이란게 그렇다. 필요해서 선택했고 들을 땐 내 것이 된 것 마냥 이해가 잘 되고 지적포만감이 들기도 한다. 하지만 한 주만 지나면 도루묵 상태로 컴백하기 일쑤다. 

 지난번 수업은 내용도 좋았지만 중간중간 개발자로서 강사가 본인이 느낀 자세와 마인드 이야기가 더 좋았다. 특히 보편적인 프로그램과 개인적인 프로그램에 대한 이야기가 떠오른다. 자기가 필요해서 만든 개인적인 프로그램은 세상에서 자기만 사용할테고, 자기에게만 의미가 있겠지만 그렇기 때문에 프로그램에는 온전히 자기 자신이 들어가 있다. 그래서 100% 온전히 목적과 기능을 이해한 상태에서 작업을 할 수 있고 불필요한 겉치레 기능나 낭비요소도 적다. 

 하지만 보편적인 프로그램. 예를 들어 일로써 만들거나, 불특정 다수를 타겟으로 만드는 것들은 계획대로 진도를 잘 맞춰 만들었다고 해서, 버그가 없다고 해서, 많은 사람이 사용한다고 한다고 해도 뭔가 하나 부족한게 있다. 바로 본인에게 얼마나 의미와 쓰임새가 있는지이다.

 사람마다 다를 수 있겠고 모름지기 개발자라면 본인의 것이 아니더라도 잘 만드는데 당연하다. 하지만 동기부여나 성취감 측면에서 아무래도 Self-Inspired 되서 시작한 것에는 견주기 힘들 것 같다. 개인적인 프로그램이 주변을 통해 입소문의 나 쓰는 이가 늘어나면서 보편적인 프로그램으로 대박이 나는 경우가 많지 반대로 처음부터 보편적인 프로그램을 만들어 대박내겠다고 해서 잘 되는 경우는 드문것 같다.   

 작은 것부터 개인적인 것부터 시작해야 의미와 성취감을 갖기 좋다는 이야기다. 어쨌든 들은 건 다른 귀로 날아가버리고 본건 잠들면 다음날 잊혀지지만 직접 해본건 평생 기억에 남는다고 했던가. 하나 만들어보기로 한다.

 평소에 생각했던 여러 아이디어중 만만해 보이는 것을 골랐다. 읽고 싶은 책들이 있으면 에버노트에 "읽을 책"이라는 노트북 안에 읽을 책들 커버이미지를 넣은 노트들을 만들어 넣는다. 도서관에서 책을 빌릴 때나 서점에서 책을 구매할 때 참고한다. 이후 책을 다 읽으면 후기를 적어 "읽은 책" 이라는 노트북으로 옮겨 넣는다. 


이때 책 커버 이미지를 찾으려면 알라딘 사이트로 가서 도서를 검색해야 되는데, 크롬 익스텐션으로 만들어서 책을 검색하고 이미지를 찾아낸다면 노트에 이미지 넣을 때 편할 것 같다.


,
  [ 1 ]  

최근 댓글

최근 트랙백

알림

이 블로그는 구글에서 제공한 크롬에 최적화 되어있고, 네이버에서 제공한 나눔글꼴이 적용되어 있습니다.

태그

링크

카운터

Today :
Yesterday :
Total :