上篇:[ 國立公共資訊圖書館的電子書服務平台進行查詢所有符合的書目]
(1)先登入帳號1,將該帳號已標韱的書目產生"加入我的標韱"url
(async function () {
const allUrls = [];
const baseApi = "https://ebook.nlpi.edu.tw/personal/MyTagDetail";
const tagName = "閱讀雲端-低年級";
for (let start = 1; start <= 2; start++) {
const url = `${baseApi}?tagName=${encodeURIComponent(tagName)}&start=${start}&limit=100&ajaxQuery=Y`;
try {
const response = await fetch(url);
if (!response.ok) throw new Error(`API 錯誤:${response.status}`);
const json = await response.json();
if (Array.isArray(json.data)) {
json.data.forEach(item => {
if (item.sid) {
const link = `https://ebook.nlpi.edu.tw/bookdetail/${item.sid}/booktag.add?tagName=${tagName}`;
allUrls.push(link);
}
});
}
} catch (error) {
console.error(`處理 start=${start} 時發生錯誤:`, error);
}
}
// 將結果轉為純文字並下載
const blob = new Blob([allUrls.join('\n')], { type: 'text/plain;charset=utf-8' });
const downloadUrl = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = downloadUrl;
a.download = 'booktag_links.txt';
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
URL.revokeObjectURL(downloadUrl);
})();
(2)改登入帳號2,將產生連結進行寫入
(async function () {
const urls = [
"https://ebook.nlpi.edu.tw/bookdetail/1559/booktag.add?tagName=閱讀雲端-低年級",
"https://ebook.nlpi.edu.tw/bookdetail/1463/booktag.add?tagName=閱讀雲端-低年級",
"https://ebook.nlpi.edu.tw/bookdetail/953/booktag.add?tagName=閱讀雲端-低年級",
"https://ebook.nlpi.edu.tw/bookdetail/1066/booktag.add?tagName=閱讀雲端-低年級",
// ...(請將所有 URL 放入此陣列)
"https://ebook.nlpi.edu.tw/bookdetail/11041/booktag.add?tagName=閱讀雲端-低年級"
];
for (let i = 0; i < urls.length; i++) {
try {
const response = await fetch(urls[i], {
method: 'GET',
headers: {
'Content-Type': 'application/json'
}
});
if (!response.ok) {
console.error(`❌ 第 ${i + 1} 筆失敗:${response.status} - ${urls[i]}`);
continue;
}
const result = await response.text(); // 或 .json() 視 API 回傳格式
console.log(`✅ 第 ${i + 1} 筆成功:`, result);
} catch (err) {
console.error(`⚠️ 第 ${i + 1} 筆錯誤:`, err);
}
}
})();