#python #google-play #google-play-developer-api
#python #google-play #google-play-developer-api
Вопрос:
Я настроил и использовал API для загрузки файлов .apk, и он отлично работает с использованием этого файла кода.
"""Uploads an apk to the alpha track."""
import argparse
import sys
from apiclient import sample_tools
from oauth2client import client
TRACK = 'alpha' # Can be 'alpha', beta', 'production' or 'rollout'
# Declare command-line flags.
argparser = argparse.ArgumentParser(add_help=False)
argparser.add_argument('package_name',
help='The package name. Example: com.android.sample')
argparser.add_argument('apk_file',
nargs='?',
default='test.apk',
help='The path to the APK file to upload.')
def main(argv):
# Authenticate and construct service.
service, flags = sample_tools.init(
argv,
'androidpublisher',
'v3',
__doc__,
__file__, parents=[argparser],
scope='https://www.googleapis.com/auth/androidpublisher')
# Process flags and read their values.
package_name = flags.package_name
apk_file = flags.apk_file
try:
edit_request = service.edits().insert(body={}, packageName=package_name)
result = edit_request.execute()
edit_id = result['id']
apk_response = service.edits().apks().upload(
editId=edit_id,
packageName=package_name,
media_body=apk_file).execute()
print 'Version code %d has been uploaded' % apk_response['versionCode']
track_response = service.edits().tracks().update(
editId=edit_id,
track=TRACK,
packageName=package_name,
body={u'releases': [{
u'name': u'My first API release',
u'versionCodes': [str(apk_response['versionCode'])],
u'status': u'completed',
}]}).execute()
print 'Track %s is set with releases: %s' % (
track_response['track'], str(track_response['releases']))
commit_request = service.edits().commit(
editId=edit_id, packageName=package_name).execute()
print 'Edit "%s" has been committed' % (commit_request['id'])
except client.AccessTokenRefreshError:
print ('The credentials have been revoked or expired, please re-run the '
'application to re-authorize')
if __name__ == '__main__':
main(sys.argv)
Но этот код не работает для пакетов приложений.
Комментарии:
1. Вы не предоставили достаточно информации, чтобы кто-либо мог вам помочь. Как изменить код для файлов aab (вы меняете имя файла?). Когда вы говорите, что это «не работает», какое сообщение об ошибке вы получаете?
2. Обратите внимание, что код в основном скопирован отсюда: github.com/googlesamples/android-play-publisher-api/blob/master /…
Ответ №1:
Если googleapiclient.errors.UnknownFileType
возникает исключение, попробуйте добавить следующий код:
import mimetypes
mimetypes.add_type("application/octet-stream", ".apk")
mimetypes.add_type("application/octet-stream", ".aab")
И если socket.timeout
возникает исключение, попробуйте добавить следующий код:
import socket
socket.setdefaulttimeout(7 * 24 * 60 * 60)
Ответ №2:
Google publishing API предоставляет метод пакетов. Вы можете попробовать следующее:
service.edits().bundles().upload(
editId=edit_id,
packageName=package_name,
media_body=aab_file).execute()
Комментарии:
1. Мне все равно пришлось добавить
media_mime_type="application/octet-stream"
аргумент к этому методу.