#!/usr/bin/env python # vim:ts=2:sw=2 import sys, os, LiveJournal, re import tempfile """ this is the beginning of a livejournal client that uses your texteditor exclusively. """ EDITOR='/usr/bin/vim +' class PostFile: def __init__(self): self.filename = "" self.contents = {} self.file = None self.istemp = 0 def maketempfile(self): self.filename = tempfile.mktemp() file = open(self.filename, "w") os.chmod(self.filename, 0600) file.write('username: \n') file.write('subject: \n') file.write('usejournal: \n') file.write('\n') file.write('\n') file.close() self.istemp = 1 def loadfile(filename=None): if filename: self.filename = filename file = open(self.filename, "r") self.contents = {} entry = "" roption = re.compile(r'^(\w+): (.*)\n$') line = file.readline() match = roption.match(line) while match: (opt, value) = match.groups() self.contents[opt] = value line = file.readline() match = roption.match(line) while line: entry = entry + line line = file.readline() self.contents[entry] = line file.close() def dump(self): for k in self.contents.keys(): print "%s -> %s" % (k, self.contents[k]) def checkpass(self): if not self.contents.has_key('password'): self.contents['password'] = getpass("%s's password: ", self.contents['username']) try: post = PostFile() post.maketempfile() os.execvp('sh', ('sh', '-c', EDITOR + " " + post.filename)) finally: if post.istemp: os.remove(post.filename)