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()
@msabramo
Copy link
Author

msabramo commented Jan 4, 2011

@maraca
Copy link

maraca commented Mar 15, 2011

Hi Marc,

I've taken the liberty to add buildout to your code to make it accesible to more people without having to install mechanize.
I've also added an option for syntax highlight when uploading.
You can find the code here: https://github.com/maraca/gisty

Thanks a lot for your very useful snippet !

@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