首页 > 其他分享 >便捷同步本地的博客文档到博客园

便捷同步本地的博客文档到博客园

时间:2023-06-14 15:44:47浏览次数:74  
标签:便捷 博客园 hugo posts 博客 content CnblogPy 文档

前言

我写博客的初心很简单,一是一些软件的配置过程(防止第二次配置的时候又抓瞎);二是记录下一下自己学习过程中的一些心得体会,在 高乙超的博客 中,我曾经看到一句话,叫 "To learn, read; To know, write; To master, teach"

过去二十年里,在学习的过程中,一直是作为一个输入方,应付考试倒是没啥问题,但也仅此而已了。为了更好地体会和领悟这些知识,我决定写写博客,既是做笔记,也是对自己的所学的一种整理和输出,也希望能有更多同道者看到,从而一起交流学习、共同进步。

最一开始么,其实是告诫自己,写博客的核心在于动笔输出,而不是折腾博客的主题又或是如何搭建博客站点,因此就想着选择一个现有的公开的博客平台,经过一番比较之下选择了博客园。说是比较,其实也没得太多选择的余地,除了博客园也就是 CSDN 了,然而对于 CSDN 我实在是深恶痛绝。博客园相较之下克制很多,广告少,更聚焦于技术,原创内容更多且更有深度,虽然界面以 2023 年的眼光来看比较老土了,但博客园支持自定义 CSS 啊。

没错,我还是无法控制自己,折腾了一下博客园的主题,鉴于本人对前端一窍不通,就算以后了解了,以我这种纠结来纠结去的性子,自己动手写主题,选择配色、主题、字号等绝对是噩梦,因此仅限于在 GitHub 上搜索他人做好的主题,挑了一番之后,网上比较热门的诸如 Silence 之类的主题,我都觉得太花里胡哨了,而且字体并不喜欢,找到一个设计风格不错的,奈何主题又太久没更新了,最后作罢。

最后,我还是选择了博客园自带的 Coding Life 主题,修改了一下代码块的 CSS,主要是改了代码块字体。

然而写了几篇博客之后,又发现博客园自带的编辑器太难用了。还是要自己现在本地用 VsCode 配合 Markdown Preview Enhanced 插件写好,再复制粘贴到博客园上发布,就觉得有点麻烦,倒不如用 Hugo 或者 Hexo 了,配置好之后,写好博客再敲一下命令就能搞定了。

于是我又动了用 Hexo 或者 Hugo 自己搭一个博客网站的念头,首先简单对比了一下,选择了 Hugo,比起 Hexo 来说,它性能高,配置起来更方便,Hexo 非常流行的 Next 主题我也并不喜欢,倒是 Hugo 的不少主题我非常喜欢,我个人在用的主题是 hugo-PaperModhugo-coder,没错,我一口气搭了两个网站,在我看来 hugo-coder 更好看一点,而 hugo-PaperMod 功能更为齐全,用的人更多,教程也更多。

两个博客网址分别是 zwyyy456.tkzwyyy456.ml

我这两个基于 Hugo 的博客可以说是纯白嫖实现的,域名是白嫖的 Freenom 的 .tk.ml 域名,自动部署方案是基于 GitHub 和 Vercel 实现的,将本地修改同步到 GitHub 之后,Vercel 就会自动构建站点。

这个方案我用了快半年,总体上来说是很满意的,写起博客来非常方便,站点颜值也很高,唯一美中不足的是,Google 或者 百度基本没有人看,估计和用的白嫖域名有关吧,我也不懂 SEO 优化,也没时间折腾这些,还有就是没有评论系统(反正也没人看)。其实搭建好个人博客之后,我还是坚持用复制粘贴的方式把博客同步到博客园坚持了一段时间的,后来太懒了,作罢。

就在前两天,我在查找 C++ 的内存分布相关资料的时候,发现了博主 sinkinben 的这篇 文章,我承认,肤浅的我一下子被他的博客主题吸引到了(内容反倒是其次了),在他的博客中有给出他的 Github 链接,点进去一看,果然有他的博客园主题的 CSS 和 html 文件,更改了一下博客园主题,看了一下实际效果,果然很好看。于是,我那把文章同步发布在博客园的心又蠢蠢欲动了起来。

博客园同步脚本

其实我一直有在关注博客园的 VsCode 插件,也使用过,其实挺好用的,但是有一个非常致命的问题。那就是执行 hugo new xxx.md 生成的文档都会带有如下图的 Yaml Front Matter 信息,这些信息不属于正文内容,Hugo 会基于这些信息解析出本文的标题、所属分类、标签等信息。而插件在上传文章到博客园时,并不会解析或者去除这些信息,而是作为正文的一部分直接上传,GitHub 上已经有人提 issue 了,开发者也注意到了这个问题,但还没来得及修改。

因此,如果想便捷地同步文章到博客园,在插件开发者做出修改之前,我只能另寻出路。经过我的一番检索,我发现了一个基本符合我需求的发布文章到博客园的 Python 脚本,基础教程见该脚本的 GitHub 地址

首先,需要执行 conda install markdown-it-pyconda install mdit-py-plugins 安装所需要的模块,

配置好脚本文件中对应的文章路径、MetaWeblog 账户信息之后,运行该脚本即可,运行时后面可以带一个数字作为参数,表示一次更新或者发布多少文章,脚本会自动发布指定数量的最近修改过的文章到博客园,如果未指定则参数默认为 $1$。

注意,运行脚本时,如果碰到 Yaml Front Matter 部分的 tags 一栏为空的 .md 文件,脚本会直接结束运行,同时 Hugo 限制了 _index.zh.md 不能有 tags 这一栏,因此要特别作一点处理。

tech 目录下的文章为例,我写了一个简单的 shell 脚本,自动复制 tech/*.md 文件到 CnblogPy/tech/ 下,然后删除该CnblogPy/tech/下的 _index.zh.md 文件,脚本的文章路径也指定成 /home/Documents/zwyyy/zwyb_blog/CnblogPy/tech/

# update to cnblogs
cd ~/Documents/zwyb_blog
cp ./content/posts/leet/*.zh.md ./CnblogPy/leet/
cp ./content/posts/tech/*.zh.md ./CnblogPy/tech/
cp ./content/posts/blog/*.zh.md ./CnblogPy/blog/

rm ./CnblogPy/*/_index.zh.md

python3 ./CnblogPy/blog_posts.py 12
python3 ./CnblogPy/leet_posts.py 12
python3 ./CnblogPy/tech_posts.py 12

# update to my own blog site
git add .
git commit -m "mac, blog"
git push -u origin main
cp -r ./content/posts/tech ~/Documents/papermod/content/posts/
cp -r ./content/posts/blog ~/Documents/papermod/content/posts/
cp -r ./content/posts/leet ~/Documents/papermod/content/posts/
cp -r ./content/posts/tech ~/Documents/hugo_coder/content/posts/
cp -r ./content/posts/blog ~/Documents/hugo_coder/content/posts/
cp -r ./content/posts/leet ~/Documents/hugo_coder/content/posts/
cd ~/Documents/papermod
git add .
git commit -m "mac, papermod"
git push -u origin main
cd ~/Documents/hugo_coder
git add .
git commit -m "mac, hugo_coder"
git push -u origin main

修改主题

博主 sinkinben 制作的主题已经非常完善了,我主要是针对自己需求修改了一下 header.html

一是将 Home、 Email、 About 这三个 menuItem 对应的链接修改为自己的相关链接,而是添加了 ️ Tag 和 Category 以及相关的 subMenuItem 链接,并将头像换成了自己的。

标签:便捷,博客园,hugo,posts,博客,content,CnblogPy,文档
From: https://www.cnblogs.com/zwyyy456/p/17480440.html

相关文章

  • MySQL 表信息查询,便于补数据库结构设计文档
    MySQL表信息查询,便于补数据库结构设计文档selectc.table_name表名,t.TABLE_COMMENT表说明,c.COLUMN_NAME列名,c.COLUMN......
  • 怎么将WPS中文档页面调整为一页纵向一页横向?
    1.单击菜单栏中的章节;2.选择工具栏中的拆分章节单击下一页分节符,此时文档出现两页;3.单击菜单栏中的页面布局;4.选择工具栏中的纸张方向,单击横向完成文档页面调整为一页纵向一页横向。 ......
  • Prompt范式产业实践分享!基于飞桨UIE-X和Intel OpenVINO实现跨模态文档信息抽取
    近期Prompt范式备受关注,实际上,其思想在产业界已经有了一些成功的应用案例。中科院软件所和百度共同提出了大一统诸多任务的通用信息抽取技术UIE(UniversalInformationExtraction)。截至目前,UIE系列模型已发布UIE、UIE-X、UIE-senta三大模型。基于Prompt思想,UIE系列模型凭......
  • RDIFramework.NET敏捷开发框架Web新增邮件中心实现便捷式的邮件收发
    1、引言邮件收发在很多业务系统中都有这样的需求,是比较正式和常用的功能。在我们的框架中提供了邮件中心功能模块,集内部邮件的收发、邮件归类、邮件星标的标记、邮件的删除与彻底删除等,邮件中心功能模块界面如下。整个界面由顶部的功能按钮,左侧的邮件常用分类、右侧会对应的邮件列......
  • c# 将指定文件名和路径的txt文档内容读出来并写到Excel中—winform程序
    使用C#中的`System.IO`和`Microsoft.Office.Interop.Excel`库来实现读取文本文件和写入Excel文件。以下是一个示例代码:1usingSystem;2usingSystem.IO;3usingSystem.Windows.Forms;4usingMicrosoft.Office.Interop.Excel;56namespaceWinFormDemo......
  • 根据复杂excel文档模板导出excel表格
    1,首先导入阿里的jar包<dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.0.2</version></dependency> 2,将模板excel文件放在对应目录下,取文件时根据存放路径取①模板内容 ②模板存放位置    3,编写util类......
  • 自增、Doc文档
    自增自减a++下一条语句a才自增++a本条语句a就自增Doc文档javadoc命令是用来生成自己的API文档cmd命令:javadoc-encodingUTF-8-charsetUTF-8Doc.java  ......
  • word文档四个角的图标叫什么?
    叫裁剪标记,关闭和打开就能控制显示。1、打开开始菜单,打开word软件。2、在界面左上角点击【文件】按钮。3、在左边菜单栏点击【选项】。4、在打开的选项界面点击【高级】。5、慢慢往下拉,找到显示文档内容,点击【显示裁剪标记】。6、关闭显示后,四个角也就是裁剪标记没有......
  • Java:使用poi操作docx的word文档
    packagecom.aomen.java;importorg.apache.poi.openxml4j.exceptions.InvalidFormatException;importorg.apache.poi.util.Units;importorg.apache.poi.xwpf.usermodel.*;importorg.apache.xmlbeans.XmlCursor;importorg.openxmlformats.schemas.wordprocessingml.......
  • hj_screw导出数据库表文档
    #要不要排除掉依赖,需要视项目导入的依赖情况而定.#这要排除掉依赖,主要是因为项目使用的log4j2排除了boot自身的日志具体如下:<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>......