Forums

Articles
Create
cancel
Showing results for 
Search instead for 
Did you mean: 

Python script for BitBucket repo invitations no longer works

NVIDIA DLI June 12, 2019

This script has been unchanged for a few years, and while sometimes I get similar errors, moving files around my machine and playing with directories somehow solves. Script:

#python invite_DL.py {bitbucket username} {bitbucket password} {file with email address on each line}

import json
import urllib
import urllib.request as urllib2
import sys
import base64

url = "https://api.bitbucket.org/1.0/invitations/junbo_jake_zhao/deeplearningkit/"

username = sys.argv[1]
password = sys.argv[2]
filename = sys.argv[3]
password_mgr = urllib.request.HTTPPasswordMgrWithDefaultRealm()
password_mgr.add_password(None, url, username, password)
handler = urllib.request.HTTPBasicAuthHandler(password_mgr)
opener = urllib.request.build_opener(handler)
urllib.request.install_opener(opener)

with open(filename) as f:
for email in f:
data = urllib.parse.urlencode({"permission": "read"})
req = urllib2.Request(url + email.replace("\n",""), data.encode('ascii'))
base64string = base64.b64encode(bytes('%s:%s' % (username, password),'ascii'))
req.add_header("Authorization", "Basic %s" % base64string.decode('utf-8'))
f = urllib2.urlopen(req)
response = f.read()
print(response)
f.close()

 

When running this now I get the following. Sometimes it's 401: Unathorized error as well. Any ideas?

 

Traceback (most recent call last):
File "C:\BB_Invites\invite_DL.py", line 27, in <module>
f = urllib2.urlopen(req)
File "C:\Users\jbungo\AppData\Local\Programs\Python\Python35-32\lib\urllib\request.py", line 162, in urlopen
return opener.open(url, data, timeout)
File "C:\Users\jbungo\AppData\Local\Programs\Python\Python35-32\lib\urllib\request.py", line 471, in open
response = meth(req, response)
File "C:\Users\jbungo\AppData\Local\Programs\Python\Python35-32\lib\urllib\request.py", line 581, in http_response
'http', request, response, code, msg, hdrs)
File "C:\Users\jbungo\AppData\Local\Programs\Python\Python35-32\lib\urllib\request.py", line 509, in error
return self._call_chain(*args)
File "C:\Users\jbungo\AppData\Local\Programs\Python\Python35-32\lib\urllib\request.py", line 443, in _call_chain
result = func(*args)
File "C:\Users\jbungo\AppData\Local\Programs\Python\Python35-32\lib\urllib\request.py", line 589, in http_error_default
raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 400: Bad Request

 

1 answer

0 votes
LagomDaniel
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
June 12, 2019

More than likely you're getting hit by the gdpr related changes: https://developer.atlassian.com/cloud/bitbucket/bitbucket-api-changes-gdpr/

Try replacing the username with your account id.

NVIDIA DLI June 13, 2019

Thanks for taking a look. I tried that but get exact same error, it's not even getting to my Bitbucket login apparently. Here is the command:


C:\Users\jbungo\AppData\Local\Programs\Python\Python35-32\python C:\BB_Invites\invite_DL.py [username/user id] [password] C:\BB_Invites\BB_Emails_DL.txt


I saw some changes related to gpdr went into effect in April, but just last week this script was working fine. I bump into issues like this every so often, then move files around my machine until it works without changing the script, but that's not working this time.

I also thought I had to be logged into Bitbucket on my machine but that doesnt seem to matter right now.

Suggest an answer

Log in or Sign up to answer
TAGS
AUG Leaders

Atlassian Community Events