-
-
Save RodolfoAntonici/013577d20c74a4c1d137153ec84be432 to your computer and use it in GitHub Desktop.
Python Script to ContentStack
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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