1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
|
#!/usr/bin/env python
import os
import sys
sys.path.insert(0, os.path.abspath('.'))
import CloudFlare
use_find = False
def doit(account_name, english_text):
# We set the timeout because these AI calls take longer than normal API calls
cf = CloudFlare.CloudFlare(global_request_timeout=120)
try:
if account_name is None or account_name == '':
params = {'per_page': 1}
else:
params = {'name': account_name, 'per_page': 1}
accounts = cf.accounts.get(params=params)
except CloudFlare.exceptions.CloudFlareAPIError as e:
exit('/accounts %d %s - api call failed' % (e, e))
try:
account_id = accounts[0]['id']
except IndexError:
exit('%s: account name not found' % (account_name))
translate_data = {
'text': english_text,
'source_lang': 'english',
'target_lang': 'french',
}
try:
if use_find:
# you can use this format:
r = cf.find('/accounts/:id/ai/run/@cf/meta/m2m100-1.2b').post(account_id, data=translate_data)
else:
# or you can use this format:
# @'s are replaced by at_ so .../@cf/... becomes .../at_cf/... etc
r = cf.accounts.ai.run.at_cf.meta.m2m100_1_2b.post(account_id, data=translate_data)
except CloudFlare.exceptions.CloudFlareAPIError as e:
exit('/ai.run %d %s - api call failed' % (e, e))
print(r['translated_text'])
def main():
if len(sys.argv) > 1 and sys.argv[1] == '-a':
del sys.argv[1]
account_name = sys.argv[1]
del sys.argv[1]
else:
account_name = None
if len(sys.argv) > 1:
english_text = ' '.join(sys.argv[1:])
else:
english_text = "I'll have an order of the moule frites"
doit(account_name, english_text)
if __name__ == '__main__':
main()
|