简书迁移之获取所有文章的时间
2023-04-22 本文已影响0人
VioletJack
在迁移简书博客的时候,发布日期并没有带给我们。那么如何拿到上百篇文章的时间呢?
通过浏览器的开发面板的 console 来拿到网页中的内容,具体代码可以直接复制粘贴到 Console 面板中。
var all = document.querySelector("#list-container > ul").children;
var result = [];
for (let i = 0; i < all.length; i++) {
const elem = all[i];
const title = elem.querySelector(".title").text;
const time = elem.querySelector(".time").dataset.sharedAt;
result.push({
title: title.replaceAll(" ", "-"), // 由于导出的文件名不能有 . 和空格,所以简书都给转成了 -
time,
});
}
console.log("result", JSON.stringify(result));
需要注意的是,简书是通过下滑到底部继续加载的方式。所以如果想要拿到所有页面数据,需要将滚动条拖到最后。
拿到了数组后,就通过 node 将文章时间进行更新。
async test() {
const title = fs.readFileSync("./docs/title.json", "utf-8");
const json = JSON.parse(title);
for (const item of json) {
await this.ctx.service.content.updateTime(item);
}
this.ctx.body = json;
}
async updateTime({ title, time }) {
const sql = `SELECT id FROM ${TABLE_NAME} WHERE title="${title}"`;
const result = await this.app.mysql.query(sql, "");
if (result.length > 0) {
const id = result[0].id;
const updateRes = await this.app.mysql.update(TABLE_NAME, {
id,
create_time: time,
});
console.log("update result", id, time, updateRes.affectedRows);
}
}
如此,就成功将时间更新到数据库中啦!