dicta_api.py 891 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. from json import dumps
  2. from os import environ
  3. from requests import post
  4. from scriptshifter.exceptions import BREAK
  5. from scriptshifter.tools import capitalize
  6. EP = environ.get("TXL_DICTA_EP")
  7. DEFAULT_GENRE = "rabbinic"
  8. def s2r_post_config(ctx):
  9. """
  10. Romanize Hebrew text using the Dicta API service.
  11. """
  12. ctx.warnings = []
  13. rsp = post(
  14. EP,
  15. data=dumps({
  16. "data": ctx.src,
  17. "genre": ctx.options.get("genre", DEFAULT_GENRE)
  18. }))
  19. rsp.raise_for_status()
  20. rom = rsp.json().get("transliteration")
  21. if rom:
  22. if ctx.options["capitalize"] == "all":
  23. rom = capitalize(rom)
  24. elif ctx.options["capitalize"] == "first":
  25. rom = rom[0].upper() + rom[1:]
  26. else:
  27. ctx.warnings.append("Upstream service returned empty result.")
  28. ctx.dest = rom
  29. return BREAK