drrobotnik
drrobotnik

Reputation: 749

Python request JSON with formatting

I'm trying to make a bitbucket request from python to return a list of my repos. It's responding, but the formatting is including "\n" characters, I assume my encoding is wrong, but don't know how to fix it.

How do I encode my response to be formatted JSON.

theurl = 'https://api.bitbucket.org/1.0/user/repositories/';
username = 'xxxxx';
password = 'xxxxx';

passman = urllib2.HTTPPasswordMgrWithDefaultRealm();
passman.add_password(None, theurl, username, password);

authhandler = urllib2.HTTPBasicAuthHandler(passman);
opener = urllib2.build_opener(authhandler);
urllib2.install_opener(opener);
pagehandle = urllib2.urlopen(theurl);
output = pagehandle.decode('utf-8');
responseH = output.read();

Upvotes: 1

Views: 246

Answers (1)

Pratik Mandrekar
Pratik Mandrekar

Reputation: 9568

Why don't you try using python-bitbucket? Example below

from api import API
import datetime

    api = API("username", "**password**")
    repos = api.get_repositories()

    for repo in repos:
      print "Name: %s" % repo.name
      print "Owner: %s" % repo.owner
      print "Website: %s" % repo.website
      print "Description: %s" % repo.description
      print "Created on: %s" % datetime.datetime.strftime(repo.created_on, "%c")
      print "Language: %s" % repo.language
      print "SCM: %s" % repo.scm
      for issue in repo.get_issues():
        # Yes, this works too!
        print "Issue title: %s" % issue.title
        print "Issue priority: %s" % issue.priority
        print "Issue content:\n%s\n\n" % issue.content
      for change in repo.get_changesets(limit=5):
        print "Revision/Node: %d:%s" % (change.revision, change.node)
        # Since change.timestamp is a datetime object, we can use formatting on it.
        print "Timestamp: %s" % datetime.datetime.strftime(change.timestamp, "%c")
        print "Commit message:\n%s" % change.message
        print "Affected files: %s" % len(change.files)
        for f in change.files:
          print f.filename
        print "\n"

Upvotes: 2

Related Questions