• 基于hexo框架快速从0到1搭建个人博客----文章一键发布(五)


    基于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 : 博客
    ---
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 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()
    
    • 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

    • 之前已经修改好了hexo的配置:
    deploy:
      type: git
      repo:
          github: git@github.com:用户名/用户名.github.io.git,main
    
    • 1
    • 2
    • 3
    • 4
    • 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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 运行效果:

    三、一键发布

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

    四、总结

    • 本文主要实现了文章的发布,参考了许多资料和部分代码,并将其整合在一个文件中,实现真正的一键发布,减少博客文章管理压力,使更加专注于文章的撰写!
  • 相关阅读:
    redis进阶
    (十一)数据结构-线索二叉树
    Vue学习:模板语法
    Makefile——Linux下C/C++编译方法
    istio安装文档
    Sentinel结合Nacos实现配置持久化(全面)
    js设计模式:享元模式
    一篇文章了解MySQL的group by
    矩阵的模和内积
    k8s--基础--6.2--环境搭建--单master高可用集群
  • 原文地址:https://blog.csdn.net/ASHIYI66/article/details/126437117