如何使用谷歌的API从谷歌云存储获取报告?

问题描述 投票:0回答:1

我必须创建一个程序,每天获取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'......

我不确定我是否正确使用它。能否请你解释一下我哪里错了,或者如何正确地获得安装报告?

google-cloud-platform google-play-console google-api-python-client
1个回答
1
投票

我可以看到,你使用的是 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
        )
    )

样本取自 正式文件.

© www.soinside.com 2019 - 2024. All rights reserved.