Skip to content

Latest commit

 

History

81 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

funblog

本地笔记发布工具:把本地目录下的 Markdown / Jupyter Notebook(.md / .ipynb)文件按目录结构扫描成「分类-文章」树,记录到本地 SQLite,再通过 XML-RPC(metaWeblog 协议)批量发布/更新到 Typecho 博客。仓库里还带了一个尚未实现的 Yuque(语雀)发布模块的空壳,以及一批与博客发布无关的历史遗留爬虫/工具脚本(funblog/utils/fzutilsfunblog/utils/brush),目前未被主流程使用,保留仅供参考。

PyPI 上目前没有发布 funblog 这个包,下面只给出源码安装方式。

安装

PyPI 上没有可用的发布包,需要从源码安装:

git clone https://github.com/farfarfun/funblog.git
cd funblog
pip install -e .

依赖 funbuildfundata(提供 SqliteTable 等基础能力),以及 nbformatnbconvert(用于解析 .ipynb)。

用法示例

from funblog.publish.core import BlogManage

# path_root: 本地笔记根目录,子目录会被当作分类,.md/.ipynb 文件会被当作文章
blog = BlogManage(path_root='/path/to/notes', db_path='/path/to/blog.db')

# 1. 扫描本地文件,写入分类表/文章表
blog.local_scan()

# 2. 发布到 Typecho(通过 XML-RPC)
blog.publish_typecho(
    rpc_url='https://your-blog.com/action/xmlrpc',
    username='your-username',
    password='your-password',
)

BlogManage 内部用 BlogCategoryDB / BlogPageDB(均基于 SQLite)记录分类和文章的本地 id 与 Typecho 端 id 的对应关系,重复运行 local_scan() + publish_typecho() 可以做到增量更新:已发布过的文章会走 edit_page,未发布过的走 new_page

底层的 Typecho 客户端 funblog.blog.typecho.Typecho 封装了 metaWeblog / WordPress 兼容的 XML-RPC 接口(文章、页面、分类、标签、附件、评论),可以单独使用:

from funblog.blog.typecho import Typecho

typecho = Typecho(rpc_url='https://your-blog.com/action/xmlrpc',
                  username='your-username', password='your-password')
print(typecho.get_categories())

已知局限

  • Yuque(语雀)发布模块(funblog/blog/yuque/)目前是空文件,功能未实现。
  • funblog/utils/ 下的 fzutilsbrush 是历史爬虫/工具脚本合集,与博客发布主流程无关,未做维护,使用前请自行确认可用性。

About

博客内容管理与自动发布工具:将 Jupyter Notebook/Markdown 转换后经 XML-RPC metaWeblog 发布到 Typecho 与语雀,并用 SQLite 管理分类与文章元数据

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages