다음 책검색 API -> 알라딘 API 정보
다음 책검색 API -> 알라딘 API
본문
서누니님의 도서검색 스킨을 변경하고 싶습니다.
http://sir.co.kr/bbs/board.php?bo_table=g4_skin&wr_id=85176
해당 스킨은 다음 API를 사용중인데 알라딘 API로 바꾸려고 보니
쿼리 날리는 주소랑 변수만 바꿔주면 될 줄 알았는데 생각보다 구조가 다른 부분이 있어서 어떻게 해야 할 지 모르겠습니다.
write.skin.php만 바꾸면 리스트랑 보기 화면은 기존과 다를 것이 없으니 어떻게든 될 듯 합니다.
표지 대/소와 제목, 출판사, 내용만 나오면 됩니다.
다음 책검색 API
http://dna.daum.net/apis/search/book
알라딘 책검색 API
http://blog.aladin.co.kr/ttb/category/16526940?communitytype=MyPaper
http://sir.co.kr/bbs/board.php?bo_table=g4_skin&wr_id=85176
해당 스킨은 다음 API를 사용중인데 알라딘 API로 바꾸려고 보니
쿼리 날리는 주소랑 변수만 바꿔주면 될 줄 알았는데 생각보다 구조가 다른 부분이 있어서 어떻게 해야 할 지 모르겠습니다.
write.skin.php만 바꾸면 리스트랑 보기 화면은 기존과 다를 것이 없으니 어떻게든 될 듯 합니다.
/* 여기부터 책검색 */
var obj = {
apikey: "<?=$board['bo_1']?>",
pageno: 1,
init : function()
{
obj.q = document.getElementById('q');
obj.b = document.getElementById('b');
obj.r = document.getElementById('r');
obj.book_page = document.getElementById('book_page');
obj.b.onclick = obj.pingSearch;
},
// 검색을 요청하는 함수
pingSearch : function()
{
if (obj.q.value)
{
// if(!pageno)
// var pageno=1;
obj.s = document.createElement('script');
obj.s.type ='text/javascript';
obj.s.charset ='utf-8';
obj.s.src = 'http://apis.daum.net/search/book?apikey=' + obj.apikey + '&pageno='+obj.pageno+'&result=12&output=json&callback=obj.pongSearch&q=' + encodeURI(obj.q.value);
document.getElementsByTagName('head')[0].appendChild(obj.s);
}
},
// 검색 결과를 뿌리는 함수
pongSearch : function(z)
{
obj.r.innerHTML = '';
if(!z.channel || z.channel.item.length <= 0)
{
obj.r.innerHTML = "검색 결과가 없습니다.";
return;
}
else
{
book_title = new Array();
book_author = new Array();
book_translator = new Array();
book_category = new Array();
book_pub_nm = new Array(); //출판사
book_pub_date = new Array(); //출판일
book_link = new Array();
book_description = new Array(); //책소개
book_img = new Array(); //이미지
book_img_l = new Array(); //큰이미지
for (var i = 0; i < z.channel.item.length; i++)
{
book_title[i] = obj.escapeHtml(z.channel.item[i].title);
book_author[i] = obj.escapeHtml(z.channel.item[i].author);
book_translator[i] = obj.escapeHtml(z.channel.item[i].translator);
book_category[i] = obj.escapeHtml(z.channel.item[i].category);
book_pub_nm[i] = obj.escapeHtml(z.channel.item[i].pub_nm);
book_pub_date[i] = obj.escapeHtml(z.channel.item[i].pub_date);
book_link[i] = obj.escapeHtml(z.channel.item[i].link);
book_description[i] = obj.escapeHtml(z.channel.item[i].description);
book_img[i] = z.channel.item[i].cover_s_url;
book_img_l[i] = z.channel.item[i].cover_l_url;
var li = document.createElement('li');
if(z.channel.item[i].cover_s_url)
li.innerHTML = "<img src=\'"+z.channel.item[i].cover_s_url+"\' onclick=\'gogo("+i+")\' style=\'cusor:pointer;\'>";
else
li.innerHTML = "<a href=# onclick=\'gogo("+i+")\'>"+z.channel.item[i].title+"</a>";
obj.r.appendChild(li);
}
//var totalpage = Math.ceil(z.channel.totalCount/z.channel.result);
//if(totalpage > 1)
//obj.book_page.innerHTML = " 검색결과("+z.channel.pageno+"쪽/"+totalpage+"쪽)";
}
},
// HTML태그 안 먹게 하는 함수
escapeHtml : function(str)
{
str = str.replace(/&/g, "&");
str = str.replace(/</g, "<");
str = str.replace(/>/g, ">");
return str;
}
};
function gogo(book_num)
{
document.fwrite.wr_1.value = book_category[book_num];
document.fwrite.wr_2.value = book_title[book_num];
if(book_translator[book_num])
document.fwrite.wr_3.value = book_author[book_num]+"/"+book_translator[book_num];
else
document.fwrite.wr_3.value = book_author[book_num];
document.fwrite.wr_4.value = book_pub_nm[book_num];
document.fwrite.wr_5.value = book_pub_date[book_num];
document.fwrite.wr_6.value = book_description[book_num];
document.fwrite.wr_link1.value = book_link[book_num];
document.fwrite.wr_9.value = book_img_l[book_num];
document.fwrite.wr_10.value = book_img[book_num];
}
window.onload = function()
{
obj.init();
<? if($w) { ?>
document.getElementById('q').value = "<?=strip_tags($write[wr_2])?>";
<? } ?>
obj.pingSearch();
};
/* 여기까지 책검색 */
표지 대/소와 제목, 출판사, 내용만 나오면 됩니다.
다음 책검색 API
http://dna.daum.net/apis/search/book
알라딘 책검색 API
http://blog.aladin.co.kr/ttb/category/16526940?communitytype=MyPaper
댓글 전체
아..부끄럽....
obj.s.src 의 주소를 바꾸셔야 되고 z.channel.item[i]. 의 이름들도 바뀌게 되겠지요.
알라딘 에서 JSON형식으로 결과값을 받으시면
넘어오는 값을 찍어보시고 변수에 맞게 배치 해주시면 될 것 같습니다.
obj.s.src 의 주소를 바꾸셔야 되고 z.channel.item[i]. 의 이름들도 바뀌게 되겠지요.
알라딘 에서 JSON형식으로 결과값을 받으시면
넘어오는 값을 찍어보시고 변수에 맞게 배치 해주시면 될 것 같습니다.
다음으로 하시면 됩니다. ttbkey는 여분필드 1번에 넣으면 됩니다. 근데 이걸 jquery를 이용해서 하는 것이더 깔끔할 것 같기도 한데...
/* 여기부터 책검색 */
var obj = {
apikey: "<?=$board['bo_1']?>",
pageno: 1,
init : function()
{
obj.q = document.getElementById('q');
obj.b = document.getElementById('b');
obj.r = document.getElementById('r');
obj.book_page = document.getElementById('book_page');
obj.b.onclick = obj.pingSearch;
},
// 검색을 요청하는 함수
pingSearch : function()
{
if (obj.q.value)
{
// if(!pageno)
// var pageno=1;
obj.s = document.createElement('script');
obj.s.type ='text/javascript';
//obj.s.charset ='utf-8';
obj.s.src = 'http://www.aladin.co.kr/ttb/api/ItemSearch.aspx?TTBKey=' + obj.apikey + '&Query=' + encodeURI(obj.q.value) + 'QueryType=Title&MaxResults=12&Start=' + obj.pageno + '&Output=JS&SearchTarget=Book&CallBack=obj.pongSearch';
document.getElementsByTagName('head')[0].appendChild(obj.s);
}
},
// 검색 결과를 뿌리는 함수
pongSearch : function(z)
{
obj.r.innerHTML = '';
if(!z.totalResults || z.item.length <= 0)
{
obj.r.innerHTML = "검색 결과가 없습니다.";
return;
}
else
{
book_title = new Array();
book_author = new Array();
book_translator = new Array();
book_category = new Array();
book_pub_nm = new Array(); //출판사
book_pub_date = new Array(); //출판일
book_link = new Array();
book_description = new Array(); //책소개
book_img = new Array(); //이미지
book_img_l = new Array(); //큰이미지
for (var i = 0; i < z.channel.item.length; i++)
{
book_title[i] = obj.escapeHtml(z.item[i].title);
book_author[i] = obj.escapeHtml(z.item[i].author);
book_translator[i] = /* obj.escapeHtml(z.item[i].author) */null; // 알라딘은 번역자는 제공하지 않는다.
book_category[i] = obj.escapeHtml(z.item[i].categoryName);
book_pub_nm[i] = obj.escapeHtml(z.item[i].publisher);
book_pub_date[i] = obj.escapeHtml(z.item[i].pubDate);
book_link[i] = obj.escapeHtml(z.item[i].link);
book_description[i] = obj.escapeHtml(z.item[i].description);
book_img[i] = z.item[i].cover; // 알라딘은 이미지가 하나밖에 제공하지 않는다.
book_img_l[i] = z.item[i].cover;
var li = document.createElement('li');
if(z.item[i].cover)
li.innerHTML = "<img src=\'"+z.item[i].cover+"\' onclick=\'gogo("+i+")\' style=\'cusor:pointer;\'>";
else
li.innerHTML = "<a href=# onclick=\'gogo("+i+")\'>"+z.item[i].title+"</a>";
obj.r.appendChild(li);
}
//var totalpage = Math.ceil(z.totalResults/z.itemsPerPage);
//if(totalpage > 1)
//obj.book_page.innerHTML = " 검색결과("+z.channel.pageno+"쪽/"+totalpage+"쪽)";
}
},
// HTML태그 안 먹게 하는 함수
escapeHtml : function(str)
{
str = str.replace(/&/g, "&");
str = str.replace(/</g, "<");
str = str.replace(/>/g, ">");
return str;
}
};
function gogo(book_num)
{
document.fwrite.wr_1.value = book_category[book_num];
document.fwrite.wr_2.value = book_title[book_num];
if(book_translator[book_num])
document.fwrite.wr_3.value = book_author[book_num]+"/"+book_translator[book_num];
else
document.fwrite.wr_3.value = book_author[book_num];
document.fwrite.wr_4.value = book_pub_nm[book_num];
document.fwrite.wr_5.value = book_pub_date[book_num];
document.fwrite.wr_6.value = book_description[book_num];
document.fwrite.wr_link1.value = book_link[book_num];
document.fwrite.wr_9.value = book_img_l[book_num];
document.fwrite.wr_10.value = book_img[book_num];
}
window.onload = function()
{
obj.init();
<? if($w) { ?>
document.getElementById('q').value = "<?=strip_tags($write[wr_2])?>";
<? } ?>
obj.pingSearch();
};
/* 여기까지 책검색 */
/* 여기부터 책검색 */
var obj = {
apikey: "<?=$board['bo_1']?>",
pageno: 1,
init : function()
{
obj.q = document.getElementById('q');
obj.b = document.getElementById('b');
obj.r = document.getElementById('r');
obj.book_page = document.getElementById('book_page');
obj.b.onclick = obj.pingSearch;
},
// 검색을 요청하는 함수
pingSearch : function()
{
if (obj.q.value)
{
// if(!pageno)
// var pageno=1;
obj.s = document.createElement('script');
obj.s.type ='text/javascript';
//obj.s.charset ='utf-8';
obj.s.src = 'http://www.aladin.co.kr/ttb/api/ItemSearch.aspx?TTBKey=' + obj.apikey + '&Query=' + encodeURI(obj.q.value) + 'QueryType=Title&MaxResults=12&Start=' + obj.pageno + '&Output=JS&SearchTarget=Book&CallBack=obj.pongSearch';
document.getElementsByTagName('head')[0].appendChild(obj.s);
}
},
// 검색 결과를 뿌리는 함수
pongSearch : function(z)
{
obj.r.innerHTML = '';
if(!z.totalResults || z.item.length <= 0)
{
obj.r.innerHTML = "검색 결과가 없습니다.";
return;
}
else
{
book_title = new Array();
book_author = new Array();
book_translator = new Array();
book_category = new Array();
book_pub_nm = new Array(); //출판사
book_pub_date = new Array(); //출판일
book_link = new Array();
book_description = new Array(); //책소개
book_img = new Array(); //이미지
book_img_l = new Array(); //큰이미지
for (var i = 0; i < z.channel.item.length; i++)
{
book_title[i] = obj.escapeHtml(z.item[i].title);
book_author[i] = obj.escapeHtml(z.item[i].author);
book_translator[i] = /* obj.escapeHtml(z.item[i].author) */null; // 알라딘은 번역자는 제공하지 않는다.
book_category[i] = obj.escapeHtml(z.item[i].categoryName);
book_pub_nm[i] = obj.escapeHtml(z.item[i].publisher);
book_pub_date[i] = obj.escapeHtml(z.item[i].pubDate);
book_link[i] = obj.escapeHtml(z.item[i].link);
book_description[i] = obj.escapeHtml(z.item[i].description);
book_img[i] = z.item[i].cover; // 알라딘은 이미지가 하나밖에 제공하지 않는다.
book_img_l[i] = z.item[i].cover;
var li = document.createElement('li');
if(z.item[i].cover)
li.innerHTML = "<img src=\'"+z.item[i].cover+"\' onclick=\'gogo("+i+")\' style=\'cusor:pointer;\'>";
else
li.innerHTML = "<a href=# onclick=\'gogo("+i+")\'>"+z.item[i].title+"</a>";
obj.r.appendChild(li);
}
//var totalpage = Math.ceil(z.totalResults/z.itemsPerPage);
//if(totalpage > 1)
//obj.book_page.innerHTML = " 검색결과("+z.channel.pageno+"쪽/"+totalpage+"쪽)";
}
},
// HTML태그 안 먹게 하는 함수
escapeHtml : function(str)
{
str = str.replace(/&/g, "&");
str = str.replace(/</g, "<");
str = str.replace(/>/g, ">");
return str;
}
};
function gogo(book_num)
{
document.fwrite.wr_1.value = book_category[book_num];
document.fwrite.wr_2.value = book_title[book_num];
if(book_translator[book_num])
document.fwrite.wr_3.value = book_author[book_num]+"/"+book_translator[book_num];
else
document.fwrite.wr_3.value = book_author[book_num];
document.fwrite.wr_4.value = book_pub_nm[book_num];
document.fwrite.wr_5.value = book_pub_date[book_num];
document.fwrite.wr_6.value = book_description[book_num];
document.fwrite.wr_link1.value = book_link[book_num];
document.fwrite.wr_9.value = book_img_l[book_num];
document.fwrite.wr_10.value = book_img[book_num];
}
window.onload = function()
{
obj.init();
<? if($w) { ?>
document.getElementById('q').value = "<?=strip_tags($write[wr_2])?>";
<? } ?>
obj.pingSearch();
};
/* 여기까지 책검색 */
오타 수정했습니다.