当前位置: 首页 > news >正文

脚本工具 批量md转html

md转html,便于打包进APP

就算以后安卓不兼容,APP不能用,自己做个离线网页也能用一辈子

#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ Termux 批量 md → 手机竖屏 html """ import os import pathlib import markdown from datetime import datetime # 1. 待遍历的 md 目录 SRC_DIR = "/storage/emulated/0/Android/LLS_2025/Xmind/测试/Linux内核文章" # 2. 输出 html 的根目录 DST_DIR = "/storage/emulated/0/Android/LLS_2025/Xmind/测试/linux内核文章转换" # 3. 极简手机竖屏 CSS CSS = """<style> body{margin:0;padding:1em;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif;line-height:1.6;font-size:15px;color:#222;background:#fff} h1,h2,h3,h4,h5,h6{margin-top:1.2em;margin-bottom:.6em;font-weight:600} pre{background:#f6f8fa;padding:.8em;border-radius:4px;overflow-x:auto} code{background:#f6f8fa;padding:.2em .4em;border-radius:3px;font-size:90%} blockquote{margin:0;padding-left:1em;border-left:4px solid #dfe2e5;color:#6a737d} img{max-width:100%;height:auto} table{border-collapse:collapse;width:100%} th,td{border:1px solid #ddd;padding:.4em} th{background:#f6f8fa} </style>""" def ensure_dir(p: pathlib.Path): p.mkdir(parents=True, exist_ok=True) def md_to_html(md_text: str) -> str: """md -> 完整 html 字符串""" md = markdown.Markdown(extensions=["extra", "codehilite", "toc"]) content = md.convert(md_text) title = md.Meta.get("title", [""])[0] if hasattr(md, "Meta") else "" if not title: # 取第一行#标题或文件名 title = content.splitlines()[0].replace("<h1>", "").replace("</h1>", "").strip() html = f"""<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>{title}</title> {CSS} </head> <body> {content} <hr> <small>Generated by 凉安 @ {datetime.now().strftime("%Y-%m-%d %H:%M:%S")}</small> </body> </html>""" return html def main(): src_path = pathlib.Path(SRC_DIR).expanduser() dst_path = pathlib.Path(DST_DIR).expanduser() ensure_dir(dst_path) if not src_path.is_dir(): print("❌ 源目录不存在:", src_path) return md_files = list(src_path.rglob("*.md")) if not md_files: print("⚠️ 未找到任何 .md 文件") return for md_file in md_files: rel = md_file.relative_to(src_path).with_suffix(".html") out_file = dst_path / rel ensure_dir(out_file.parent) html = md_to_html(md_file.read_text(encoding="utf-8")) out_file.write_text(html, encoding="utf-8") print("✅", out_file) print(f"🎉 全部完成,共转换 {len(md_files)} 个文件 → {dst_path}") if __name__ == "__main__": main()
http://www.jsqmd.com/news/131237/

相关文章:

  • 什么是 API(应用程序编程接口)?
  • 基于USB协议的PLC调试接口设计实例
  • Multisim数据库未找到:教学场景下的核心要点
  • 快速排序算法:c++
  • 技术写作提效300%:用Anything-LLM辅助撰写文档
  • HBuilderX + uni-app 微信小程序项目从零实现指南
  • 解决Flutter项目中的`geolocator`依赖问题
  • 知识图谱构建一、知识图谱二、知识抽取三、知识融合#人工智能#具身智能#VLA#大模型#A
  • 降息预期落空!3800个股待涨!
  • vscode的colab扩展目前的一些问题
  • 基于用户行为分析优化Anything-LLM的推荐逻辑
  • 企业培训新方式:用Anything-LLM构建员工学习系统
  • 正则表达式:深入理解与应用
  • AI在工程调试中的能力边界_问题以及本质探讨
  • 从零实现多层板电源分割规则(AD操作)
  • 外包干了6天,技术明显退步。。。
  • 湖仓一体趋势下:AI与BI系统的协同演进
  • 对象存储对接:兼容S3协议的廉价扩容方案
  • 优雅地解决Kotlin代码风格问题:Spotless与Ktlint的完美结合
  • 源代码输出出现乱码的解决方案
  • 基于角色的权限控制:Anything-LLM如何实现细粒度授权?
  • 基于PyQt的上位机软件开发实战案例详解
  • 工业控制设备PCB绘制电源布局操作指南
  • 三极管工作状态核心要点:偏置条件一文说清
  • Bevy插件设计与参数化实例
  • 如何通过Anything-LLM提升客户文档响应效率?
  • 开源大模型新玩法:基于Anything-LLM的技术博客生成实战
  • 新手必读:vivado固化程序烧写常见误区与避坑指南
  • 避免重复提问:Anything-LLM会话记忆机制揭秘
  • hbuilderx开发微信小程序购物车功能完整指南