update_google_play_listings.py 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. #!/usr/bin/env python3
  2. """
  3. Usage: ./tools/update_google_play_listings.py /path/to/account_file.json
  4. Pass --beta at the end to generate listings for beta version of stk
  5. """
  6. import sys
  7. import os
  8. from google.auth.transport.requests import Request
  9. from google.oauth2 import service_account
  10. import googleapiclient.discovery
  11. # List of google play supported locale, this dict allow conversion from po file
  12. lang_dict = {
  13. 'af': 'af', # Afrikaans
  14. 'sq': 'sq', # Albanian
  15. 'am': 'am', # Amharic
  16. 'ar': 'ar', # Arabic
  17. 'hy': 'hy-AM', # Armenian
  18. 'az': 'az-AZ', # Azerbaijani
  19. 'bn': 'bn-BD', # Bangla
  20. 'eu': 'eu-ES', # Basque
  21. 'be': 'be', # Belarusian
  22. 'bg': 'bg', # Bulgarian
  23. 'my': 'my-MM', # Burmese
  24. 'ca': 'ca', # Catalan
  25. 'zh_HK': 'zh-HK', # Chinese (Hong Kong)
  26. 'zh_CN': 'zh-CN', # Chinese (Simplified)
  27. 'zh_TW': 'zh-TW', # Chinese (Traditional)
  28. 'hr': 'hr', # Croatian
  29. 'cs': 'cs-CZ', # Czech
  30. 'da': 'da-DK', # Danish
  31. 'nl': 'nl-NL', # Dutch
  32. 'en': 'en-US', # English
  33. 'et': 'et', # Estonian
  34. 'fil': 'fil', # Filipino
  35. 'fi': 'fi-FI', # Finnish
  36. 'fr_CA': 'fr-CA', # French (Canada)
  37. 'fr': 'fr-FR', # French (France)
  38. 'gl': 'gl-ES', # Galician
  39. 'ka': 'ka-GE', # Georgian
  40. 'de': 'de-DE', # German
  41. 'el': 'el-GR', # Greek
  42. 'gu': 'gu', # Gujarati
  43. 'he': 'iw-IL', # Hebrew
  44. 'hi': 'hi-IN', # Hindi
  45. 'hu': 'hu-HU', # Hungarian
  46. 'is': 'is-IS', # Icelandic
  47. 'id': 'id', # Indonesian
  48. 'it': 'it-IT', # Italian
  49. 'ja': 'ja-JP', # Japanese
  50. 'kn': 'kn-IN', # Kannada
  51. 'kk': 'kk', # Kazakh
  52. 'km': 'km-KH', # Khmer
  53. 'ko': 'ko-KR', # Korean
  54. 'ky': 'ky-KG', # Kyrgyz
  55. 'lo': 'lo-LA', # Lao
  56. 'lv': 'lv', # Latvian
  57. 'lt': 'lt', # Lithuanian
  58. 'mk': 'mk-MK', # Macedonian
  59. 'ms': 'ms', # Malay
  60. 'ml': 'ml-IN', # Malayalam
  61. 'mr': 'mr-IN', # Marathi
  62. 'mn': 'mn-MN', # Mongolian
  63. 'ne': 'ne-NP', # Nepali
  64. 'no': 'no-NO', # Norwegian
  65. 'fa': 'fa', # Persian
  66. 'pl': 'pl-PL', # Polish
  67. 'pt_BR': 'pt-BR', # Portuguese (Brazil)
  68. 'pt': 'pt-PT', # Portuguese (Portugal)
  69. 'pa': 'pa', # Punjabi
  70. 'ro': 'ro', # Romanian
  71. 'rm': 'rm', # Romansh
  72. 'ru': 'ru-RU', # Russian
  73. 'sr': 'sr', # Serbian
  74. 'si': 'si-LK', # Sinhala
  75. 'sk': 'sk', # Slovak
  76. 'sl': 'sl', # Slovenian
  77. 'es': 'es-ES', # Spanish (Spain)
  78. 'sw': 'sw', # Swahili
  79. 'sv': 'sv-SE', # Swedish
  80. 'ta': 'ta-IN', # Tamil
  81. 'te': 'te-IN', # Telugu
  82. 'th': 'th', # Thai
  83. 'tr': 'tr-TR', # Turkish
  84. 'uk': 'uk', # Ukrainian
  85. 'ur': 'ur', # Urdu
  86. 'vi': 'vi', # Vietnamese
  87. 'zu': 'zu', # Zulu
  88. }
  89. package = 'org.supertuxkart.stk'
  90. account_file = sys.argv[1]
  91. is_beta = False
  92. if len(sys.argv) == 3 and sys.argv[2] == '--beta':
  93. package += '_beta'
  94. is_beta = True
  95. SCOPES = ['https://www.googleapis.com/auth/androidpublisher']
  96. credentials = service_account.Credentials.from_service_account_file(
  97. account_file, scopes = SCOPES)
  98. credentials.refresh(Request())
  99. from googleapiclient.discovery import build
  100. service = build('androidpublisher', 'v3', credentials = credentials)
  101. edit_request = service.edits().insert(body = {}, packageName = package)
  102. result = edit_request.execute()
  103. edit_id = result['id']
  104. for lang in os.listdir('./google_play_msg'):
  105. if not lang in lang_dict:
  106. continue
  107. language_name = lang_dict[lang]
  108. print('Updating', language_name)
  109. listing_response = service.edits().listings().update(
  110. editId = edit_id,
  111. language = language_name,
  112. packageName = package,
  113. body = {
  114. 'language': language_name,
  115. 'title': 'SuperTuxKart Beta' if is_beta else 'SuperTuxKart',
  116. 'fullDescription':
  117. open('./google_play_msg/' + lang + ('/full_beta.txt'
  118. if is_beta else '/full.txt'), 'r').read(),
  119. 'shortDescription':
  120. open('./google_play_msg/' + lang + '/short.txt', 'r').read(),
  121. }).execute()
  122. commit_request = service.edits().commit(
  123. editId = edit_id, packageName = package).execute()