summaryrefslogtreecommitdiff
path: root/scripts/fetch-play-metadata.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/fetch-play-metadata.py')
-rwxr-xr-xscripts/fetch-play-metadata.py144
1 files changed, 144 insertions, 0 deletions
diff --git a/scripts/fetch-play-metadata.py b/scripts/fetch-play-metadata.py
new file mode 100755
index 00000000..7c65b648
--- /dev/null
+++ b/scripts/fetch-play-metadata.py
@@ -0,0 +1,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))
+