-
Notifications
You must be signed in to change notification settings - Fork 0
/
bulkupdate.py
81 lines (54 loc) · 2.54 KB
/
bulkupdate.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
import sys
import csv
import argparse
import httplib2
import json
from oauth2client.service_account import ServiceAccountCredentials
from oauth2client.client import AccessTokenRefreshError
from apiclient.discovery import build
def upload(package, service, apk, track):
# Create an httplib2.Http object to handle our HTTP requests and authorize it
# with the Credentials. Note that the first parameter, service_account_name,
# is the Email address created for the Service account. It must be the email
# address associated with the key that was created.
credentials = ServiceAccountCredentials.from_json_keyfile_name(
service, ['https://www.googleapis.com/auth/androidpublisher'])
http_auth = credentials.authorize(http=httplib2.Http())
service = build('androidpublisher', 'v2', http=http_auth)
try:
edit_request = service.edits().insert(body={}, packageName=package)
result = edit_request.execute()
edit_id = result['id']
apk_response = service.edits().apks().upload(
editId=edit_id,
packageName=package,
media_body=apk).execute()
print('Version code %d has been uploaded for package %s' % (apk_response['versionCode'], package))
track_response = service.edits().tracks().update(
editId=edit_id,
track=track,
packageName=package,
body={u'versionCodes': [apk_response['versionCode']]}).execute()
print('Track %s is set for version code(s) %s'% (
track_response['track'], str(track_response['versionCodes'])))
commit_request = service.edits().commit(
editId=edit_id, packageName=package).execute()
print('Edit "%s" has been committed' % (commit_request['id']))
except AccessTokenRefreshError:
print ('The credentials have been revoked or expired, please re-run the '
'application to re-authorize')
def main():
parser = argparse.ArgumentParser()
parser.add_argument('-c', '--csv', help='The path to the CSV file with all the other arguments', default='bulkupdate.csv')
args = parser.parse_args()
#CSV Format : 1 Row = 1 APK Upload -- PackageName >> ServiceAccountJsonPath >> ApkPath
with open(args.csv, 'r') as csvfile:
csvreader = csv.reader(csvfile, delimiter=',')
for row in csvreader:
#You can change the 'track' parameter for these options : alpha, beta, rollout, production - as needed
#row[0] = Package Name (ie: com.android.test)
#row[1] = Path TO : ServiceAccount.json
#row[2] = Path TO : New APK to upload
upload(row[0], row[1], row[2], 'production')
if __name__ == '__main__':
main()