書籍名 作者 出版社 サムネイル ビューアーアドレス 販売ページ等を取得
手順
// init
let xhr = new XMLHttpRequest()
let domain = '<https://bookwalker.jp/prx/holdBooks-api/hold-book-list/>'
let items = []
let csvData = ""
let csvHead = "productId, title, authorName, companyName, imageUrl, viewerUr, detailUrl, moralTypeCode ,isExpired\\n"
let page = 1
// function
function getItemsList(page) {
let url = domain + '?page=' + page
console.log(url)
xhr.open('GET', url, false)
xhr.send()
}
// request result
xhr.onreadystatechange = function() {
switch ( xhr.readyState ) {
case 0:
console.log('uninitialized')
break
case 1:
console.log('loading...')
break
case 4:
if(xhr.status == 200) {
let data = xhr.responseText
data = JSON.parse(data)
if(data.holdBookList.entities) {
items.push(...data.holdBookList.entities)
}
console.log(data.holdBookList.totalPage)
if(data.holdBookList.totalPage==page) {
break
}
page=page+1
getItemsList(page)
} else {
console.log('Failed')
}
break
}
}
// action
getItemsList(page)
// to csv
items.forEach(item => {
csvData += '"' + item.productId + '","' + item.title + '","' + item.authors[0].authorName + '","' + item.companyName + '","' + item.imageUrl + '","' + item.viewerUrl + '","' + item.detailUrl + '","' + item.moralTypeCode + '","' + item.isExpired + '"\\n'
// csvData += '"' + item.productId + '","' + item.title + + '","'+ '"\\n'
})
//window.location = 'data:text/csv;charset=utf8,' + encodeURIComponent(csvData)
window.location = 'data:text/csv;charset=utf8,' + encodeURIComponent(csvHead + csvData)