基于Hexo框架快速搭建个人博客--文章一键发布(五)

基于Hexo框架快速搭建个人博客--文章一键发布



  • 前言:在前面的文章中,已经实现了文章的撰写和图片的处理,接踵而至的就是文章的发表,在这里还需要向之前一样复杂吗,所以在这里尝试去实现文章的一键发表

一、文章对比

  • 平时在本地写文章保存在D:\Markdown目录,而 Hexo 保存在D:\hexoblog目录。发布 Hexo 之前需要先把文章拷贝到D:\hexoblog\source\_posts目录,有时候文章有修改还要重新拷贝覆盖。通过搜寻资料,查看文章,决定用Python脚本实现拷贝文件,判断文件最后修改时间决定是否需要覆盖旧文章。
  • 因为我们省略了hexo create "title"这一步,直接把文件拷贝到了_posts目录,所以写文章时需要确保在开头加上 title、date、tags、category信息,不然发布的文章会没有没有标题、发布时间、标签、分类信息,其实hexo create命令做的就是这件事。注意最后的空行一定要有。
---
title: 基于hexo框架快速从0到1搭建个人博客 -- 文章发布
date: 2022-8-13 21:26:01
tags: hexo
categories : 博客
---
  • Python 代码(电脑要配置好python环境):
# copy_to_hexo.py
import os
import shutil
import time


def copy_to_hexo():
    local_list = os.listdir(LOCAL_ARTICLE_PATH)
    hexo_list = os.listdir(HEXO_ARTICLE_PATH)
    flag = True
    for file in local_list:
        if file in IGNORE_LIST:
            continue
        if file.endswith('.md'):
            local_version = os.path.join(LOCAL_ARTICLE_PATH, file)
            hexo_version = os.path.join(HEXO_ARTICLE_PATH, file)
            if file not in hexo_list:
                flag = False
                print("新增文章: %s..." % file,
                      "最后修改时间:%s" % TimeStampFormat(os.path.getmtime(local_version)))
                shutil.copy(local_version, hexo_version)
            elif os.path.getmtime(local_version) > os.path.getmtime(hexo_version):
                flag = False
                print("更新文章: %s..." % file,
                      "上次修改时间:%s" % TimeStampFormat(os.path.getmtime(hexo_version)),
                      "最后修改时间:%s" % TimeStampFormat(os.path.getmtime(local_version)))
                shutil.copy(local_version, hexo_version)
    print('文章无变化' if flag else '更新完毕')


# 时间格式标准化
def TimeStampFormat(timestamp):
    return time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(timestamp))


IGNORE_LIST = ['欢迎使用Markdown编辑器.md']
HEXO_ARTICLE_PATH = 'D:\hexoblog\source\_posts'
LOCAL_ARTICLE_PATH = 'D:/Markdown'

copy_to_hexo()
  • 运行效果

二、发布到Github

  • 之前已经修改好了hexo的配置:
deploy:
  type: git
  repo:
      github: git@github.com:用户名/用户名.github.io.git,main
  • shell发布脚本:Git Bash支持直接运行 shell 脚本,只需要把下面代码保存为 .sh后缀的文件即可:
# deploy_hexo.sh
cd /d/hexoblog
pwd
# 白底黑字效果
echo -e "\033[47;30m>>>>>>>>>>>>>>>>>>>>hexo g<<<<<<<<<<<<<<<<<<<<\033[0m"
hexo g
echo -e "\033[47;30m>>>>>>>>>>>>>>>>>>>>hexo d<<<<<<<<<<<<<<<<<<<<\033[0m"
hexo d
sleep 5
# 执行完毕不退出
# exec /bin/bash
  • 运行效果:

三、一键发布

  • 上面写的两个脚本一步一步实现了文章的自动发布,对于 Windows 系统来说,可以使用 bat 脚本把它们整合在一起,完成“一键”发布的需求。
:: post_my_blog.bat
python copy_to_hexo.py
"C:\Program Files\Git\git-bash.exe" deploy_hexo.sh
pause
  • 写好文章后,直接双击post_my_blog.bat就可以发布到三个地方了。

四、总结

  • 本文主要实现了文章的发布,参考了许多资料和部分代码,并将其整合在一个文件中,实现真正的一键发布,减少博客文章管理压力,使更加专注于文章的撰写!
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

会思想的苇草i

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值