From d984a92dc70e8567b530be5d2507a67bff519cb1 Mon Sep 17 00:00:00 2001 From: Domenico Iezzi Date: Thu, 1 Feb 2018 11:53:16 +0100 Subject: [PATCH] Added log function This function is needed by the purchase API to insert app into user's library. Without this, new apps won't be downloaded --- gpapi/googleplay.py | 21 +++++++++++++++++++++ obb_download_test.py | 2 +- test.py | 2 +- 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/gpapi/googleplay.py b/gpapi/googleplay.py index 3cba6dc..5bb8e53 100644 --- a/gpapi/googleplay.py +++ b/gpapi/googleplay.py @@ -9,6 +9,7 @@ from Crypto.Cipher import PKCS1_OAEP import requests from base64 import b64decode, urlsafe_b64encode from itertools import chain +from datetime import datetime from . import googleplay_pb2, config, utils @@ -43,6 +44,7 @@ class GooglePlayAPI(object): SEARCHURL = FDFE + "search" CHECKINURL = BASE + "checkin" AUTHURL = BASE + "auth" + LOGURL = FDFE + "log" proxies_config = None @@ -613,6 +615,7 @@ class GooglePlayAPI(object): 'doc': packageName, 'vc': str(versionCode)} url = self.FDFE + path + self.log(packageName) response = requests.post(url, headers=headers, params=params, verify=ssl_verify, timeout=60, @@ -626,6 +629,24 @@ class GooglePlayAPI(object): return self.delivery(packageName, versionCode, offerType, dlToken, expansion_files=expansion_files) + def log(self, docid): + log_request = googleplay_pb2.LogRequest() + log_request.downloadConfirmationQuery = "confirmFreeDownload?doc=" + docid + timestamp = int(datetime.now().timestamp()) + log_request.timestamp = timestamp + + string_request = log_request.SerializeToString() + response = requests.post(self.LOGURL, + data=string_request, + headers=self.getDefaultHeaders(), + verify=ssl_verify, + timeout=60, + proxies=self.proxies_config) + response = googleplay_pb2.ResponseWrapper.FromString(response.content) + if response.commands.displayErrorMessage != "": + raise RequestError(resObj.commands.displayErrorMessage) + + @staticmethod def getDevicesCodenames(): return config.getDevicesCodenames() diff --git a/obb_download_test.py b/obb_download_test.py index a1a9ecb..c078f93 100644 --- a/obb_download_test.py +++ b/obb_download_test.py @@ -17,7 +17,7 @@ server.login(args.email, args.password, None, None) docid = 'com.pixel.gun3d' print('\nDownloading apk\n') -download = server.delivery(docid, versionCode=None, expansion_files=True) +download = server.download(docid, expansion_files=True) with open(download['docId'] + '.apk', 'wb') as first: for chunk in download.get('file').get('data'): first.write(chunk) diff --git a/test.py b/test.py index 109cadd..35f85be 100644 --- a/test.py +++ b/test.py @@ -37,7 +37,7 @@ for a in apps: docid = apps[0]['docId'] print('\nTelegram docid is: %s\n' % docid) print('\nAttempting to download %s\n' % docid) -fl = server.delivery(docid, versionCode=None) +fl = server.download(docid) with open(docid + '.apk', 'wb') as apk_file: for chunk in fl.get('file').get('data'): apk_file.write(chunk)