简书迁移之获取所有文章的时间

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);
    }
  }

如此,就成功将时间更新到数据库中啦!

上一篇 下一篇

猜你喜欢

热点阅读