123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- #!/usr/bin/env python3
- """
- Usage: ./tools/update_google_play_listings.py /path/to/account_file.json
- Pass --beta at the end to generate listings for beta version of stk
- """
- import sys
- import os
- from google.auth.transport.requests import Request
- from google.oauth2 import service_account
- import googleapiclient.discovery
- # List of google play supported locale, this dict allow conversion from po file
- lang_dict = {
- 'af': 'af', # Afrikaans
- 'sq': 'sq', # Albanian
- 'am': 'am', # Amharic
- 'ar': 'ar', # Arabic
- 'hy': 'hy-AM', # Armenian
- 'az': 'az-AZ', # Azerbaijani
- 'bn': 'bn-BD', # Bangla
- 'eu': 'eu-ES', # Basque
- 'be': 'be', # Belarusian
- 'bg': 'bg', # Bulgarian
- 'my': 'my-MM', # Burmese
- 'ca': 'ca', # Catalan
- 'zh_HK': 'zh-HK', # Chinese (Hong Kong)
- 'zh_CN': 'zh-CN', # Chinese (Simplified)
- 'zh_TW': 'zh-TW', # Chinese (Traditional)
- 'hr': 'hr', # Croatian
- 'cs': 'cs-CZ', # Czech
- 'da': 'da-DK', # Danish
- 'nl': 'nl-NL', # Dutch
- 'en': 'en-US', # English
- 'et': 'et', # Estonian
- 'fil': 'fil', # Filipino
- 'fi': 'fi-FI', # Finnish
- 'fr_CA': 'fr-CA', # French (Canada)
- 'fr': 'fr-FR', # French (France)
- 'gl': 'gl-ES', # Galician
- 'ka': 'ka-GE', # Georgian
- 'de': 'de-DE', # German
- 'el': 'el-GR', # Greek
- 'gu': 'gu', # Gujarati
- 'he': 'iw-IL', # Hebrew
- 'hi': 'hi-IN', # Hindi
- 'hu': 'hu-HU', # Hungarian
- 'is': 'is-IS', # Icelandic
- 'id': 'id', # Indonesian
- 'it': 'it-IT', # Italian
- 'ja': 'ja-JP', # Japanese
- 'kn': 'kn-IN', # Kannada
- 'kk': 'kk', # Kazakh
- 'km': 'km-KH', # Khmer
- 'ko': 'ko-KR', # Korean
- 'ky': 'ky-KG', # Kyrgyz
- 'lo': 'lo-LA', # Lao
- 'lv': 'lv', # Latvian
- 'lt': 'lt', # Lithuanian
- 'mk': 'mk-MK', # Macedonian
- 'ms': 'ms', # Malay
- 'ml': 'ml-IN', # Malayalam
- 'mr': 'mr-IN', # Marathi
- 'mn': 'mn-MN', # Mongolian
- 'ne': 'ne-NP', # Nepali
- 'no': 'no-NO', # Norwegian
- 'fa': 'fa', # Persian
- 'pl': 'pl-PL', # Polish
- 'pt_BR': 'pt-BR', # Portuguese (Brazil)
- 'pt': 'pt-PT', # Portuguese (Portugal)
- 'pa': 'pa', # Punjabi
- 'ro': 'ro', # Romanian
- 'rm': 'rm', # Romansh
- 'ru': 'ru-RU', # Russian
- 'sr': 'sr', # Serbian
- 'si': 'si-LK', # Sinhala
- 'sk': 'sk', # Slovak
- 'sl': 'sl', # Slovenian
- 'es': 'es-ES', # Spanish (Spain)
- 'sw': 'sw', # Swahili
- 'sv': 'sv-SE', # Swedish
- 'ta': 'ta-IN', # Tamil
- 'te': 'te-IN', # Telugu
- 'th': 'th', # Thai
- 'tr': 'tr-TR', # Turkish
- 'uk': 'uk', # Ukrainian
- 'ur': 'ur', # Urdu
- 'vi': 'vi', # Vietnamese
- 'zu': 'zu', # Zulu
- }
- package = 'org.supertuxkart.stk'
- account_file = sys.argv[1]
- is_beta = False
- if len(sys.argv) == 3 and sys.argv[2] == '--beta':
- package += '_beta'
- is_beta = True
- SCOPES = ['https://www.googleapis.com/auth/androidpublisher']
- credentials = service_account.Credentials.from_service_account_file(
- account_file, scopes = SCOPES)
- credentials.refresh(Request())
- from googleapiclient.discovery import build
- service = build('androidpublisher', 'v3', credentials = credentials)
- edit_request = service.edits().insert(body = {}, packageName = package)
- result = edit_request.execute()
- edit_id = result['id']
- for lang in os.listdir('./google_play_msg'):
- if not lang in lang_dict:
- continue
- language_name = lang_dict[lang]
- print('Updating', language_name)
- listing_response = service.edits().listings().update(
- editId = edit_id,
- language = language_name,
- packageName = package,
- body = {
- 'language': language_name,
- 'title': 'SuperTuxKart Beta' if is_beta else 'SuperTuxKart',
- 'fullDescription':
- open('./google_play_msg/' + lang + ('/full_beta.txt'
- if is_beta else '/full.txt'), 'r').read(),
- 'shortDescription':
- open('./google_play_msg/' + lang + '/short.txt', 'r').read(),
- }).execute()
- commit_request = service.edits().commit(
- editId = edit_id, packageName = package).execute()
|