gedit + reStructuredText = blogger writer

之前有找過blogger用的編輯器,不過都用的不是很順手。
反到是gedit + reStructuredText用的很習慣,只缺沒有把寫完的文章轉換成HTML,並上傳到blogger.
所以,就寫了這個小程式。

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import os, subprocess, re
from docutils import core
from docutils.writers.html4css1 import Writer,HTMLTranslator
class NoHeaderHTMLTranslator(HTMLTranslator):
def __init__(self, document):
HTMLTranslator.__init__(self,document)
self.head_prefix = ['','','','','']
self.body_prefix = []
self.body_suffix = []
self.stylesheet = []
_w = Writer()
_w.translator_class = NoHeaderHTMLTranslator
def reSTify(string):
html = core.publish_string(string,writer=_w)
html = re.sub('\<meta.*\>', '', html, re.I+re.U)
html = html.replace('<title></title>', '').replace('\n\n', '')
return html
# zenity 2.32不支援 --forms選項,只有3.4才有
title = subprocess.Popen("zenity --entry --title='Title'", shell=True, stdout=subprocess.PIPE).communicate()[0]
tags = subprocess.Popen("zenity --entry --title='Tag'", shell=True, stdout=subprocess.PIPE).communicate()[0]
title = title.replace('\n', '') or ''
tags = tags.replace('\n', '') or ''
txtFile = '/dev/shm/blogger.post'
with file(os.getenv('GEDIT_CURRENT_DOCUMENT_PATH')) as f:
body = reSTify(f.read())
with file(txtFile, 'w') as f:
f.write(body)
cmd = "google blogger post --title={0} --tags='{1}' --src={2}".format(title, tags, txtFile)
os.system(cmd)
os.remove(txtFile)
view raw gistfile1.py hosted with ❤ by GitHub


參考文章:


沒有留言:

張貼留言