mirror of
https://github.com/FliegendeWurst/googleplay-api.git
synced 2024-10-18 06:50:45 +00:00
123 lines
3.2 KiB
Python
123 lines
3.2 KiB
Python
from gpapi.googleplay import GooglePlayAPI, RequestError
|
|
|
|
import sys
|
|
import argparse
|
|
|
|
ap = argparse.ArgumentParser(description='Test download of expansion files')
|
|
ap.add_argument('-e', '--email', dest='email', help='google username')
|
|
ap.add_argument('-p', '--password', dest='password', help='google password')
|
|
|
|
args = ap.parse_args()
|
|
|
|
server = GooglePlayAPI(debug=True)
|
|
|
|
# LOGIN
|
|
|
|
print('\nLogging in with email and password\n')
|
|
server.login(args.email, args.password, None, None)
|
|
gsfId = server.gsfId
|
|
authSubToken = server.authSubToken
|
|
|
|
print('\nNow trying secondary login with ac2dm token and gsfId saved\n')
|
|
server = GooglePlayAPI(debug=True)
|
|
server.login(None, None, gsfId, authSubToken)
|
|
|
|
# SEARCH
|
|
|
|
apps = server.search('telegram', 34, None)
|
|
|
|
print('nb_result: 34')
|
|
print('number of results: %d' % len(apps))
|
|
|
|
print('\nFound those apps:\n')
|
|
for a in apps:
|
|
print(a['docId'])
|
|
|
|
# DOWNLOAD
|
|
docid = apps[0]['docId']
|
|
print('\nTelegram docid is: %s\n' % docid)
|
|
print('\nAttempting to download %s\n' % docid)
|
|
fl = server.download(docid, None, progress_bar=True)
|
|
with open(docid + '.apk', 'wb') as f:
|
|
f.write(fl['data'])
|
|
print('\nDownload successful\n')
|
|
|
|
# DOWNLOAD APP NOT PURCHASED
|
|
# Attempting to download Nova Launcher Prime
|
|
# it should throw an error 'App Not Purchased'
|
|
|
|
print('\nAttempting to download "com.teslacoilsw.launcher.prime"\n')
|
|
errorThrown = False
|
|
try:
|
|
app = server.search('nova launcher prime', 3, None)
|
|
app = filter(lambda x: x['docId'] == 'com.teslacoilsw.launcher.prime', app)
|
|
app = list(app)[0]
|
|
fl = server.delivery(app['docId'], app['versionCode'], progress_bar=True)
|
|
with open(docid + '.apk', 'wb') as f:
|
|
f.write(fl['data'])
|
|
print('\nDownload successful\n')
|
|
except RequestError as e:
|
|
errorThrown = True
|
|
print(e)
|
|
|
|
if not errorThrown:
|
|
print('Download of previous app should have failed')
|
|
sys.exit(1)
|
|
|
|
|
|
# BULK DETAILS
|
|
|
|
testApps = ['org.mozilla.focus', 'com.non.existing.app']
|
|
bulk = server.bulkDetails(testApps)
|
|
|
|
print('\nTesting behaviour for non-existing apps\n')
|
|
if bulk[1] is not None:
|
|
print('bulkDetails should return None for non-existing apps')
|
|
sys.exit(1)
|
|
|
|
print('\nResult from bulkDetails for %s\n' % testApps[0])
|
|
print(bulk[0])
|
|
|
|
# DETAILS
|
|
print('\nGetting details for %s\n' % testApps[0])
|
|
details = server.details(testApps[0])
|
|
print(details)
|
|
|
|
# USER PROFILE
|
|
print('\nGettung user profile information\n')
|
|
user = server.userProfile()
|
|
if 'Noto Sans' not in user['title']:
|
|
raise Exception("Wrong userProfile behaviour")
|
|
sys.exit(1)
|
|
|
|
# REVIEWS
|
|
print('\nGetting reviews for %s\n' % testApps[0])
|
|
revs = server.reviews(testApps[0])
|
|
for r in revs:
|
|
print(r['comment'])
|
|
|
|
# BROWSE
|
|
|
|
print('\nBrowse play store categories\n')
|
|
browse = server.browse()
|
|
for b in browse:
|
|
print(b['name'])
|
|
|
|
print('\nBrowsing the %s category\n' % browse[0]['catId'])
|
|
browseCat = server.browse(browse[0]['catId'])
|
|
for b in browseCat:
|
|
print('%s subcategory with %d apps' % (b['title'], len(b['apps'])))
|
|
|
|
# LIST
|
|
|
|
cat = 'MUSIC_AND_AUDIO'
|
|
print('\nList %s subcategories\n' % cat)
|
|
catList = server.list(cat)
|
|
for c in catList:
|
|
print(c)
|
|
|
|
print('\nList %s apps for %s category\n' % (catList[0], cat))
|
|
appList = server.list(cat, catList[0])
|
|
for app in appList:
|
|
print(app['docId'])
|