Skip to content

Instantly share code, notes, and snippets.

@msabramo
Created January 3, 2011 06:42
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save msabramo/763188 to your computer and use it in GitHub Desktop.
Save msabramo/763188 to your computer and use it in GitHub Desktop.
Take input from stdin and create a new public gist with it
#!/usr/bin/env python
import getpass, mechanize, optparse, os.path, sys
parser = optparse.OptionParser()
parser.add_option('--login')
parser.add_option('--password')
parser.add_option('--filename')
parser.add_option('--description')
parser.add_option('--private', action='store_true', default=False)
(options, args) = parser.parse_args()
br = mechanize.Browser()
if options.login:
if not options.password:
options.password = getpass.getpass('Password for %s@github: ' % options.login)
br.open('https://gist.github.com/login')
br.select_form(nr=1)
br.form.find_control('login').value = options.login
br.form.find_control('password').value = options.password
result = br.submit()
br.open('https://gist.github.com')
br.select_form(nr=1)
br.form.find_control('file_contents[gistfile1]').value = sys.stdin.read()
if options.filename:
br.form.find_control('file_name[gistfile1]').value = options.filename
if options.description:
br.form.find_control('description').value = options.description
if options.private:
br.submit(nr=0)
else:
br.submit(nr=1)
print br.geturl()
if os.path.exists('/usr/bin/pbcopy'):
retval = os.system('echo %r | /usr/bin/pbcopy' % br.geturl())
if retval == 0:
print 'Copied gist url (%s) to the clipboard.' % br.geturl()
@dejl
Copy link

dejl commented Mar 3, 2013

MacBookPro:bin daniel$ gist
Traceback (most recent call last):
File "./gist", line 25, in
br.open('https://gist.github.com')
File "/usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mechanize/_mechanize.py", line 203, in open
return self._mech_open(url, data, timeout=timeout)
File "/usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/mechanize/_mechanize.py", line 255, in _mech_open
raise response
mechanize._response.httperror_seek_wrapper: HTTP Error 403: request disallowed by robots.txt

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment