用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,可能會有問題。