用Emacs管理博客园博客
用Emacs管理博客园博客
大概一年前就找各种 Emacs 扩展,希望可以直接将博客发布到博客园。但很无奈,各种失败。于是自己写了一个,如果有人需要(估计也没几个人),可以到这里下载。
本扩展提供一个用来管理博客的 cnblogs-minor-mode 副模式。可以用来发布 org 文件或者 html 文件。由于作者使用的是 org-mode 来写博客,所以直接发布 html 可能会有很多问题。
1 已经实现的功能
- 发布博文
- 删除博文
- 更新博文
包含图片
博文中包含的本地图片自动上传,并在发布时自动替换地址
@<font color=red> 支持标签 @</font>
@<font color=red>标签写在 KEYWORDS 后面,多个标签之间用","分开。@</font>
支持分类
@<font color=red>分类写在 CATEGORIES 后面@</font>,多个分类之间用空格隔开,这个关键字 org-mode 的模板里面没有,自己加上去,以后会完善分类的输入方式,像 org-mode 输入 tag 那样输入,但这个太难了,寒假里再搞。
@<font color=red> 摘要 @</font>
写在 DESCRIPTION 关键字后面。如果为空的话,按博客园的默认设置,会将正文的一部分作为摘要。
2 使用方法
2.1 配置
下载之后将其中的 el 文件放到一个目录中(如~/.emacs.d/misc/),然后将这个目录加入到 load-path 中:
(add-to-list 'load-path "~/.emacs.d/misc/")
然后再:
(require 'cnblogs)
2.2 使用
先设置博客 M-x cnblogs-setup-blog,其中 blog ID 就是博客地址中的那个博客名称(如我的就是 Open_Source
)。之后询问是否将网上的博客同步到本地,如果博客较多,可能需要很长时间。然后可以 M-x cnblogs-import-file 或者 cnblogs-import-folder 将本地的博客文件(即你的 org 源文件或者 html 源文件)导入,导入过程中遇到同名的博客会问是否将这个源文件与网络上的博客关联起来。
启动 cnblogs 副模式可以 M-x cnblogs-minor-mode,也可以自动启动:
(add-hook 'org-mode-hook (lambda () (cnblogs-minor-mode)))
2.3 功能
快捷键 | 命令 | 功能 | 备注 |
---|---|---|---|
C-c c c | cnblogs-get-categories | 将分类获取到本地 | 目前没什么实际用处 |
C-c c d | cnblogs-delete-post | 删除博文 | 常用 |
C-c c e | cnblogs-edit-post | 更新博文 | 常用 |
C-c c g | cnblogs-get-post | 获取指定 ID 的博文 | 估计用户不会用到 |
C-c c p | cnblogs-new-post | 发布博文 | 常用 |
C-c c r | cnblogs-get-recent-posts | 获取最近 N 篇博文 | 一般只在配置扩展时使用 |
C-c c s | cnblogs-save-draft | 将草稿保存到服务器 | 不知道有什么实际用途 |
C-c c u | cnblogs-get-users-blogs | 获取用户信息 | 对用户没什么用处 |
2.4 一个示例
注意分类和 Tags 的写法。 示例
3 更多细节
这里是一些细节问题,可能你会感兴趣。
3.1 账户配置
可以通过 M-x customize 来配置一些用户信息。也可以在.emacs 中直接修改。其中 cnblogs-media-object-suffix-list 是博客园支持的媒体文件类型,基本上只支持图片,视频什么的好像不支持。而 cnblogs-src-file-extension-list 是本扩展支持的源文件类型,目前只支持 html 和 org 文件。变量 cnblogs-file-root-path 默认是家目录下的".Cnblogs/",可以修改成任意的目录,这里主要是存放一些扩展要用到的东西,对于用户来说基本上没用。另外, 密码是明文存放的 。
3.2 使用细节
扩展可以解析 org 文件的一些信息,比如文章题目,时间,分类, 并将 Keywords 后面的信息作为博文分类, 多个分类之间可以有一个或者多个空白符,也可以是中文格式的空白符。 目前不支持标签(tags)功能,以后可能会将 keywords 改为标签,再另定义分类关键字。 另外如果是中文环境,发布时间可能出问题,比如英文环境中时间格式是"2012-09-13 Thu",这个没问题,但在中文环境中是"2012-09-13 六",这就会出问题,可以手动修改它,也可以不修改,因为博客园的发布时间服务器端决定的,不是由用户决定的。
建议建个“未分类”分类,这样忘记分类的随笔都会归到这个分类中去,方便查看。
4 TODO
4.1 编辑细节及功能 [28%]
4.1.1 TODO 自动补全分类
4.1.2 DONE 导入文件或者目录时自动补全功能
4.1.3 DONE 支持 tags
4.1.4 TODO 支持 w3m 预览
4.1.5 TODO 修改账户名和密码的提供方式,使之更优美
4.1.6 TODO 关联 twitter
4.1.7 TODO 关联 slideshare
感谢天朝。
4.2 IDE [0%]
4.2.1 TODO cnblogs-manager 主模式
4.2.2 TODO 状态标识
4.2.3 TODO toolbar
5 一些技巧
- up and home
设置为
/blogid
或者../../../
就可以指向自己的博客根目录。 - 声明由于我用的系统是 Linux,对于 Win 的情况不太了解,如果是用的 Cygwin 下的 Emacs 还好,如果是 Emacs for Win,可能会有问题。