Skip to content

Instantly share code, notes, and snippets.

@RodolfoAntonici
Forked from bkawakami/main.py
Last active August 27, 2019 20:00
Show Gist options
  • Save RodolfoAntonici/013577d20c74a4c1d137153ec84be432 to your computer and use it in GitHub Desktop.
Save RodolfoAntonici/013577d20c74a4c1d137153ec84be432 to your computer and use it in GitHub Desktop.
Python Script to ContentStack
from urllib.request import Request, urlopen
import json
import sys
import getopt
import os
def getDataNative(env, loc, key, token, directory):
req = Request(
'https://cdn.contentstack.io/v3/content_types/mobile_translation_poc_/entries/blt9624c908f899c058?environment=%s&locale=%s' % (
env, loc))
req.add_header('api_key', key)
req.add_header('access_token', token)
content = urlopen(req).read().decode("utf-8")
obj = json.loads(content)
return obj
def getArgs(argv):
env = ''
loc = ''
key = ''
token = ''
platform = ''
directory = ''
try:
opts, args = getopt.getopt(argv, "he:l:k:t:p:d:",
["environment=", "locale=", "apikey=", "accesstoken=", "platform=", "directory="])
except getopt.GetoptError:
print('main.py -e <environment:development|production> -l <locale:en-us> -k <apikey> -t <accesstoken> -d <directory> -p '
'<platform:android|ios>')
sys.exit(2)
for opt, arg in opts:
if opt == '-h':
print('main.py -e <environment:development|production> -l <locale:en-us> -k <apikey> -t <accesstoken> -d <directory> -p '
'<platform:android|ios>')
sys.exit()
elif opt in ("-e", "--environment"):
env = arg
elif opt in ("-l", "--locale"):
loc = arg
elif opt in ("-k", "--apikey"):
key = arg
elif opt in ("-t", "--accesstoken"):
token = arg
elif opt in ("-p", "--platform"):
platform = arg
elif opt in ("-d", "--directory"):
directory = arg
if not env or not loc or not key or not token or not platform or not directory:
print('main.py -e <environment:development|production> -l <locale:en-us> -k <apikey> -t <accesstoken> -d <directory> -p '
'<platform:android|ios>')
sys.exit()
return {
"environment": env,
"locale": loc,
"key": key,
"token": token,
"platform": platform,
"directory": directory
}
def androidTransfer(labels_dict):
info_data = ''
for key, value in labels_dict.items():
info_data += ' <string name="%s">%s</string>\n' % (key, value)
return "<resources>\n%s</resources>" % info_data
def iosTransfer(labels_dict):
info_data = ''
for key, value in labels_dict.items():
info_data += '"%s" = "%s";\n' % (key, value)
return info_data
def saveData(labels_dict, platform, directory):
if platform == "ios":
if not os.path.exists(directory):
os.makedirs(directory)
text_file = open(directory + "/" + "Localizable.strings", "w")
text_file.write(iosTransfer(labels_dict))
text_file.close()
else:
text_file = open("strings.xml", "w")
text_file.write(androidTransfer(labels_dict))
text_file.close()
def main(argv):
labels_dict = {}
international_data = getDataNative(
getArgs(argv)['environment'],
getArgs(argv)['locale'],
getArgs(argv)['key'],
getArgs(argv)['token'],
getArgs(argv)['directory']
)['entry']['data']
for key, value in international_data.items():
if isinstance(international_data[key], dict):
for key_item, value_item in international_data[key].items():
labels_dict[key_item] = value_item
saveData(labels_dict, getArgs(argv)['platform'], getArgs(argv)['directory'])
if __name__ == "__main__":
main(sys.argv[1:])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment