1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
|
import os
import argparse
import json
from googleapiclient.discovery import build
from google.oauth2 import service_account
# Load API key from environment variable
api_key = os.environ.get('GOOGLE_PLAY_API_KEY')
# Load command-line arguments
parser = argparse.ArgumentParser(description='Fetch app details from Google Play Store.')
parser.add_argument('package_name', help='Package name of the app')
parser.add_argument('--source-language', action='store_true', help='Fetch app description in source language')
parser.add_argument('--list-languages', action='store_true', help='List all supported languages')
parser.add_argument('--extract-details', action='store_true', help='Extract and save app details as JSON')
parser.add_argument('--extract-changelog', action='store_true', help='Extract and save changelog as JSON')
args = parser.parse_args()
# Create a service account credentials object
credentials = service_account.Credentials.from_service_account_file(
'/home/kwadronaut/dev/leap/secrets/android-api.json',
scopes=['https://www.googleapis.com/auth/androidpublisher']
)
# Build the service object for the Google Play Developer API
service = build('androidpublisher', 'v3', credentials=credentials, cache_discovery=False)
# Fetch app details
def fetch_app_details(package_name, language):
# Create a new edit
edit_request = service.edits().insert(body={}, packageName=package_name)
edit_response = edit_request.execute()
edit_id = edit_response['id']
# Fetch the app listing for the specified language within the edit
app_details = service.edits().listings().get(
packageName=package_name,
editId=edit_id,
language=language
).execute()
# Commit the edit (optional)
service.edits().commit(
packageName=package_name,
editId=edit_id
).execute()
return app_details, edit_id
# Fetch changelog for a specific version
def fetch_changelog(package_name, edit_id):
# Fetch the tracks for the package
tracks = service.edits().tracks().list(packageName=package_name, editId=edit_id).execute()
track = tracks['tracks'][0]['track']
# Fetch the changelog for the track
changelog = service.edits().tracks().get(packageName=package_name, editId=edit_id, track=track).execute()
return changelog
# Package name
package_name = args.package_name
# Fetch app details
try:
#app_details, edit_id = fetch_app_details(package_name, 'en-US')
app_details, edit_id = fetch_app_details(package_name, 'nl-NL')
print("App Details:")
print(app_details)
except Exception as e:
print("An error occurred:", str(e))
# List all supported languages
if args.list_languages:
try:
# Create a new edit
edit_request = service.edits().insert(body={}, packageName=package_name)
edit_response = edit_request.execute()
edit_id = edit_response['id']
# Fetch the app listings for the edit
listings = service.edits().listings().list(packageName=package_name, editId=edit_id).execute()
supported_languages = [listing['language'] for listing in listings['listings']]
print("Supported Languages:")
for language in supported_languages:
print(language)
# Commit the edit
service.edits().commit(packageName=package_name, editId=edit_id).execute()
except Exception as e:
print("An error occurred:", str(e))
# Extract and save app details as JSON
if args.extract_details:
try:
# Extract the text fields from app details
title = app_details['title']
full_description = app_details['fullDescription']
short_description = app_details['shortDescription']
# Create a dictionary to hold the extracted app details
extracted_details = {
'title': title,
'full_description': full_description,
'short_description': short_description
}
# Determine the output file path based on the language
language = 'en-US' # Update with the desired language
json_file_path = f"locale/{language}/transifex.json"
# Create the output directory if it doesn't exist
os.makedirs(os.path.dirname(json_file_path), exist_ok=True)
# Save the extracted details as JSON
with open(json_file_path, 'w', encoding='utf-8') as json_file:
json.dump(extracted_details, json_file, ensure_ascii=False, indent=4)
print(f"App details extracted and saved to {json_file_path} as JSON successfully.")
except Exception as e:
print("An error occurred:", str(e))
# Extract and save changelog as JSON
if args.extract_changelog:
try:
changelog = fetch_changelog(package_name, edit_id)
print("Changelog:")
print(changelog)
# Determine the output file path based on the language
language = 'en-US' # Update with the desired language
json_file_path = f"locale/{language}/transifex.json"
# Create the output directory if it doesn't exist
os.makedirs(os.path.dirname(json_file_path), exist_ok=True)
# Save the changelog as JSON
with open(json_file_path, 'w', encoding='utf-8') as json_file:
json.dump(changelog, json_file, ensure_ascii=False, indent=4)
print(f"Changelog extracted and saved to {json_file_path} as JSON successfully.")
except Exception as e:
print("An error occurred:", str(e))
|