html2md icon indicating copy to clipboard operation
html2md copied to clipboard

希望可以批量转换html写法的文件

Open Chaaoo opened this issue 2 years ago • 1 comments

Feature request(新功能建议)

希望可以批量转换html写法的文件

Chaaoo avatar Mar 26 '23 09:03 Chaaoo

HTML Editor - LDDGO.NET

你已经安装了turndown和moment库。
你已经将targetFolderPath变量设置为包含HTML文件的目录的正确路径。
npm install turndown moment --save

下面是代码,支持直接html文件批量生成md文件,调用的库是turndown 和 moment 库 (moment 库用来解析html的正则和替换)

const fs = require('fs');
const path = require('path');
const TurndownService = require('turndown');
const moment = require('moment');

// 创建 Turndown 服务实例
const turndownService = new TurndownService();

// 设置HTML文件和Hexo _posts目录的路径
const htmlFilesPath = path.join(__dirname, 'html2md'); // 你的HTML文件目录
const hexoPostsPath = path.join(__dirname, 'source/_posts'); // Hexo的_posts目录

// 读取HTML文件目录中的所有文件
fs.readdir(htmlFilesPath, (err, files) => {
  if (err) {
    console.error('读取HTML文件目录失败', err);
    return;
  }

  files.forEach(file => {
    if (path.extname(file) === '.html') {
      // 读取HTML文件内容
      const htmlContent = fs.readFileSync(path.join(htmlFilesPath, file), 'utf8');

      // 使用 Turndown 将HTML转换为Markdown
      const markdownContent = turndownService.turndown(htmlContent);

      // 创建文章的Front-matter
      const postDate = moment(); // 设置日期,这里使用当前日期,你可以根据需要修改
      const frontMatter = `
---
title: ${path.basename(file, '.html')} // 文章标题,根据需要修改
date: ${postDate.format('YYYY-MM-DD HH:mm:ss')} +0800 // 文章日期和时区
comments: false
tag: ""
main_color: "#9742ef"
toc: true
---
      `;

      // 创建完整的Markdown内容
      const fullMarkdownContent = `${frontMatter}\n${markdownContent}`;

      // 写入到Hexo的_posts目录
      const postFileName = `${path.basename(file, '.html')}.md`; // 根据日期和文件名创建文件名
      const postPath = path.join(hexoPostsPath, postFileName);
      fs.writeFileSync(postPath, fullMarkdownContent, 'utf8');
      console.log(`文章已创建:${postPath}`);
    }
  });
});

hljs.highlightAll();

coffiner avatar Jul 12 '24 02:07 coffiner