annotate bitsyblog/blogme.py @ 133:ce478807848e default tip

py3
author Jeff Hammel <k0scist@gmail.com>
date Mon, 28 Dec 2020 21:18:19 +0000
parents c29d58e79fc6
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
44
0e7f56709c90 cleanup of blogme, not yet finished
k0s <k0scist@gmail.com>
parents: 43
diff changeset
2 """
0e7f56709c90 cleanup of blogme, not yet finished
k0s <k0scist@gmail.com>
parents: 43
diff changeset
3 command line blogger
0e7f56709c90 cleanup of blogme, not yet finished
k0s <k0scist@gmail.com>
parents: 43
diff changeset
4 """
0e7f56709c90 cleanup of blogme, not yet finished
k0s <k0scist@gmail.com>
parents: 43
diff changeset
5
92
bc1753ff9b8b i hate software
Jeff Hammel <jhammel@mozilla.com>
parents: 77
diff changeset
6 import datetime
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
93
5c04cf601aba fucking piece of shit
Jeff Hammel <jhammel@mozilla.com>
parents: 92
diff changeset
9 import socket
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
10 import subprocess
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
11 import sys
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
12 import tempfile
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
13 import urllib2
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
14
44
0e7f56709c90 cleanup of blogme, not yet finished
k0s <k0scist@gmail.com>
parents: 43
diff changeset
15 from ConfigParser import ConfigParser
45
c228832db770 fix blogme
k0s <k0scist@gmail.com>
parents: 44
diff changeset
16 from utils import datestamp
44
0e7f56709c90 cleanup of blogme, not yet finished
k0s <k0scist@gmail.com>
parents: 43
diff changeset
17
43
8b9aa9f40fa5 moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents: 42
diff changeset
18 # global variable
44
0e7f56709c90 cleanup of blogme, not yet finished
k0s <k0scist@gmail.com>
parents: 43
diff changeset
19 CONFIG = '.blogme'
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
20
43
8b9aa9f40fa5 moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents: 42
diff changeset
21 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
22 """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
23 if not editor:
8b9aa9f40fa5 moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents: 42
diff changeset
24 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
25 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
26 cmdline = editor.split()
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
27 cmdline.append(tmpfile)
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
28 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
29 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
30 os.remove(tmpfile)
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
31 return buffer
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
32
96
c29d58e79fc6 better command line handling
Jeff Hammel <jhammel@mozilla.com>
parents: 93
diff changeset
33 def save(msg):
c29d58e79fc6 better command line handling
Jeff Hammel <jhammel@mozilla.com>
parents: 93
diff changeset
34 """save msg if somethingbadhappen"""
c29d58e79fc6 better command line handling
Jeff Hammel <jhammel@mozilla.com>
parents: 93
diff changeset
35 filename = 'blog-%s.txt' % datetime.datetime.now().strftime("%Y%m%d")
c29d58e79fc6 better command line handling
Jeff Hammel <jhammel@mozilla.com>
parents: 93
diff changeset
36 with file(filename, 'w') as f:
c29d58e79fc6 better command line handling
Jeff Hammel <jhammel@mozilla.com>
parents: 93
diff changeset
37 f.write(msg)
c29d58e79fc6 better command line handling
Jeff Hammel <jhammel@mozilla.com>
parents: 93
diff changeset
38 print filename
c29d58e79fc6 better command line handling
Jeff Hammel <jhammel@mozilla.com>
parents: 93
diff changeset
39 print msg
c29d58e79fc6 better command line handling
Jeff Hammel <jhammel@mozilla.com>
parents: 93
diff changeset
40
43
8b9aa9f40fa5 moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents: 42
diff changeset
41 def main(args=sys.argv[1:]):
8b9aa9f40fa5 moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents: 42
diff changeset
42
44
0e7f56709c90 cleanup of blogme, not yet finished
k0s <k0scist@gmail.com>
parents: 43
diff changeset
43 # parse command line options
67
894a2e76bd40 add documentation to the OptionParser
Jeff Hammel <jhammel@mozilla.com>
parents: 65
diff changeset
44 parser = optparse.OptionParser(description=__doc__)
894a2e76bd40 add documentation to the OptionParser
Jeff Hammel <jhammel@mozilla.com>
parents: 65
diff changeset
45 parser.add_option('-c', '--config',
894a2e76bd40 add documentation to the OptionParser
Jeff Hammel <jhammel@mozilla.com>
parents: 65
diff changeset
46 help='configuration file to use [Default: ~/.blogme]')
894a2e76bd40 add documentation to the OptionParser
Jeff Hammel <jhammel@mozilla.com>
parents: 65
diff changeset
47 parser.add_option('-f', '--file',
894a2e76bd40 add documentation to the OptionParser
Jeff Hammel <jhammel@mozilla.com>
parents: 65
diff changeset
48 help='path to blog entries for the user; does not touch net')
894a2e76bd40 add documentation to the OptionParser
Jeff Hammel <jhammel@mozilla.com>
parents: 65
diff changeset
49 parser.add_option('-H', '--host',
894a2e76bd40 add documentation to the OptionParser
Jeff Hammel <jhammel@mozilla.com>
parents: 65
diff changeset
50 help='URL of bitsyblog instance')
43
8b9aa9f40fa5 moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents: 42
diff changeset
51 parser.add_option('-u', '--user')
8b9aa9f40fa5 moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents: 42
diff changeset
52 parser.add_option('-p', '--password')
67
894a2e76bd40 add documentation to the OptionParser
Jeff Hammel <jhammel@mozilla.com>
parents: 65
diff changeset
53 parser.add_option('--private', action='store_true', default=False,
894a2e76bd40 add documentation to the OptionParser
Jeff Hammel <jhammel@mozilla.com>
parents: 65
diff changeset
54 help='denote this blog entry as private')
894a2e76bd40 add documentation to the OptionParser
Jeff Hammel <jhammel@mozilla.com>
parents: 65
diff changeset
55 parser.add_option('--secret', action='store_true', default=False,
894a2e76bd40 add documentation to the OptionParser
Jeff Hammel <jhammel@mozilla.com>
parents: 65
diff changeset
56 help='denote this blog entry as secret')
43
8b9aa9f40fa5 moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents: 42
diff changeset
57 options, args = parser.parse_args()
96
c29d58e79fc6 better command line handling
Jeff Hammel <jhammel@mozilla.com>
parents: 93
diff changeset
58
43
8b9aa9f40fa5 moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents: 42
diff changeset
59 # sanity check
8b9aa9f40fa5 moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents: 42
diff changeset
60 if options.private and options.secret:
8b9aa9f40fa5 moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents: 42
diff changeset
61 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
62 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
63
45
c228832db770 fix blogme
k0s <k0scist@gmail.com>
parents: 44
diff changeset
64 if options.file:
c228832db770 fix blogme
k0s <k0scist@gmail.com>
parents: 44
diff changeset
65 # get the blog
c228832db770 fix blogme
k0s <k0scist@gmail.com>
parents: 44
diff changeset
66 if args:
c228832db770 fix blogme
k0s <k0scist@gmail.com>
parents: 44
diff changeset
67 msg = ' '.join(args)
c228832db770 fix blogme
k0s <k0scist@gmail.com>
parents: 44
diff changeset
68 else:
c228832db770 fix blogme
k0s <k0scist@gmail.com>
parents: 44
diff changeset
69 msg = tmpbuffer()
c228832db770 fix blogme
k0s <k0scist@gmail.com>
parents: 44
diff changeset
70 options.file = os.path.join(options.file, 'entries')
c228832db770 fix blogme
k0s <k0scist@gmail.com>
parents: 44
diff changeset
71 for opt in 'private', 'secret':
c228832db770 fix blogme
k0s <k0scist@gmail.com>
parents: 44
diff changeset
72 if getattr(options, opt):
c228832db770 fix blogme
k0s <k0scist@gmail.com>
parents: 44
diff changeset
73 options.file = os.path.join(options.file, opt)
c228832db770 fix blogme
k0s <k0scist@gmail.com>
parents: 44
diff changeset
74 break
c228832db770 fix blogme
k0s <k0scist@gmail.com>
parents: 44
diff changeset
75 else:
c228832db770 fix blogme
k0s <k0scist@gmail.com>
parents: 44
diff changeset
76 options.file = os.path.join(options.file, 'public')
c228832db770 fix blogme
k0s <k0scist@gmail.com>
parents: 44
diff changeset
77 options.file = os.path.join(options.file, datestamp())
c228832db770 fix blogme
k0s <k0scist@gmail.com>
parents: 44
diff changeset
78 f = file(options.file, 'w')
c228832db770 fix blogme
k0s <k0scist@gmail.com>
parents: 44
diff changeset
79 print >> f, msg
c228832db770 fix blogme
k0s <k0scist@gmail.com>
parents: 44
diff changeset
80 f.close()
77
3da163e44b8a print the absolute path to the blog file
Jeff Hammel <jhammel@mozilla.com>
parents: 67
diff changeset
81 print os.path.abspath(options.file)
45
c228832db770 fix blogme
k0s <k0scist@gmail.com>
parents: 44
diff changeset
82 sys.exit(0)
c228832db770 fix blogme
k0s <k0scist@gmail.com>
parents: 44
diff changeset
83
44
0e7f56709c90 cleanup of blogme, not yet finished
k0s <k0scist@gmail.com>
parents: 43
diff changeset
84 # parse dotfile config
0e7f56709c90 cleanup of blogme, not yet finished
k0s <k0scist@gmail.com>
parents: 43
diff changeset
85 config = ConfigParser()
45
c228832db770 fix blogme
k0s <k0scist@gmail.com>
parents: 44
diff changeset
86 _config = {} # config to write out
44
0e7f56709c90 cleanup of blogme, not yet finished
k0s <k0scist@gmail.com>
parents: 43
diff changeset
87 if not options.config:
0e7f56709c90 cleanup of blogme, not yet finished
k0s <k0scist@gmail.com>
parents: 43
diff changeset
88 home = os.environ['HOME']
0e7f56709c90 cleanup of blogme, not yet finished
k0s <k0scist@gmail.com>
parents: 43
diff changeset
89 options.config = os.path.join(home, CONFIG)
0e7f56709c90 cleanup of blogme, not yet finished
k0s <k0scist@gmail.com>
parents: 43
diff changeset
90 if os.path.exists(options.config):
0e7f56709c90 cleanup of blogme, not yet finished
k0s <k0scist@gmail.com>
parents: 43
diff changeset
91 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
92
45
c228832db770 fix blogme
k0s <k0scist@gmail.com>
parents: 44
diff changeset
93 # get default host, if available
c228832db770 fix blogme
k0s <k0scist@gmail.com>
parents: 44
diff changeset
94 if options.host:
46
66bfcceea3b4 improvements to blogme....it works except for a mysterious conncection reset by peer error"
k0s <k0scist@gmail.com>
parents: 45
diff changeset
95 if not config.has_option('DEFAULTS', 'host'):
66bfcceea3b4 improvements to blogme....it works except for a mysterious conncection reset by peer error"
k0s <k0scist@gmail.com>
parents: 45
diff changeset
96 _config['default'] = options.host
45
c228832db770 fix blogme
k0s <k0scist@gmail.com>
parents: 44
diff changeset
97 else:
c228832db770 fix blogme
k0s <k0scist@gmail.com>
parents: 44
diff changeset
98 if config.has_option('DEFAULTS', 'host'):
c228832db770 fix blogme
k0s <k0scist@gmail.com>
parents: 44
diff changeset
99 options.host = config.get('DEFAULTS', 'host')
c228832db770 fix blogme
k0s <k0scist@gmail.com>
parents: 44
diff changeset
100 else:
c228832db770 fix blogme
k0s <k0scist@gmail.com>
parents: 44
diff changeset
101 print "Enter URL of host: ",
46
66bfcceea3b4 improvements to blogme....it works except for a mysterious conncection reset by peer error"
k0s <k0scist@gmail.com>
parents: 45
diff changeset
102 options.host = raw_input()
66bfcceea3b4 improvements to blogme....it works except for a mysterious conncection reset by peer error"
k0s <k0scist@gmail.com>
parents: 45
diff changeset
103 _config['default'] = options.host
45
c228832db770 fix blogme
k0s <k0scist@gmail.com>
parents: 44
diff changeset
104
43
8b9aa9f40fa5 moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents: 42
diff changeset
105 # determine user name and password
8b9aa9f40fa5 moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents: 42
diff changeset
106 fields = [ 'user', 'password' ]
8b9aa9f40fa5 moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents: 42
diff changeset
107 for field in fields:
96
c29d58e79fc6 better command line handling
Jeff Hammel <jhammel@mozilla.com>
parents: 93
diff changeset
108 has_option = config.has_option(options.host, field)
46
66bfcceea3b4 improvements to blogme....it works except for a mysterious conncection reset by peer error"
k0s <k0scist@gmail.com>
parents: 45
diff changeset
109
66bfcceea3b4 improvements to blogme....it works except for a mysterious conncection reset by peer error"
k0s <k0scist@gmail.com>
parents: 45
diff changeset
110 if getattr(options, field):
66bfcceea3b4 improvements to blogme....it works except for a mysterious conncection reset by peer error"
k0s <k0scist@gmail.com>
parents: 45
diff changeset
111 if (not has_option) or (config.get(options.host, field) != getattr(options, field)):
45
c228832db770 fix blogme
k0s <k0scist@gmail.com>
parents: 44
diff changeset
112 _config[field] = getattr(options, field)
c228832db770 fix blogme
k0s <k0scist@gmail.com>
parents: 44
diff changeset
113 else:
46
66bfcceea3b4 improvements to blogme....it works except for a mysterious conncection reset by peer error"
k0s <k0scist@gmail.com>
parents: 45
diff changeset
114 if has_option:
66bfcceea3b4 improvements to blogme....it works except for a mysterious conncection reset by peer error"
k0s <k0scist@gmail.com>
parents: 45
diff changeset
115 setattr(options, field, config.get(options.host, field))
66bfcceea3b4 improvements to blogme....it works except for a mysterious conncection reset by peer error"
k0s <k0scist@gmail.com>
parents: 45
diff changeset
116 else:
96
c29d58e79fc6 better command line handling
Jeff Hammel <jhammel@mozilla.com>
parents: 93
diff changeset
117 print "%s: " % field,
46
66bfcceea3b4 improvements to blogme....it works except for a mysterious conncection reset by peer error"
k0s <k0scist@gmail.com>
parents: 45
diff changeset
118 setattr(options, field, raw_input())
66bfcceea3b4 improvements to blogme....it works except for a mysterious conncection reset by peer error"
k0s <k0scist@gmail.com>
parents: 45
diff changeset
119 _config[field] = getattr(options, field)
43
8b9aa9f40fa5 moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents: 42
diff changeset
120
8b9aa9f40fa5 moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents: 42
diff changeset
121 # write the dotfile if it doesn't exist
45
c228832db770 fix blogme
k0s <k0scist@gmail.com>
parents: 44
diff changeset
122 if _config:
c228832db770 fix blogme
k0s <k0scist@gmail.com>
parents: 44
diff changeset
123 if 'default' in _config:
c228832db770 fix blogme
k0s <k0scist@gmail.com>
parents: 44
diff changeset
124 if not config.has_section('DEFAULTS'):
c228832db770 fix blogme
k0s <k0scist@gmail.com>
parents: 44
diff changeset
125 config.add_section('DEFAULTS')
c228832db770 fix blogme
k0s <k0scist@gmail.com>
parents: 44
diff changeset
126 config.set('DEFAULTS', 'host', options.host)
c228832db770 fix blogme
k0s <k0scist@gmail.com>
parents: 44
diff changeset
127 if not config.has_section(options.host):
c228832db770 fix blogme
k0s <k0scist@gmail.com>
parents: 44
diff changeset
128 config.add_section(options.host)
c228832db770 fix blogme
k0s <k0scist@gmail.com>
parents: 44
diff changeset
129 for field in fields:
c228832db770 fix blogme
k0s <k0scist@gmail.com>
parents: 44
diff changeset
130 if not config.has_option(options.host, field):
c228832db770 fix blogme
k0s <k0scist@gmail.com>
parents: 44
diff changeset
131 config.set(options.host, field, getattr(options, field))
46
66bfcceea3b4 improvements to blogme....it works except for a mysterious conncection reset by peer error"
k0s <k0scist@gmail.com>
parents: 45
diff changeset
132 config.write(file(options.config, 'w'))
43
8b9aa9f40fa5 moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents: 42
diff changeset
133
8b9aa9f40fa5 moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents: 42
diff changeset
134 # get the blog
8b9aa9f40fa5 moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents: 42
diff changeset
135 if args:
8b9aa9f40fa5 moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents: 42
diff changeset
136 msg = ' '.join(args)
8b9aa9f40fa5 moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents: 42
diff changeset
137 else:
8b9aa9f40fa5 moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents: 42
diff changeset
138 msg = tmpbuffer()
0
e3823be6a423 initial commit of bitsyblog, from https://svn.openplans.org/svn/standalone/bitsyblog/trunk/
k0s <k0scist@gmail.com>
parents:
diff changeset
139
43
8b9aa9f40fa5 moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents: 42
diff changeset
140 # open the url
44
0e7f56709c90 cleanup of blogme, not yet finished
k0s <k0scist@gmail.com>
parents: 43
diff changeset
141 url = options.host
43
8b9aa9f40fa5 moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents: 42
diff changeset
142 url += '?auth=digest' # specify authentication method
8b9aa9f40fa5 moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents: 42
diff changeset
143 if options.private:
8b9aa9f40fa5 moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents: 42
diff changeset
144 url += '&privacy=private'
8b9aa9f40fa5 moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents: 42
diff changeset
145 if options.secret:
8b9aa9f40fa5 moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents: 42
diff changeset
146 url += '&privacy=secret'
8b9aa9f40fa5 moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents: 42
diff changeset
147 authhandler = urllib2.HTTPDigestAuthHandler()
45
c228832db770 fix blogme
k0s <k0scist@gmail.com>
parents: 44
diff changeset
148 authhandler.add_password('bitsyblog', url, options.user, options.password)
43
8b9aa9f40fa5 moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents: 42
diff changeset
149 opener = urllib2.build_opener(authhandler)
8b9aa9f40fa5 moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents: 42
diff changeset
150 urllib2.install_opener(opener)
61
04866e5abb5a try a few times before giving up
k0s <k0scist@gmail.com>
parents: 46
diff changeset
151 attempts = 5
04866e5abb5a try a few times before giving up
k0s <k0scist@gmail.com>
parents: 46
diff changeset
152 for i in range(attempts):
04866e5abb5a try a few times before giving up
k0s <k0scist@gmail.com>
parents: 46
diff changeset
153 try:
04866e5abb5a try a few times before giving up
k0s <k0scist@gmail.com>
parents: 46
diff changeset
154 connection = urllib2.urlopen(url, data=msg)
04866e5abb5a try a few times before giving up
k0s <k0scist@gmail.com>
parents: 46
diff changeset
155 print connection.url # print the blog post's url
04866e5abb5a try a few times before giving up
k0s <k0scist@gmail.com>
parents: 46
diff changeset
156 break
96
c29d58e79fc6 better command line handling
Jeff Hammel <jhammel@mozilla.com>
parents: 93
diff changeset
157 except urllib2.HTTPError, e:
c29d58e79fc6 better command line handling
Jeff Hammel <jhammel@mozilla.com>
parents: 93
diff changeset
158 if (e.code == 404) and (options.secret or options.private):
c29d58e79fc6 better command line handling
Jeff Hammel <jhammel@mozilla.com>
parents: 93
diff changeset
159 # we are still anonymous so we can't see our own post
c29d58e79fc6 better command line handling
Jeff Hammel <jhammel@mozilla.com>
parents: 93
diff changeset
160 break
c29d58e79fc6 better command line handling
Jeff Hammel <jhammel@mozilla.com>
parents: 93
diff changeset
161 continue
c29d58e79fc6 better command line handling
Jeff Hammel <jhammel@mozilla.com>
parents: 93
diff changeset
162 except (urllib2.URLError, socket.error), e:
65
4e41e1084e56 better exception handling, i hope; i hate lost messages
Jeff Hammel <jhammel@mozilla.com>
parents: 61
diff changeset
163 continue
92
bc1753ff9b8b i hate software
Jeff Hammel <jhammel@mozilla.com>
parents: 77
diff changeset
164 except:
bc1753ff9b8b i hate software
Jeff Hammel <jhammel@mozilla.com>
parents: 77
diff changeset
165 print >> sys.stderr, "An error has occured:"
bc1753ff9b8b i hate software
Jeff Hammel <jhammel@mozilla.com>
parents: 77
diff changeset
166 print >> sys.stderr, sys.exc_info() # XXX pretty crappy
96
c29d58e79fc6 better command line handling
Jeff Hammel <jhammel@mozilla.com>
parents: 93
diff changeset
167 save(msg)
92
bc1753ff9b8b i hate software
Jeff Hammel <jhammel@mozilla.com>
parents: 77
diff changeset
168 break
65
4e41e1084e56 better exception handling, i hope; i hate lost messages
Jeff Hammel <jhammel@mozilla.com>
parents: 61
diff changeset
169 else:
4e41e1084e56 better exception handling, i hope; i hate lost messages
Jeff Hammel <jhammel@mozilla.com>
parents: 61
diff changeset
170 print >> sys.stderr, e
96
c29d58e79fc6 better command line handling
Jeff Hammel <jhammel@mozilla.com>
parents: 93
diff changeset
171 save(msg)
43
8b9aa9f40fa5 moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents: 42
diff changeset
172
8b9aa9f40fa5 moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents: 42
diff changeset
173 if __name__ == '__main__':
8b9aa9f40fa5 moving most of blogme to its own function
k0s <k0scist@gmail.com>
parents: 42
diff changeset
174 main()