自从用了gentoo之后,折腾境界更高一层。从此,讨厌二进制包,讨厌华而不实的界面。从此,热爱源码,热爱编程,热爱系统最优化配置,深深迷恋gentoo超快的运行速度而不能自拔。什么程序都想精简小巧化,最好不要有任何依赖,像gnome、kde环境及其应用一律不装,以保持系统最大程度的清爽。
因此我没有装blogilo这样依赖kde环境和许多其他包的博客客户端,而选用了vimpress、scribefire这样的小程序或插件。但是vimpress依赖vim环境,scribefire又依赖firefox,尤其是后者,不适合定制。找来找去,发现只有github上lama7做的blogtool这样的python纯命令行版工具才符合我的要求。
blogtool对我的好处有二:
1,命令行版工具,接近底层,方便各种DIY定制。结合Xdialog这样的工具可以在桌面上随心发布博客,可以嵌入到文件管理器右键菜单中,可以用shell批量生成博客,提高博客制作效率。
2,体积小(只有blogilo的1/20大),依赖少(不用像blogilo那样依赖消耗系统资源的kde环境),使gentoo保持轻量、运行快速的体验。
blogtool安装方法
blogtool使用方法
blogtool的readme.md里讲的很多了。bt -h也可以看到详细的提示。
从github上下载的原生blogtool的问题还是蛮多的,作者没怎么维护,而且对中文utf-8编码支持不好,要正常使用它,还得花时间折腾。以下是我发现的问题及探索出来的解决方法:
安装了lama7的blogtool之后运行bt -help出现这样的错误提示:ImportError: Failed loading extension 'typed_list' from 'typed_list', 'markdown.extensions.typed_list' or 'mdx_typed_list'
答:缺少markdown的typed_list扩展。locate找不到,python官方网站(http://pythonhosted.org/Markdown/extensions/index.html)也找不到,只有作者lama7的个人博客(http://sahd.lamafam.org)里能找到,见http://sahd.lamafam.org/?p=1196或https://gitorious.org/markdown-typed_olist,下载了之后解压缩到/usr/lib64/python2.7/site-packages/markdown/extensions/文件夹即可,然后bt -h可以看到blogtool能正常使用了。
运行bt -t 10想获取最近的10条博客列表,出现这样的错误:Caught in options.GetRecentTitles.run: Exception in wp._getBlogID:bad name:撸linux
答:.btrc里的NAME必须跟博客真实名称一致,但blogtool不支持中文,所以会有错误。解决方法有两种:下策是登陆网站后台修改真实的博客名称为纯英文的的,上策是修改/usr/lib64/python2.7/site-packages/blogtool-1.2.0-py2.7.egg/blogtool/xmlproxy/wp_proxy.py里的if self._blogname == blog['blogName']为if self._blogname <> blog['blogName']。然后就可以在.btrc里随意修改NAME,不必与真实名保持一致,方便且不影响博客修改发表。
执行bt -g 114 -b lulinux>postfile后提示错误UnicodeEncodeError: 'ascii' codec can't encode character u'\u7528' in position 42: ordinal not in range(128)
答:参考http://wolfmaster.iteye.com/blog/638029,修改/usr/lib64/python2.7/site-packages/blogtool-1.2.0-py2.7.egg/blogtool/options.py的第373行print header_str + '\n' + text为print (header_str + '\n' + text).encode('utf-8')。还可以参考http://www.codesky.net/article/201301/179545.html,在/usr/lib64/python2.7/site-packages/blogtool-1.2.0-py2.7.egg/blogtool/options.py的头部的import sys行后加入以下内容:
default_encoding = 'utf-8' if sys.getdefaultencoding() != default_encoding: reload(sys) sys.setdefaultencoding(default_encoding)
blogtool老是提示IndexError: list index out of range或者出现汉字乱码错误怎么办?
答:blogtool对中文utf-8编码支持不好,屏蔽html2md模块将一劳永逸的解决上面的两个问题。屏蔽方法是将/usr/lib/python2.7/site-packages/blogtool-1.2.0-py2.7.egg/blogtool/options.py中的html2md.convert去掉。
blogtool发表博客不识别中文分类的问题; Category '其他' is not a valid category for lulinux so it is being removed from the category list for this post.
答:删掉或注释掉/usr/lib/python2.7/site-packages/blogtool-1.2.0-py2.7.egg/blogtool/fileprocessor.py中的以下语句:
#else: # rcats = [ ct[0] for ct in nonCats ] # print "Category '%s' is not a valid category for %s so it is being\n\ # \r removed from the category list for this post.\n\ # \rUse the -a option if you wish to override this behavior or\n\ # \rthe -n option to add it from the command line.\n" %\ # (', '.join(rcats), # header.name) # [ header.categories.remove(c) for c in rcats
(本文通过python博客命令行工具blogtool发表。)