From 856c65919ec9373a9201be29beba22ff81cce3fb Mon Sep 17 00:00:00 2001 From: ale Date: Thu, 18 Apr 2024 17:42:52 +0200 Subject: [PATCH] initial commit --- .gitmodules | 3 +++ LibreTranslate | 1 + README.md | 28 ++++++++++++++++++++++++++++ docker-compose.yml | 37 +++++++++++++++++++++++++++++++++++++ libretranslate-api/index.js | 25 +++++++++++++++++++++++++ 5 files changed, 94 insertions(+) create mode 100644 .gitmodules create mode 160000 LibreTranslate create mode 100644 README.md create mode 100644 docker-compose.yml create mode 100644 libretranslate-api/index.js diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..f2c4f4e --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "LibreTranslate"] + path = LibreTranslate + url = https://github.com/LibreTranslate/LibreTranslate diff --git a/LibreTranslate b/LibreTranslate new file mode 160000 index 0000000..1bc6a30 --- /dev/null +++ b/LibreTranslate @@ -0,0 +1 @@ +Subproject commit 1bc6a3061c28a8f45200eb5d2fa4e099b37c4cb7 diff --git a/README.md b/README.md new file mode 100644 index 0000000..4ce2c0d --- /dev/null +++ b/README.md @@ -0,0 +1,28 @@ +# LibreTranslate API + +## Your own translation API + +### Install + +``` +$ git clone --recurse-submodules https://gitlab.com/manalejandro/libretranslate-api +$ cd libretranslate-api/ +$ docker compose pull libretranslate-api +$ docker compose build libretranslate +``` + +### Run + +``` +$ docker compose up -d +``` + +### Usage + +``` +$ curl "http://libretranslate-api:5080/?target=es&text=help" +``` + +### License + + MIT \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..a257bc1 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,37 @@ +version: '3' + +services: + libretranslate: + image: libretranslate + build: + context: ./LibreTranslate + args: + with_models: true + dockerfile: docker/Dockerfile + restart: always + hostname: libretranslate + container_name: libretranslate + expose: + - "5000" + networks: + libretranslatenet: + + libretranslate-api: + image: node:21-slim + restart: always + hostname: libretranslate-api + container_name: libretranslate-api + working_dir: /libretranslate-api + user: node + entrypoint: + - node + - index.js + volumes: + - ./libretranslate-api:/libretranslate-api + ports: + - "5080:3000" + networks: + libretranslatenet: + +networks: + libretranslatenet: diff --git a/libretranslate-api/index.js b/libretranslate-api/index.js new file mode 100644 index 0000000..ea29a8e --- /dev/null +++ b/libretranslate-api/index.js @@ -0,0 +1,25 @@ +const http = require('http') + +http.createServer(async (req, res) => { + const params = new URLSearchParams(req.url.replace(/^\//, '')) + if (params.has('text') && params.has('target')) { + const response = await fetch("http://libretranslate:5000/translate", { + method: "POST", + body: JSON.stringify({ + q: params.get('text'), + source: "auto", + target: params.get('target'), + format: "text", + api_key: "" + }), + headers: { "Content-Type": "application/json" } + }), + result = await response.json() + res.writeHead(200, { 'Content-Type': 'text/plain; charset=UTF-8' }) + res.end(result.translatedText) + } else { + res.statusCode = 404 + res.end() + } +}).listen(3000) +