Skip to content

Instantly share code, notes, and snippets.

@zacharyvoase
Created March 6, 2013 19:51
Show Gist options
  • Save zacharyvoase/5102470 to your computer and use it in GitHub Desktop.
Save zacharyvoase/5102470 to your computer and use it in GitHub Desktop.
import sys
import subprocess
import tempfile
import urllib
text = sys.stdin.read()
chart_url_template = ('http://chart.apis.google.com/chart?'
'cht=qr&chs=300x300&chl={data}&chld=H|0')
chart_url = chart_url_template.format(data=urllib.quote(text))
with tempfile.NamedTemporaryFile(mode='w', suffix='.png') as f:
subprocess.check_call(['curl', '-L', chart_url],
stdout=f, stderr=sys.stderr)
subprocess.check_call(['qlmanage', '-p', f.name])
@Mic92
Copy link

Mic92 commented Mar 17, 2013

Heres Is my version.

#!/usr/bin/env python2
import sys, os
import subprocess
import qrencode
from tempfile import mkstemp
from PIL import Image

def open_default(path):
    if sys.platform.startswith('darwin'):
        subprocess.call(('open', path))
    elif os.name == 'nt':
        os.startfile(path)
    elif os.name == 'posix':
        subprocess.call(('xdg-open', path))

args = sys.argv[1:]
if args:
  text = "".join(args)
else:
  text = sys.stdin.read()
_, _, image = qrencode.encode_scaled(text, 500)
_, path = mkstemp(".png")
image.save(path, "PNG")
open_default(path)

It doesn't depend on the google api, but on qrencode.

$ pip install qrencode

So no internet connection is needed.
Instead of launching quicklook, it opens (hopefully) the default viewer of the underlying os.

usage:

$ echo "test" | qrcodify

or:

$ qrcodify "test"

On linux it can be used like this, to encode the clipboard as qrcode:

$ xclip -o | qrcodify

On MacOS:

$ pbpaste | qrcodify

@DaveCollinsJr
Copy link

@zacharyvoase most impressive!

@stou
Copy link

stou commented Mar 15, 2014

Nice idea.

Could not get the qrencode module to install in OS X mavericks

FWIW, I've put together this little script instead

#!/bin/bash
# Author: Rasmus Stougaard

# requrements:
#  install qrencode
#
#   brew install qrencode

tmpQrFile=/tmp/qr-tmp.png
qrencode -o $tmpQrFile && qlmanage -p $tmpQrFile && rm $tmpQrFile

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