我必须创建一个程序,每天获取AppStore和PlayStore上一组应用程序的安装信息。
对于PlayStore,使用谷歌云存储,我按照这个页面上的说明,使用客户端库和服务帐户方法和Python代码示例。https:/support.google.comgoogleplayandroid-developeranswer6135870?hl=en&ref_topic=7071935。
我稍微修改了一下给定的代码,使其工作,因为文档看起来不是最新的。我使它能够连接到API,而且似乎连接正确。
我的问题是,我不明白我得到的是什么对象以及如何使用它。这不是一个报告,它只是看起来像一个dict中的文件属性。
这是我的代码(私人数据 "隐藏")。
import json
from httplib2 import Http
from oauth2client.service_account import ServiceAccountCredentials
from googleapiclient.discovery import build
client_email = '************.iam.gserviceaccount.com'
json_file = 'PATH/TO/MY/JSON/FILE'
cloud_storage_bucket = 'pubsite_prod_rev_**********'
report_to_download = 'stats/installs/installs_****************_202005_app_version.csv'
private_key = json.loads(open(json_file).read())['private_key']
credentials = ServiceAccountCredentials.from_json_keyfile_name(json_file, scopes='https://www.googleapis.com/auth/devstorage.read_only')
storage = build('storage', 'v1', http=credentials.authorize(Http()))
supposed_to_be_report = storage.objects().get(bucket=cloud_storage_bucket, object=report_to_download).execute()
当我打印 应该是报告 - 这是一本字典--我只得到我所理解的关于他的报告的元数据,像这样。
{'kind': 'storage#object', 'id': 'pubsite_prod_rev_***********/stats/installs/installs_****************_202005_app_version.csv/1591077412052716',
'selfLink': 'https://www.googleapis.com/storage/v1/b/pubsite_prod_rev_***********/o/stats%2Finstalls%2Finstalls_*************_202005_app_version.csv',
'mediaLink': 'https://storage.googleapis.com/download/storage/v1/b/pubsite_prod_rev_***********/o/stats%2Finstalls%2Finstalls_****************_202005_app_version.csv?generation=1591077412052716&alt=media',
'name': 'stats/installs/installs_***********_202005_app_version.csv',
'bucket': 'pubsite_prod_rev_***********',
'generation': '1591077412052716',
'metageneration': '1',
'contentType': 'text/csv;
charset=utf-16le', 'storageClass': 'STANDARD', 'size': '378', 'md5Hash': '*****==', 'contentEncoding': 'gzip'......
我不确定我是否正确使用它。能否请你解释一下我哪里错了,或者如何正确地获得安装报告?
我可以看到,你使用的是 googleapiclient.discovery
客户端,这不是一个问题,但推荐的方式是通过使用 客户库.
其次,你只是检索对象的元数据。你可以下载对象来访问文件内容,这是一个使用客户端库的示例。
from google.cloud import storage
def download_blob(bucket_name, source_blob_name, destination_file_name):
"""Downloads a blob from the bucket."""
# bucket_name = "your-bucket-name"
# source_blob_name = "storage-object-name"
# destination_file_name = "local/path/to/file"
storage_client = storage.Client()
bucket = storage_client.bucket(bucket_name)
blob = bucket.blob(source_blob_name)
blob.download_to_filename(destination_file_name)
print(
"Blob {} downloaded to {}.".format(
source_blob_name, destination_file_name
)
)
样本取自 正式文件.