Open markyun opened 5 months ago
可以给一个详细的步骤吗?
可以给一个详细的步骤吗?
关键code
for (const object of bookData) {
for (let i = 0; i < object.books.length; i++) {
if (booksId && object.books[i].id ===booksId) {
const book = new Book(object.books[i].id, delNonStdChars(object.books[i].name), object.books[i].slug);
console.log("book",book);
book.root = await getBookDetail(page, book);
book.user_url = object.books[i].user.login
books.push(book);
}
}
}
"id": *********,
"type": "Book",
"slug": "isowbw",
"name": "**********",
"user_id": *********,
"description": null,
"items_count": 1,
"likes_count": 0,
"watches_count": 0,
"creator_id": ********,
"abilities": {
"read": true,
"update": true,
"modify_setting": true,
"destroy": true,
"share": true,
"read_private": true,
"create_doc": true
},
重点关注的字段
src/toc.js
因为我的知识库全部改成了英文名称,因此,我使用知识库名称过滤。
for (const object of bookData) {
// 定义要导出的知识库名称,
var book_name = "*****";
// 也可以根据知识库的id过滤,也是由知识库名称找到对应的知识库ID。
var book_id = "****";
for (let i = 0; i < object.books.length; i++) {
// 筛选出 特定的知识库,根据知识库名字进行过滤
if (book_name == object.books[i].name)
// if (book_id == object.books[i].id)
{
const book = new Book(object.books[i].id, delNonStdChars(object.books[i].name), object.books[i].slug);
// console.log(`Books information is: `, JSON.stringify(object.books[i]));
// break;
// continue;
book.root = await getBookDetail(page, book);
book.user_url = object.books[i].user.login
books.push(book);
}
}
}
当执行 node main.js之后,就只下载特定的知识库。
因为我的知识库文档内容太多,整体下载会卡死或超时。
可以在 getAllBooks 函数中,拿到 bookData 数据后,进行判断,只下载需要的 books 知识库。 code:if (object.books[i].id ===id) {
通过 https://www.yuque.com/api/mine/book_stacks 接口获取 全部 bookData内容,得到book_id。
通过 https://www.yuque.com/api/catalog_nodes?book_id=xxx + id 可以得到当前知识库的全部文章列表 getBookDetail 内容。