2017-09-21 09:19:48 +00:00
|
|
|
from . import googleplay_pb2
|
2017-09-15 20:11:44 +00:00
|
|
|
import time
|
2017-09-16 17:12:06 +00:00
|
|
|
import os
|
|
|
|
import configparser
|
2017-09-15 20:11:44 +00:00
|
|
|
|
2017-08-27 15:32:05 +00:00
|
|
|
# separator used by search.py, categories.py, ...
|
|
|
|
SEPARATOR = ";"
|
|
|
|
|
|
|
|
LANG = "en_US"
|
2017-09-08 14:26:37 +00:00
|
|
|
GOOGLE_PUBKEY = "AAAAgMom/1a/v0lblO2Ubrt60J2gcuXSljGFQXgcyZWveWLEwo6prwgi3iJIZdodyhKZQrNWp5nKJ3srRXcUW+F1BD3baEVGcmEgqaLZUNBjm057pKRI16kB0YppeGx5qIQ5QjKzsR8ETQbKLNWgRY0QRNVz34kMJR3P/LgHax/6rmf5AAAAAwEAAQ=="
|
2017-08-27 15:32:05 +00:00
|
|
|
|
2017-09-18 14:06:57 +00:00
|
|
|
# parse phone config from the file 'device.properties'.
|
|
|
|
# if you want to add another phone, just create another section in
|
|
|
|
# the file. Some configurations for common phones can be found here:
|
|
|
|
# https://github.com/yeriomin/play-store-api/tree/master/src/main/resources
|
2017-09-16 17:12:06 +00:00
|
|
|
config = configparser.ConfigParser()
|
|
|
|
filepath = os.path.join( os.path.dirname( os.path.realpath(__file__) ), 'device.properties')
|
|
|
|
config.read(filepath)
|
|
|
|
device = {}
|
|
|
|
for (key, value) in config.items('angler'):
|
|
|
|
device[key] = value
|
2017-09-15 20:11:44 +00:00
|
|
|
|
2017-09-16 17:12:06 +00:00
|
|
|
def getDeviceConfig():
|
2017-09-18 14:06:57 +00:00
|
|
|
libList = device['sharedlibraries'].split(",")
|
|
|
|
featureList = device['features'].split(",")
|
|
|
|
localeList = device['locales'].split(",")
|
|
|
|
glList = device['gl.extensions'].split(",")
|
|
|
|
platforms = device['platforms'].split(",")
|
|
|
|
|
2017-09-16 17:12:06 +00:00
|
|
|
deviceConfig = googleplay_pb2.DeviceConfigurationProto()
|
|
|
|
deviceConfig.touchScreen = int(device['touchscreen'])
|
|
|
|
deviceConfig.keyboard = int(device['keyboard'])
|
|
|
|
deviceConfig.navigation = int(device['navigation'])
|
|
|
|
deviceConfig.screenLayout = int(device['screenlayout'])
|
|
|
|
deviceConfig.hasHardKeyboard = False if device['hashardkeyboard'] == 'false' else True
|
|
|
|
deviceConfig.hasFiveWayNavigation = False if device['hasfivewaynavigation'] == 'false' else True
|
|
|
|
deviceConfig.screenDensity = int(device['screen.density'])
|
|
|
|
deviceConfig.screenWidth = int(device['screen.width'])
|
|
|
|
deviceConfig.screenHeight = int(device['screen.height'])
|
|
|
|
deviceConfig.glEsVersion = int(device['gl.version'])
|
|
|
|
for x in platforms:
|
|
|
|
deviceConfig.nativePlatform.append(x)
|
|
|
|
for x in libList:
|
|
|
|
deviceConfig.systemSharedLibrary.append(x)
|
|
|
|
for x in featureList:
|
|
|
|
deviceConfig.systemAvailableFeature.append(x)
|
|
|
|
for x in localeList:
|
|
|
|
deviceConfig.systemSupportedLocale.append(x)
|
|
|
|
for x in glList:
|
|
|
|
deviceConfig.glExtension.append(x)
|
|
|
|
return deviceConfig
|
2017-09-15 20:11:44 +00:00
|
|
|
|
2017-09-16 17:12:06 +00:00
|
|
|
def getAndroidBuild():
|
|
|
|
androidBuild = googleplay_pb2.AndroidBuildProto()
|
|
|
|
androidBuild.id = device['build.fingerprint']
|
|
|
|
androidBuild.product = device['build.hardware']
|
|
|
|
androidBuild.carrier = device['build.brand']
|
|
|
|
androidBuild.radio = device['build.radio']
|
|
|
|
androidBuild.bootloader = device['build.bootloader']
|
|
|
|
androidBuild.device = device['build.device']
|
|
|
|
androidBuild.sdkVersion = int(device['build.version.sdk_int'])
|
|
|
|
androidBuild.model = device['build.model']
|
|
|
|
androidBuild.manufacturer = device['build.manufacturer']
|
|
|
|
androidBuild.buildProduct = device['build.product']
|
|
|
|
androidBuild.client = device['client']
|
|
|
|
androidBuild.otaInstalled = False
|
|
|
|
androidBuild.timestamp = int(time.time())
|
|
|
|
androidBuild.googleServices = int(device['gsf.version'])
|
|
|
|
return androidBuild
|
2017-09-15 20:11:44 +00:00
|
|
|
|
2017-09-16 17:12:06 +00:00
|
|
|
def getAndroidCheckin():
|
|
|
|
androidCheckin = googleplay_pb2.AndroidCheckinProto()
|
|
|
|
androidCheckin.build.CopyFrom(getAndroidBuild())
|
|
|
|
androidCheckin.lastCheckinMsec = 0
|
|
|
|
androidCheckin.cellOperator = device['celloperator']
|
|
|
|
androidCheckin.simOperator = device['simoperator']
|
|
|
|
androidCheckin.roaming = device['roaming']
|
|
|
|
androidCheckin.userNumber = 0
|
|
|
|
return androidCheckin
|
2017-09-15 20:11:44 +00:00
|
|
|
|
2017-09-16 17:12:06 +00:00
|
|
|
def getAndroidCheckinRequest():
|
|
|
|
request = googleplay_pb2.AndroidCheckinRequest()
|
|
|
|
request.id = 0
|
|
|
|
request.checkin.CopyFrom(getAndroidCheckin())
|
|
|
|
request.locale = 'en_US'
|
|
|
|
request.timeZone = 'America/New_York'
|
|
|
|
request.version = 3
|
|
|
|
request.deviceConfiguration.CopyFrom(getDeviceConfig())
|
|
|
|
request.fragment = 0
|
|
|
|
return request
|