- 前言:在前面的文章中,已经实现了文章的撰写和图片的处理,接踵而至的就是文章的发表,在这里还需要向之前一样复杂吗,所以在这里尝试去实现文章的一键发表。
一、文章对比
- 平时在本地写文章保存在
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环境):
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()
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
二、发布到Github
deploy:
type: git
repo:
github: git@github.com:用户名/用户名.github.io.git,main
- shell发布脚本:Git Bash支持直接运行 shell 脚本,只需要把下面代码保存为
.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
三、一键发布
- 上面写的两个脚本一步一步实现了文章的自动发布,对于 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
就可以发布到三个地方了。
四、总结
- 本文主要实现了文章的发布,参考了许多资料和部分代码,并将其整合在一个文件中,实现真正的一键发布,减少博客文章管理压力,使更加专注于文章的撰写!