撸linux


blogtool--另类wordpress博客客户端python命令行版

自从用了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安装方法

  • git clone http://www.github.com/lama7/blogtool.git
  • su
  • python setup.py install
  • blogtool使用方法

    blogtool的readme.md里讲的很多了。bt -h也可以看到详细的提示。

  • 发布博客:先在postfile的开始几行定义TITLE和CATEGORIES,空一行再写博客,写完后运行bt postfile -b lulinux发表。最后的lulinux是博客名称,如果没有-b lulinux,就会发布到.btrc里定义的所有博客中。CATEGORIES列表可以通过bt -C -b lulinux获得。新建的博客不要定义POSTID,否则将无法正常发表。
  • 修改博客:先运行bt -t 200 -b lulinux,列出lulinux博客的所有文章以方便检查ID,然后bt -g ID -b lulinux>postfile,然后修改postfile内容,最后bt postfile -b lulinux发表。
  • 从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发表。)

    相关博文

    

    发表评论

    电子邮件地址不会被公开。