Skip to content

Instantly share code, notes, and snippets.

@harshavardhana
Created December 5, 2012 08:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save harshavardhana/4213645 to your computer and use it in GitHub Desktop.
Save harshavardhana/4213645 to your computer and use it in GitHub Desktop.
URL share count on Twitter
#!/usr/bin/env python
import urllib
import pycurl
import time
import sys
import json
import cStringIO
from optparse import OptionParser
parser = OptionParser(usage="%prog: [options] [URL]")
parser.add_option('-u', '--url', help="use URL please")
(options, args) = parser.parse_args()
if not options.url:
parser.print_help()
sys.exit(1)
class Response:
def __init__(self):
self.response = {}
def body_callback(self, buf):
self.response = json.loads(buf)
def grab_count(url):
count = 0
old_twitter_count = 0
twitter_cdn_url = 'http://cdn.api.twitter.com/1/urls/count.json'
params = {'url': url}
while True:
try:
t = Response()
c = pycurl.Curl()
c.setopt(c.URL, twitter_cdn_url + '?' + urllib.urlencode(params))
c.setopt(c.WRITEFUNCTION, t.body_callback)
c.perform()
c.close()
count = count + 1
new_twitter_count = t.response.get('count')
if old_twitter_count < new_twitter_count:
print "Change in total shares %d" % (int(new_twitter_count) - int(old_twitter_count))
old_twitter_count = new_twitter_count
if count > 10000:
print "Total requests completed without errors --> %d" % count
except KeyboardInterrupt:
pass
grab_count(options.url)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment