Mercurial > hg > bitsyblog
annotate bitsyblog/blogme.py @ 44:0e7f56709c90
cleanup of blogme, not yet finished
author | k0s <k0scist@gmail.com> |
---|---|
date | Wed, 11 Nov 2009 19:39:27 -0500 |
parents | 8b9aa9f40fa5 |
children | c228832db770 |
rev | line source |
---|---|
0
e3823be6a423
initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
1 #!/usr/bin/env python |
e3823be6a423
initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
2 |
44 | 3 """ |
4 command line blogger | |
5 """ | |
6 | |
0
e3823be6a423
initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
7 import optparse |
e3823be6a423
initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
8 import os |
e3823be6a423
initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
9 import subprocess |
e3823be6a423
initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
10 import sys |
e3823be6a423
initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
11 import tempfile |
e3823be6a423
initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
12 import urllib2 |
e3823be6a423
initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
13 |
44 | 14 from ConfigParser import ConfigParser |
15 | |
43
8b9aa9f40fa5
moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents:
42
diff
changeset
|
16 # global variable |
44 | 17 CONFIG = '.blogme' |
0
e3823be6a423
initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
18 |
43
8b9aa9f40fa5
moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents:
42
diff
changeset
|
19 def tmpbuffer(editor=None): |
0
e3823be6a423
initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
20 """open an editor and retreive the resulting editted buffer""" |
43
8b9aa9f40fa5
moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents:
42
diff
changeset
|
21 if not editor: |
8b9aa9f40fa5
moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents:
42
diff
changeset
|
22 editor = os.environ['EDITOR'] |
0
e3823be6a423
initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
23 tmpfile = tempfile.mktemp(suffix='.txt') |
e3823be6a423
initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
24 cmdline = editor.split() |
e3823be6a423
initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
25 cmdline.append(tmpfile) |
e3823be6a423
initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
26 edit = subprocess.call(cmdline) |
e3823be6a423
initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
27 buffer = file(tmpfile).read().strip() |
e3823be6a423
initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
28 os.remove(tmpfile) |
e3823be6a423
initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
29 return buffer |
e3823be6a423
initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
30 |
43
8b9aa9f40fa5
moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents:
42
diff
changeset
|
31 def main(args=sys.argv[1:]): |
8b9aa9f40fa5
moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents:
42
diff
changeset
|
32 |
44 | 33 # parse command line options |
43
8b9aa9f40fa5
moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents:
42
diff
changeset
|
34 parser = optparse.OptionParser() |
44 | 35 parser.add_option('-c', '--config') |
36 parser.add_option('-H', '--host') | |
43
8b9aa9f40fa5
moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents:
42
diff
changeset
|
37 parser.add_option('-u', '--user') |
8b9aa9f40fa5
moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents:
42
diff
changeset
|
38 parser.add_option('-p', '--password') |
8b9aa9f40fa5
moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents:
42
diff
changeset
|
39 parser.add_option('--private', action='store_true', default=False) |
8b9aa9f40fa5
moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents:
42
diff
changeset
|
40 parser.add_option('--secret', action='store_true', default=False) |
8b9aa9f40fa5
moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents:
42
diff
changeset
|
41 options, args = parser.parse_args() |
8b9aa9f40fa5
moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents:
42
diff
changeset
|
42 |
8b9aa9f40fa5
moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents:
42
diff
changeset
|
43 # sanity check |
8b9aa9f40fa5
moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents:
42
diff
changeset
|
44 if options.private and options.secret: |
8b9aa9f40fa5
moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents:
42
diff
changeset
|
45 print "post can't be secret and private!" |
8b9aa9f40fa5
moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents:
42
diff
changeset
|
46 sys.exit(1) |
0
e3823be6a423
initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
47 |
44 | 48 # parse dotfile config |
49 config = ConfigParser() | |
50 if not options.config: | |
51 home = os.environ['HOME'] | |
52 options.config = os.path.join(home, CONFIG) | |
53 if os.path.exists(options.config): | |
54 config.read(options.config) | |
0
e3823be6a423
initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
55 |
43
8b9aa9f40fa5
moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents:
42
diff
changeset
|
56 # determine user name and password |
8b9aa9f40fa5
moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents:
42
diff
changeset
|
57 fields = [ 'user', 'password' ] |
8b9aa9f40fa5
moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents:
42
diff
changeset
|
58 for field in fields: |
8b9aa9f40fa5
moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents:
42
diff
changeset
|
59 globals()[field] = prefs.get(field) |
0
e3823be6a423
initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
60 |
43
8b9aa9f40fa5
moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents:
42
diff
changeset
|
61 optval = getattr(options, field) |
8b9aa9f40fa5
moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents:
42
diff
changeset
|
62 if optval: |
8b9aa9f40fa5
moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents:
42
diff
changeset
|
63 password = None # needed to ensure prompting for pw from command line |
8b9aa9f40fa5
moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents:
42
diff
changeset
|
64 globals()[field] = optval |
0
e3823be6a423
initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
65 |
43
8b9aa9f40fa5
moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents:
42
diff
changeset
|
66 if globals()[field] is None: |
8b9aa9f40fa5
moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents:
42
diff
changeset
|
67 globals()[field] = raw_input('%s: ' % field) |
8b9aa9f40fa5
moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents:
42
diff
changeset
|
68 assert user is not None |
8b9aa9f40fa5
moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents:
42
diff
changeset
|
69 assert password is not None |
8b9aa9f40fa5
moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents:
42
diff
changeset
|
70 |
8b9aa9f40fa5
moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents:
42
diff
changeset
|
71 # write the dotfile if it doesn't exist |
44 | 72 # if not os.path.exists(dotfile): |
73 # preffile = file(dotfile, 'w') | |
74 # print >> preffile, 'user: %s' % user | |
75 # print >> preffile, 'password: %s' % password | |
76 # preffile.close() | |
77 # os.chmod(dotfile, 0600) | |
43
8b9aa9f40fa5
moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents:
42
diff
changeset
|
78 |
8b9aa9f40fa5
moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents:
42
diff
changeset
|
79 |
8b9aa9f40fa5
moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents:
42
diff
changeset
|
80 # get the blog |
8b9aa9f40fa5
moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents:
42
diff
changeset
|
81 if args: |
8b9aa9f40fa5
moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents:
42
diff
changeset
|
82 msg = ' '.join(args) |
8b9aa9f40fa5
moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents:
42
diff
changeset
|
83 else: |
8b9aa9f40fa5
moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents:
42
diff
changeset
|
84 msg = tmpbuffer() |
0
e3823be6a423
initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff
changeset
|
85 |
43
8b9aa9f40fa5
moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents:
42
diff
changeset
|
86 # open the url |
44 | 87 url = options.host |
43
8b9aa9f40fa5
moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents:
42
diff
changeset
|
88 url += '?auth=digest' # specify authentication method |
8b9aa9f40fa5
moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents:
42
diff
changeset
|
89 if options.private: |
8b9aa9f40fa5
moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents:
42
diff
changeset
|
90 url += '&privacy=private' |
8b9aa9f40fa5
moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents:
42
diff
changeset
|
91 if options.secret: |
8b9aa9f40fa5
moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents:
42
diff
changeset
|
92 url += '&privacy=secret' |
8b9aa9f40fa5
moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents:
42
diff
changeset
|
93 authhandler = urllib2.HTTPDigestAuthHandler() |
8b9aa9f40fa5
moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents:
42
diff
changeset
|
94 authhandler.add_password('bitsyblog', url, user, password) |
8b9aa9f40fa5
moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents:
42
diff
changeset
|
95 opener = urllib2.build_opener(authhandler) |
8b9aa9f40fa5
moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents:
42
diff
changeset
|
96 urllib2.install_opener(opener) |
8b9aa9f40fa5
moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents:
42
diff
changeset
|
97 try: |
8b9aa9f40fa5
moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents:
42
diff
changeset
|
98 url = urllib2.urlopen(url, data=msg) |
8b9aa9f40fa5
moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents:
42
diff
changeset
|
99 print url.url # print the blog post's url |
44 | 100 except urllib2.HTTPError, e: |
101 print e | |
43
8b9aa9f40fa5
moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents:
42
diff
changeset
|
102 |
8b9aa9f40fa5
moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents:
42
diff
changeset
|
103 if __name__ == '__main__': |
8b9aa9f40fa5
moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents:
42
diff
changeset
|
104 main() |