Puppeteer 使用實戰:如何將自己的 CSDN 專欄文章導出并用于 Hexo 博客(三)

文章目錄

  • 往期
  • 效果
  • 將文章信息導出
  • 適配 hexo 的文章模板
  • 導出的文章路徑問題
  • 終端控制執行腳本
  • 代碼整理
  • 結尾


往期

  • Puppeteer 使用實戰:如何將自己的 CSDN 專欄文章導出并用于 Hexo 博客(二)

效果

  • 寫了一個 node 腳本用來批量處理 md 文件

  • 本期用的基本上是 node

    請添加圖片描述

  • 添加終端控制

    在這里插入圖片描述

將文章信息導出

首先在爬取專欄頁數的時候就收集好了信息,我們把信息導出到外部 json

在這里插入圖片描述

然后再腳本里引入 ,就可以使用這個 json

const id2info = JSON.parse(await fs.readFileSync(`${__dirname}\\id2info.json`, "utf-8")
);

適配 hexo 的文章模板

我們可以看到 hexo 的每一個 page 是有一些配置的,我也想給導出的這些文章批量設置一下

在這里插入圖片描述

觀察一下導出的文件,可以得出一些規律

  • 文章開頭有 @toc[] 或者 @toc[](文字),然而 hexo 并不支持,需要替換掉
  • 有些文章沒有這些,就可以在內容開頭直接添加即可

在這里插入圖片描述
這里我是使用正則直接匹配分割

const reg = /\@\[toc\]\(.*?\)|\@\[toc\]/i;
// ....
const content = fs.readFileSync(eachArticlePath, "utf8");
/*** 拼接文章內容:文章分兩種情況* - 一種是頭部有 @[toc]()之類的* - 另一種是什么都沒有的*/
if (content.match(reg) !== null) {const splitContent = content.split(reg)[1];afterContent = `${replaceContent}\n${splitContent}`;
} else {afterContent = `${replaceContent}\n${content}`;
}

導出的文章路徑問題

通過 csdn 導出的文章,如果 title 中有一些特殊符號的,那么導出的時候會幫你替換成 _,因為 Windows 中不允許特殊字符在路徑中

在這里插入圖片描述
為了不改變之前的 title,我又寫了一個 filePath 專門用來讀文章
在這里插入圖片描述

終端控制執行腳本

這里寫了個終端的函數,如果選擇 y,那么就執行腳本

在這里插入圖片描述
需要引入 readline 以及 exec ,簡單的使用邏輯可以看一下我寫的:

import readline from "readline";
import { exec } from "node:child_process";
// ...
const rl = readline.createInterface({input: process.stdin,output: process.stdout,
});
rl.question("是否立即處理成 hexo 文章? y/n:", (answer) => {if (answer === "y") {// 執行 npm run build 命令exec("modify.cmd", (err, stdout, stderr) => {if (err) {console.error(err);return;}console.log("處理完成");rl.close();});} else {rl.close();}
});

其中的 cmd 命令很簡單,就是 node 腳本.js 即可運行

代碼整理

花了點時間抽離了一下代碼,這樣入口文件更簡潔了,每個功能也都獨立出來,方便修改和查錯,歡迎使用并 start ~代碼倉庫

在這里插入圖片描述

結尾

基本上文章已經批量處理好了,可以放到 hexo 里生成了!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/697659.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/697659.shtml
英文地址,請注明出處:http://en.pswp.cn/news/697659.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Java EE初階二十四】servlet的深入理解

1. Servlet API 的學習 下面主要學習這三個類,就已經可以完成 Servlet 的大部分開發了; 1. Httpservlet 2. HttpServletRequest 3. HttpServletResponse 2. Httpservlet的學習 2.1 Httpservlet在tomcat的工作原理 寫一個 Servlet 代碼,往往都…

BL808 Linux 支持WIFI 固件編譯流程

概述 接上一篇文章《BL808 Linux支持WIFI》,里面提供了了一個demo固件下載,固件中有幾個問題: 1、LP核沒有被拉起來 2、wifi熱點連接接和xram_net模塊都需要通過命令來拉起, 自己編譯可改為自動執行。 3、D0核的loader代碼中加了調試延時…

nest小結

一 :nest/cli 常見命令 1 生成中間件。 nest g middle name (生成中間件) 2 生成攔截器。 nest g interceptor name xxx 3 生成守衛。 nest g gu name xxx 二: 如何在項目中如何應用多個中間件? import { Injectable, NestMiddleware…

Python學習筆記——認識Python軟件包

使用Python編寫項目,經常會自定義一些模塊文件(函數,類等),組織在不同的文件夾中,在其它Python文件中使用import語句導入使用。Python軟件包和普通的文件夾不同之處在于有一個特定文件“__init__.py”。當導…

vue中的this.$emit方法:用于子組件中觸發父組件方法并傳值

vue中的this.$emit方法 使用一:$emit使用二:$emit update 和 .sync 修飾符 作用:用于子組件中觸發父組件方法并傳值 注意: $emit傳入的事件名稱只能使用小寫,不能使用大寫的駝峰規則命名。 使用一:$emit …

【正點原子STM32連載】 第五十五章 FreeRTOS移植實驗 摘自【正點原子】APM32E103最小系統板使用指南

1)實驗平臺:正點原子APM32E103最小系統板 2)平臺購買地址:https://detail.tmall.com/item.htm?id609294757420 3)全套實驗源碼手冊視頻下載地址: http://www.openedv.com/docs/boards/xiaoxitongban 第五…

用Python制定旅行計劃

編寫一個Python腳本,用于制定旅行計劃。這個腳本將詢問關于旅行的基本問題,并根據回答生成一旅行計劃。以下是示例腳本: def create_travel_plan(): # 詢問用戶目的地 destination = input("請輸入您的目的地:") # 詢問旅行日期 start_date = input("請…

【Kuiperinfer】筆記02 GoogleTest入門

文章目錄 Google Test基本概念 編寫測試頭文件AssertionTESTTest FixtureInvoking the Tests編寫main()函數 參考 Google Test Google Test是用于編寫C測試的框架,支持多種類型的測試,而不是只有單元測試(unit test)。 編寫測試…

weblogic8版本修改控制臺密碼

weblogic的8.1老版本在控制臺界面上沒有修改密碼的按鈕選項,因此需要通過修改服務器配置文件來更新密碼。 步驟1: 備份域目錄下的DefaultAuthenticatorInit.ldift文件 通過find /域目錄 -name weblogic.jar 查到jar包,通過命令生成文件 …

css3的var()函數

css3的var()函數 變量要以兩個連字符--(橫桿)(減號)為開頭 變量可以在:root{}中定義, :root可以在css中創建全局樣式變量。通過 :root本身寫的樣式,相當于 html,但優先級比后者高。 在CSS3中,var()函數是一個用于插入CSS自定義屬性&#xff…

Vulhub 靶場訓練 DC-6解析

一、搭建環境 kali充當攻擊機 ip地址是:192.168.200.14 DC-6充當靶機 : IP地址暫時未知 注意:讓兩臺機器的使用同一種網絡適配器 二、信息收集 1、探索同網段存活的主機 ①第一種方法 arp-scan -l②第二種方法 netdiscover -i eth0 -…

Python內置函數67個語法、參數和用法詳解

要獲取Python解釋器中所有當前可用的內置函數和變量的完整列表,您可以在Python解釋器中使用dir(__builtins__)命令。這將返回一個包含所有內置函數、異常和其他內置對象的列表。 分為10類 數學運算(7): abs 絕對值divmod 商和余數max 最大min最小pow 指數冪round 取整sum 求…

npm/nodejs安裝、切換源

前言 發現自己電腦上沒有npm也沒有node很震驚,難道我沒寫過代碼么?不扯了,進入正題哈哈…… 安裝 一般沒有npm的話會報錯: 無法將“npm”項識別為 cmdlet、函數、腳本文件或可運行程序的名稱而且報這個錯,我們執行…

【騎行新紀元】社交風暴來襲,你準備加入騎友圈了嗎?

當你的自行車輪輕輕滑過清晨的露水,你是否曾想與志同道合的騎友分享這一刻的喜悅?騎行,這個曾經只是簡單運動的代名詞,如今正在悄然轉變。隨著科技的進步和社交平臺的發展,騎行不再只是一種健身方式,它還帶…

【機器學習】是什么?——講解

機器學習 機器學習是人工智能(AI)的一個子領域,它提供了系統通過數據學習并改進其性能的能力,而不需要人為進行顯式編程,機器學習模型利用大量的數據樣本(訓練數據)來學習如何識別模式和關系&a…

C-指針-010

1指針 1.1語法: 【基類型*指針變量名】 【int *p&a】1.2語義: 【基類型】:指針變量指向的目標的數據類型 【*】:表示此時定義的變量是一個指針類型的變量 【&a】:一塊存放著int類型數據的空間的地址 【*p】…

slot全局屬性 <slot>標簽</slot> ::slotted()偽元素 筆記240223

slot全局屬性 標簽 ::slotted()偽元素 MDN HTML全局屬性 MDN HTML全局屬性 slot MDN HTML <slot>標簽元素 MDN CSS ::slotted()為元素 MDN 使用 templates and slots <slot>標簽 <slot>標簽是的 display 是 contents 在Web開發中&#xff0c;<s…

【高德地圖】Android搭建3D高德地圖詳細教

&#x1f4d6;Android搭建3D高德地圖詳細教程 &#x1f4d6;第1章 高德地圖介紹?了解高德地圖?2D地圖與3D地圖 &#x1f4d6;第2章 搭建3D地圖并顯示?第 1 步&#xff1a;創建 Android 項目?第 2 步&#xff1a;獲取高德Key?第 3 步&#xff1a;下載地圖SDK?第 4 步&…

照片上多余的人怎么處理?這幾種方法讓你的照片更完美!

照片怎么去掉多余人像&#xff1f;這是許多攝影愛好者經常遇到的問題。有時候&#xff0c;我們拍攝了一張非常美好的照片&#xff0c;但由于某些原因&#xff0c;照片中出現了不希望出現的人物。這時候&#xff0c;我們該如何處理呢&#xff1f;下面&#xff0c;我將分享幾種常…

2.5網安學習第二階段第五周回顧(個人學習記錄使用)

本周重點 ①多進程和多線程 1、進程和線程 2、多線程爆破 ②Redis數據庫 1、Redis的使用 2、Redis持久化 3、Redis未授權免密登錄 ③嗅探和Python攻擊腳本 1、嗅探&#xff08;端口掃描和IP掃描&#xff09; 2、SCAPY的應用 3、Python攻擊腳本&#xff08;SYN半連接…