diff --git a/.gitea/workflows/push.yml b/.gitea/workflows/push.yml index a1e054e..b8ffbec 100644 --- a/.gitea/workflows/push.yml +++ b/.gitea/workflows/push.yml @@ -40,8 +40,7 @@ jobs: - name: Build mozhi run: | go mod download - go install github.com/swaggo/swag/cmd/swag@latest - swag init + go run github.com/swaggo/swag/cmd/swag@latest init --parseDependency GOOS=linux GOARCH=amd64 go build -o mozhi-linux-amd64 GOOS=linux GOARCH=arm64 go build -o mozhi-linux-arm64 GOOS=windows GOARCH=amd64 go build -o mozhi-windows-amd64.exe diff --git a/Dockerfile b/Dockerfile index 467881c..ae036c8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,8 +7,7 @@ RUN apk --no-cache add git ca-certificates COPY . . RUN go mod download -RUN go install github.com/swaggo/swag/cmd/swag@latest -RUN swag init +RUN go run github.com/swaggo/swag/cmd/swag@latest init --parseDependency RUN GOOS=linux GOARCH=$TARGETARCH go build -o /src/mozhi FROM alpine:3.16 as bin diff --git a/README.md b/README.md index 4d0c818..ba77b87 100644 --- a/README.md +++ b/README.md @@ -26,13 +26,16 @@ I'm initially focusing on the api and engines, but eventually Mozhi will have a - MyMemory - DuckDuckGo (almost 1-1 with Bing Translate) +## Where is the engine code? +The engine code has recently been split from the main codebase. Please check [aryak/libmozhi](https://codeberg.org/aryak/libmozhi) for it. + ## Installing You can either use [docker](https://codeberg.org/aryak/mozhi/src/branch/master/compose.yml) or the build artifacts from [CI jobs on git.projectsegfau.lt](https://git.projectsegfau.lt/arya/mozhi/actions). ## Building ``` go mod download -go run github.com/swaggo/swag/cmd/swag@latest init +go run github.com/swaggo/swag/cmd/swag@latest init --parseDependency go build -o mozhi ``` diff --git a/cmd/langlist.go b/cmd/langlist.go index bd1224d..b408a18 100644 --- a/cmd/langlist.go +++ b/cmd/langlist.go @@ -3,7 +3,7 @@ package cmd import ( "fmt" - "codeberg.org/aryak/mozhi/utils" + libmozhi "codeberg.org/aryak/libmozhi" "github.com/ktr0731/go-fuzzyfinder" "github.com/spf13/cobra" @@ -20,7 +20,7 @@ var langlistCmd = &cobra.Command{ Use: "langlist", Short: "List/select languages supported by an engine.", Run: func(cmd *cobra.Command, args []string) { - list, err := utils.LangList(engineused, listtype) + list, err := libmozhi.LangList(engineused, listtype) if err != nil { fmt.Println(err) } else { diff --git a/cmd/translate.go b/cmd/translate.go index 32c5e54..de2bb80 100644 --- a/cmd/translate.go +++ b/cmd/translate.go @@ -4,7 +4,7 @@ import ( "encoding/json" "fmt" - "codeberg.org/aryak/mozhi/utils" + libmozhi "codeberg.org/aryak/libmozhi" "github.com/spf13/cobra" ) @@ -22,7 +22,7 @@ var translateCmd = &cobra.Command{ Short: "Translate.", Run: func(cmd *cobra.Command, args []string) { if engine == "all" { - data := utils.TranslateAll(dest, source, query) + data := libmozhi.TranslateAll(dest, source, query) if rawjson { j, err := json.Marshal(data) if err != nil { @@ -44,7 +44,7 @@ var translateCmd = &cobra.Command{ fmt.Println("-----------------------------------") } } else { - data, err := utils.Translate(engine, dest, source, query) + data, err := libmozhi.Translate(engine, dest, source, query) if rawjson { j, err := json.Marshal(data) if err != nil { diff --git a/docs/docs.go b/docs/docs.go index f0253f4..2d2a492 100644 --- a/docs/docs.go +++ b/docs/docs.go @@ -1,5 +1,4 @@ -// Code generated by swaggo/swag. DO NOT EDIT. - +// Package docs Code generated by swaggo/swag. DO NOT EDIT package docs import "github.com/swaggo/swag" @@ -30,7 +29,7 @@ const docTemplate = `{ ], "responses": { "200": { - "description": "OK", + "description": "success", "schema": { "$ref": "#/definitions/utils.List" } @@ -52,7 +51,7 @@ const docTemplate = `{ ], "responses": { "200": { - "description": "OK", + "description": "success", "schema": { "$ref": "#/definitions/utils.List" } @@ -62,7 +61,7 @@ const docTemplate = `{ }, "/api/translate": { "get": { - "description": "When engine is set to all, it will return an array of utils.LangOut.", + "description": "When engine is set to all, it will return an array of libmozhi.LangOut.", "summary": "Translate text", "parameters": [ { @@ -96,7 +95,7 @@ const docTemplate = `{ ], "responses": { "200": { - "description": "OK", + "description": "success", "schema": { "$ref": "#/definitions/utils.LangOut" } diff --git a/docs/swagger.json b/docs/swagger.json index 1e5fe9f..46a44fc 100644 --- a/docs/swagger.json +++ b/docs/swagger.json @@ -18,7 +18,7 @@ ], "responses": { "200": { - "description": "OK", + "description": "success", "schema": { "$ref": "#/definitions/utils.List" } @@ -40,7 +40,7 @@ ], "responses": { "200": { - "description": "OK", + "description": "success", "schema": { "$ref": "#/definitions/utils.List" } @@ -50,7 +50,7 @@ }, "/api/translate": { "get": { - "description": "When engine is set to all, it will return an array of utils.LangOut.", + "description": "When engine is set to all, it will return an array of libmozhi.LangOut.", "summary": "Translate text", "parameters": [ { @@ -84,7 +84,7 @@ ], "responses": { "200": { - "description": "OK", + "description": "success", "schema": { "$ref": "#/definitions/utils.LangOut" } diff --git a/docs/swagger.yaml b/docs/swagger.yaml index 5713145..39be1a1 100644 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -32,7 +32,7 @@ paths: type: string responses: "200": - description: OK + description: success schema: $ref: '#/definitions/utils.List' summary: Show list of available source languages for engine @@ -46,13 +46,13 @@ paths: type: string responses: "200": - description: OK + description: success schema: $ref: '#/definitions/utils.List' summary: Show list of available target languages for engine /api/translate: get: - description: When engine is set to all, it will return an array of utils.LangOut. + description: When engine is set to all, it will return an array of libmozhi.LangOut. parameters: - description: Engine name in: query @@ -76,7 +76,7 @@ paths: type: string responses: "200": - description: OK + description: success schema: $ref: '#/definitions/utils.LangOut' summary: Translate text diff --git a/go.mod b/go.mod index af8c8f0..df538a8 100644 --- a/go.mod +++ b/go.mod @@ -1,27 +1,23 @@ module codeberg.org/aryak/mozhi -go 1.20 +go 1.21.0 replace github.com/OwO-Network/gdeeplx => github.com/gi-yt/gdeeplx v0.0.0-20230817133036-0eb71706cd51 require ( - github.com/OwO-Network/gdeeplx v0.0.1 - github.com/carlmjohnson/requests v0.23.4 - github.com/gocolly/colly v1.2.0 - github.com/gofiber/fiber/v2 v2.49.0 - github.com/gofiber/swagger v0.1.12 + codeberg.org/aryak/libmozhi v0.0.0-20230909133311-5b21e2215c4c + github.com/gofiber/fiber/v2 v2.49.1 + github.com/gofiber/swagger v0.1.13 github.com/gofiber/template v1.8.0 - github.com/google/go-querystring v1.1.0 - github.com/google/uuid v1.3.1 github.com/joho/godotenv v1.5.1 github.com/ktr0731/go-fuzzyfinder v0.7.0 github.com/spf13/cobra v1.7.0 - github.com/swaggo/swag v1.16.1 - github.com/tidwall/gjson v1.14.4 + github.com/swaggo/swag v1.16.2 ) require ( github.com/KyleBanks/depth v1.2.1 // indirect + github.com/OwO-Network/gdeeplx v0.0.1 // indirect github.com/PuerkitoBio/goquery v1.8.1 // indirect github.com/abadojack/whatlanggo v1.0.1 // indirect github.com/andybalholm/brotli v1.0.5 // indirect @@ -29,15 +25,19 @@ require ( github.com/antchfx/htmlquery v1.3.0 // indirect github.com/antchfx/xmlquery v1.3.17 // indirect github.com/antchfx/xpath v1.2.4 // indirect + github.com/carlmjohnson/requests v0.23.4 // indirect github.com/gdamore/encoding v1.0.0 // indirect - github.com/gdamore/tcell/v2 v2.5.3 // indirect + github.com/gdamore/tcell/v2 v2.6.0 // indirect github.com/go-openapi/jsonpointer v0.20.0 // indirect github.com/go-openapi/jsonreference v0.20.2 // indirect github.com/go-openapi/spec v0.20.9 // indirect github.com/go-openapi/swag v0.22.4 // indirect github.com/gobwas/glob v0.2.3 // indirect + github.com/gocolly/colly v1.2.0 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.3 // indirect + github.com/google/go-querystring v1.1.0 // indirect + github.com/google/uuid v1.3.1 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/kennygrant/sanitize v1.2.4 // indirect @@ -56,17 +56,18 @@ require ( github.com/spf13/pflag v1.0.5 // indirect github.com/swaggo/files/v2 v2.0.0 // indirect github.com/temoto/robotstxt v1.1.2 // indirect + github.com/tidwall/gjson v1.16.0 // indirect github.com/tidwall/match v1.1.1 // indirect github.com/tidwall/pretty v1.2.1 // indirect github.com/valyala/bytebufferpool v1.0.0 // indirect - github.com/valyala/fasthttp v1.48.0 // indirect + github.com/valyala/fasthttp v1.49.0 // indirect github.com/valyala/tcplisten v1.0.0 // indirect - golang.org/x/net v0.14.0 // indirect - golang.org/x/sys v0.11.0 // indirect - golang.org/x/term v0.11.0 // indirect - golang.org/x/text v0.12.0 // indirect - golang.org/x/tools v0.12.0 // indirect - google.golang.org/appengine v1.6.7 // indirect + golang.org/x/net v0.15.0 // indirect + golang.org/x/sys v0.12.0 // indirect + golang.org/x/term v0.12.0 // indirect + golang.org/x/text v0.13.0 // indirect + golang.org/x/tools v0.13.0 // indirect + google.golang.org/appengine v1.6.8 // indirect google.golang.org/protobuf v1.31.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index d6772d1..8e9a2c2 100644 --- a/go.sum +++ b/go.sum @@ -45,6 +45,8 @@ cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0Zeo cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= +codeberg.org/aryak/libmozhi v0.0.0-20230909133311-5b21e2215c4c h1:lnG0+NunYw4x6TUl00MQvucNTypqK6skms9MsKx0P2E= +codeberg.org/aryak/libmozhi v0.0.0-20230909133311-5b21e2215c4c/go.mod h1:DOxFxtSCKbs3sfKLxDwho9RFqkZy1opa67/c9v+/G+I= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= @@ -68,6 +70,7 @@ github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRF github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/andybalholm/brotli v1.0.5 h1:8uQZIdzKmjc/iuPu7O2ioW48L81FgatrcpfFmiq/cCs= github.com/andybalholm/brotli v1.0.5/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= +github.com/andybalholm/cascadia v1.3.1 h1:nhxRkql1kdYCc8Snf7D5/D3spOX+dBgjA6u8x004T2c= github.com/andybalholm/cascadia v1.3.1/go.mod h1:R4bJ1UQfqADjvDa4P6HZHLh/3OxWWEqc0Sk8XGwHqvA= github.com/andybalholm/cascadia v1.3.2 h1:3Xi6Dw5lHF15JtdcmAHD3i1+T8plmv7BQ/nsViSLyss= github.com/andybalholm/cascadia v1.3.2/go.mod h1:7gtRlve5FxPPgIgX36uWBX58OdBsSS6lUvCFb+h7KvU= @@ -143,6 +146,8 @@ github.com/gdamore/encoding v1.0.0 h1:+7OoQ1Bc6eTm5niUzBa0Ctsh6JbMW6Ra+YNuAtDBdk github.com/gdamore/encoding v1.0.0/go.mod h1:alR0ol34c49FCSBLjhosxzcPHQbf2trDkoo5dl+VrEg= github.com/gdamore/tcell/v2 v2.5.3 h1:b9XQrT6QGbgI7JvZOJXFNczOQeIYbo8BfeSMzt2sAV0= github.com/gdamore/tcell/v2 v2.5.3/go.mod h1:wSkrPaXoiIWZqW/g7Px4xc79di6FTcpB8tvaKJ6uGBo= +github.com/gdamore/tcell/v2 v2.6.0 h1:OKbluoP9VYmJwZwq/iLb4BxwKcwGthaa1YNBJIyCySg= +github.com/gdamore/tcell/v2 v2.6.0/go.mod h1:be9omFATkdr0D9qewWW3d+MEvl5dha+Etb5y65J2H8Y= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gi-yt/gdeeplx v0.0.0-20230817133036-0eb71706cd51 h1:UsBBzLOcgAHzumecyEwnwlvF/cfxizNJvVilj9zbQMc= github.com/gi-yt/gdeeplx v0.0.0-20230817133036-0eb71706cd51/go.mod h1:xLqaj0n6E2VmiI1RXBOFy8wLoiOurvO3O6QxUvepyVo= @@ -180,8 +185,12 @@ github.com/gofiber/fiber/v2 v2.43.0/go.mod h1:mpS1ZNE5jU+u+BA4FbM+KKnUzJ4wzTK+FT github.com/gofiber/fiber/v2 v2.46.0/go.mod h1:DNl0/c37WLe0g92U6lx1VMQuxGUQY5V7EIaVoEsUffc= github.com/gofiber/fiber/v2 v2.49.0 h1:xBVG2c66GDcWfww56xHvMn52Q0XX7UrSvjj6MD8/5EE= github.com/gofiber/fiber/v2 v2.49.0/go.mod h1:oxpt7wQaEYgdDmq7nMxCGhilYicBLFnZ+jQSJcQDlSE= +github.com/gofiber/fiber/v2 v2.49.1 h1:0W2DRWevSirc8pJl4o8r8QejDR8TV6ZUCawHxwbIdOk= +github.com/gofiber/fiber/v2 v2.49.1/go.mod h1:nPUeEBUeeYGgwbDm59Gp7vS8MDyScL6ezr/Np9A13WU= github.com/gofiber/swagger v0.1.12 h1:1Son/Nc1teiIftsVu6UHqXnJ3uf31pUzZO6XQDx3QYs= github.com/gofiber/swagger v0.1.12/go.mod h1:iOCNEt1gNTtlvCEKoxYX4agnZNtxlAjhujMKG6pmG74= +github.com/gofiber/swagger v0.1.13 h1:e7tMH/y34HIMklQ2+uv64Ai3E8TWCgbZyscIx+IzInE= +github.com/gofiber/swagger v0.1.13/go.mod h1:VtNHZdI5ksFlIR1R0vCcCX3/ruT8p9xNRX44958rsao= github.com/gofiber/template v1.8.0 h1:jOn9RhxYO7rHTHGLNRpYfDoVm8b5GH/dtl15ZT5NifE= github.com/gofiber/template v1.8.0/go.mod h1:jf2w+ioGUS5swf5C/VK+FyE+DI19uz+vXHCX/TIAxIk= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= @@ -217,6 +226,7 @@ github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= +github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= @@ -331,6 +341,7 @@ github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORN github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= @@ -419,6 +430,7 @@ github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsT github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.2/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= +github.com/rivo/uniseg v0.4.3/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= @@ -463,17 +475,21 @@ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/swaggo/files/v2 v2.0.0 h1:hmAt8Dkynw7Ssz46F6pn8ok6YmGZqHSVLZ+HQM7i0kw= github.com/swaggo/files/v2 v2.0.0/go.mod h1:24kk2Y9NYEJ5lHuCra6iVwkMjIekMCaFq/0JQj66kyM= github.com/swaggo/swag v1.16.1 h1:fTNRhKstPKxcnoKsytm4sahr8FaYzUcT7i1/3nd/fBg= github.com/swaggo/swag v1.16.1/go.mod h1:9/LMvHycG3NFHfR6LwvikHv5iFvmPADQ359cKikGxto= +github.com/swaggo/swag v1.16.2 h1:28Pp+8DkQoV+HLzLx8RGJZXNGKbFqnuvSbAAtoxiY04= +github.com/swaggo/swag v1.16.2/go.mod h1:6YzXnDcpr0767iOejs318CwYkCQqyGer6BizOg03f+E= github.com/temoto/robotstxt v1.1.2 h1:W2pOjSJ6SWvldyEuiFXNxz3xZ8aiWX5LbfDiOFd7Fxg= github.com/temoto/robotstxt v1.1.2/go.mod h1:+1AmkuG3IYkh1kv0d2qEB9Le88ehNO0zwOr3ujewlOo= -github.com/tidwall/gjson v1.14.4 h1:uo0p8EbA09J7RQaflQ1aBRffTR7xedD2bcIVSYxLnkM= -github.com/tidwall/gjson v1.14.4/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/gjson v1.16.0 h1:SyXa+dsSPpUlcwEDuKuEBJEz5vzTvOea+9rjyYodQFg= +github.com/tidwall/gjson v1.16.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= +github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= @@ -487,6 +503,8 @@ github.com/valyala/fasthttp v1.45.0/go.mod h1:k2zXd82h/7UZc3VOdJ2WaUqt1uZ/XpXAfE github.com/valyala/fasthttp v1.47.0/go.mod h1:k2zXd82h/7UZc3VOdJ2WaUqt1uZ/XpXAfE9i+HBC3lA= github.com/valyala/fasthttp v1.48.0 h1:oJWvHb9BIZToTQS3MuQ2R3bJZiNSa2KiNdeI8A+79Tc= github.com/valyala/fasthttp v1.48.0/go.mod h1:k2zXd82h/7UZc3VOdJ2WaUqt1uZ/XpXAfE9i+HBC3lA= +github.com/valyala/fasthttp v1.49.0 h1:9FdvCpmxB74LH4dPb7IJ1cOSsluR07XG3I1txXWwJpE= +github.com/valyala/fasthttp v1.49.0/go.mod h1:k2zXd82h/7UZc3VOdJ2WaUqt1uZ/XpXAfE9i+HBC3lA= github.com/valyala/tcplisten v1.0.0 h1:rBHj/Xf+E1tRGZyWIWwJDiRY0zc1Js+CV5DqwacVSA8= github.com/valyala/tcplisten v1.0.0/go.mod h1:T0xQ8SeCZGxckz9qRXTfG43PvQ/mcWh7FwZEA7Ioqkc= github.com/yosssi/ace v0.0.5/go.mod h1:ALfIzm2vT7t5ZE7uoIZqF3TQ7SAOyupFZnkrF5id+K0= @@ -565,6 +583,7 @@ golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc= +golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -619,6 +638,8 @@ golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= golang.org/x/net v0.14.0 h1:BONx9s002vGdD9umnlX1Po8vOZmrgH34qlHcD1MfK14= golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= +golang.org/x/net v0.15.0 h1:ugBLEUaxABaB5AJqW9enI0ACdci2RUd4eP51NTBvuJ8= +golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -729,6 +750,8 @@ golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0 h1:eG7RXZHdqOJ1i+0lgLgCpSXAp6M3LYlAo6osgSi0xOM= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20201210144234-2321bbc49cbf/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -740,6 +763,8 @@ golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= golang.org/x/term v0.11.0 h1:F9tnn/DA/Im8nCwm+fX+1/eBwi4qFjRT++MhtVC4ZX0= golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU= +golang.org/x/term v0.12.0 h1:/ZfYdc3zq+q02Rv9vGqTeSItdzZTSNDmfTi0mBAuidU= +golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -749,6 +774,7 @@ golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= @@ -757,6 +783,8 @@ golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.12.0 h1:k+n5B8goJNdU7hSvEtMUz3d1Q6D/XW4COJSJR6fN0mc= golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -822,6 +850,8 @@ golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= golang.org/x/tools v0.12.0 h1:YW6HUoUmYBpwSgyaGaZq1fHjrBjX1rlpZ54T6mu2kss= golang.org/x/tools v0.12.0/go.mod h1:Sc0INKfu04TlqNoRA1hgpFZbhYXHPr4V5DzpSBTPqQM= +golang.org/x/tools v0.13.0 h1:Iey4qkscZuv0VvIt8E0neZjtPVQFSc870HQ448QgEmQ= +golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -864,8 +894,9 @@ google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7 google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= +google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= @@ -969,6 +1000,7 @@ google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGj google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.27.1 h1:SnqbnDw1V7RiZcXPx5MEeqPv2s79L9i7BJUlG/+RurQ= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= @@ -993,6 +1025,7 @@ gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/pages/api.go b/pages/api.go index 5f34fed..c1bebe1 100644 --- a/pages/api.go +++ b/pages/api.go @@ -2,6 +2,7 @@ package pages import ( "codeberg.org/aryak/mozhi/utils" + libmozhi "codeberg.org/aryak/libmozhi" "github.com/gofiber/fiber/v2" ) @@ -9,14 +10,14 @@ import ( // // @Summary Show list of available source languages for engine // @Param engine query string true "Engine name" -// @Success 200 {object} utils.List +// @Success 200 {object} libmozhi.List // @Router /api/source_languages [get] func HandleSourceLanguages(c *fiber.Ctx) error { engine := utils.Sanitize(c.Query("engine"), "alpha") if engine == "" { return fiber.NewError(fiber.StatusBadRequest, "engine is a required query string.") } - data, err := utils.LangList(engine, "sl") + data, err := libmozhi.LangList(engine, "sl") if err != nil { return fiber.NewError(fiber.StatusInternalServerError, err.Error()) } @@ -27,14 +28,14 @@ func HandleSourceLanguages(c *fiber.Ctx) error { // // @Summary Show list of available target languages for engine // @Param engine query string true "Engine name" -// @Success 200 {object} utils.List +// @Success 200 {object} libmozhi.List // @Router /api/target_languages [get] func HandleTargetLanguages(c *fiber.Ctx) error { engine := utils.Sanitize(c.Query("engine"), "alpha") if engine == "" { return fiber.NewError(fiber.StatusBadRequest, "engine is a required query string.") } - data, err := utils.LangList(engine, "tl") + data, err := libmozhi.LangList(engine, "tl") if err != nil { return fiber.NewError(fiber.StatusInternalServerError, err.Error()) } @@ -55,7 +56,7 @@ func HandleTTS(c *fiber.Ctx) error { if engine == "" || text == "" || lang == "" { return fiber.NewError(fiber.StatusBadRequest, "engine, lang, text are required query strings.") } - data, err := utils.TTS(engine, lang, text) + data, err := libmozhi.TTS(engine, lang, text) if err != nil { return fiber.NewError(fiber.StatusInternalServerError, err.Error()) } @@ -66,12 +67,12 @@ func HandleTTS(c *fiber.Ctx) error { // HandleTranslate godoc // // @Summary Translate text -// @Description When engine is set to all, it will return an array of utils.LangOut. +// @Description When engine is set to all, it will return an array of libmozhi.LangOut. // @Param engine query string true "Engine name" // @Param from query string true "Source language" // @Param to query string true "Target language" // @Param text query string true "Text being translated" -// @Success 200 {object} utils.LangOut +// @Success 200 {object} libmozhi.LangOut // @Router /api/translate [get] func HandleTranslate(c *fiber.Ctx) error { engine := utils.Sanitize(c.Query("engine"), "alpha") @@ -81,13 +82,13 @@ func HandleTranslate(c *fiber.Ctx) error { if engine == "" || from == "" || to == "" || text == "" { return fiber.NewError(fiber.StatusBadRequest, "from, to, engine, text are required query strings.") } - var dataarr []utils.LangOut - var data utils.LangOut + var dataarr []libmozhi.LangOut + var data libmozhi.LangOut var err error if engine == "all" { - dataarr = utils.TranslateAll(to, from, text) + dataarr = libmozhi.TranslateAll(to, from, text) } else { - data, err = utils.Translate(engine, to, from, text) + data, err = libmozhi.Translate(engine, to, from, text) if err != nil { return fiber.NewError(fiber.StatusInternalServerError, err.Error()) } diff --git a/pages/index.go b/pages/index.go index 6ea9468..ba4cc45 100644 --- a/pages/index.go +++ b/pages/index.go @@ -4,8 +4,6 @@ import ( "fmt" "runtime" - "codeberg.org/aryak/mozhi/utils" - "github.com/gofiber/fiber/v2" ) @@ -22,7 +20,6 @@ func HandleIndex(c *fiber.Ctx) error { return c.Render("index", fiber.Map{ "host": c.Hostname(), - "version": utils.Version(), "fiberversion": fiber.Version, "goversion": runtime.Version(), }) diff --git a/serve/serve.go b/serve/serve.go index 6622cc5..639974a 100644 --- a/serve/serve.go +++ b/serve/serve.go @@ -8,8 +8,6 @@ import ( _ "codeberg.org/aryak/mozhi/docs" "codeberg.org/aryak/mozhi/pages" - "codeberg.org/aryak/mozhi/utils" - "github.com/gofiber/fiber/v2" "github.com/gofiber/fiber/v2/middleware/compress" //"github.com/gofiber/fiber/v2/middleware/limiter" @@ -100,7 +98,6 @@ func Serve(port string) { api.Get("/tts", pages.HandleTTS) api.Get("/version", func(c *fiber.Ctx) error { return c.JSON(fiber.Map{ - "version": utils.Version(), "fiberversion": fiber.Version, "goversion": runtime.Version(), }) diff --git a/utils/autodetect.go b/utils/autodetect.go deleted file mode 100644 index 79b891b..0000000 --- a/utils/autodetect.go +++ /dev/null @@ -1,19 +0,0 @@ -package utils - -import "os" - -func AutoDetectWatson(query string) (string, error) { - json := []byte(`{"text":"` + query + `"}`) - watsonOut := PostRequest("https://www.ibm.com/demos/live/watson-language-translator/api/translate/detect", json) - gjsonArr := watsonOut.Get("payload.languages.0.language.language").Array() - answer := gjsonArr[0].String() - return answer, nil -} - -func AutoDetectLibreTranslate(query string) (string, error) { - json := []byte(`{"q":"` + query + `"}`) - libreTranslateOut := PostRequest(os.Getenv("MOZHI_LIBRETRANSLATE_URL")+"/detect", json) - gjsonArr := libreTranslateOut.Get("0.language").Array() - answer := gjsonArr[0].String() - return answer, nil -} diff --git a/utils/engines.go b/utils/engines.go deleted file mode 100644 index 95bc812..0000000 --- a/utils/engines.go +++ /dev/null @@ -1,383 +0,0 @@ -package utils - -import ( - "errors" - "io" - "net/http" - "os" - "regexp" - "strings" - - "github.com/OwO-Network/gdeeplx" - "github.com/gocolly/colly" - "github.com/google/go-querystring/query" - "github.com/google/uuid" -) - -var ddgVqd string - -func TranslateGoogle(to string, from string, text string) (LangOut, error) { - ToOrig := to - FromOrig := from - // For some reason google uses no for norwegian instead of nb like the rest of the translators. This is for the All function primarily - if to == "nb" { - to = "no" - } else if from == "nb" { - to = "no" - } - var ToValid bool - var FromValid bool - for _, v := range LangListGoogle("sl") { - if v.Id == to { - ToValid = true - } - if v.Id == from { - FromValid = true - } - if FromValid == true && ToValid == true { - break - } - } - if ToValid != true { - return LangOut{}, errors.New("Target Language Code invalid") - } - if FromValid != true { - return LangOut{}, errors.New("Source language code invalid") - } - - UserAgent, ok := os.LookupEnv("MOZHI_USER_AGENT") - if !ok { - UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36" - } - sc := colly.NewCollector(colly.AllowedDomains("translate.google.com"), colly.UserAgent(UserAgent)) - var answer string - sc.OnHTML("div.result-container", func(e *colly.HTMLElement) { - answer = e.Text - }) - type Options struct { - To string `url:"tl"` - UI string `url:"hl"` - From string `url:"sl"` - Text string `url:"q"` - } - opt := Options{to, to, from, text} - v, _ := query.Values(opt) - url := "https://translate.google.com/m?" + v.Encode() - sc.Visit(url) - var langout LangOut - langout.OutputText = answer - langout.Engine = "google" - langout.SourceLang = FromOrig - langout.TargetLang = ToOrig - return langout, nil -} - -func TranslateReverso(to string, from string, query string) (LangOut, error) { - ToOrig := to - FromOrig := from - var ToValid bool - var FromValid bool - for _, v := range LangListReverso("sl") { - if v.Id == to { - ToValid = true - } - if v.Id == from { - FromValid = true - } - if FromValid == true && ToValid == true { - break - } - } - if ToValid != true { - return LangOut{}, errors.New("Target language code invalid") - } - if FromValid != true { - return LangOut{}, errors.New("Source language code invalid") - } - json := []byte(`{ "format": "text", "from": "` + from + `", "to": "` + to + `", "input":"` + query + `", "options": {"sentenceSplitter": false, "origin":"translation.web", contextResults: false, languageDetection: true} }`) - reversoOut := PostRequest("https://api.reverso.net/translate/v1/translation", json) - gjsonArr := reversoOut.Get("translation").Array() - var langout LangOut - langout.OutputText = gjsonArr[0].String() - langout.Engine = "reverso" - langout.SourceLang = FromOrig - langout.TargetLang = ToOrig - return langout, nil -} - -func TranslateLibreTranslate(to string, from string, query string) (LangOut, error) { - ToOrig := to - FromOrig := from - var ToValid bool - var FromValid bool - for _, v := range LangListLibreTranslate("sl") { - if v.Id == to { - ToValid = true - } - if v.Id == from { - FromValid = true - } - if FromValid == true && ToValid == true { - break - } - } - if ToValid != true { - return LangOut{}, errors.New("Target language code invalid") - } - if FromValid != true { - return LangOut{}, errors.New("Source language code invalid") - } - json := []byte(`{"q":"` + query + `","source":"` + from + `","target":"` + to + `"}`) - // TODO: Make it configurable - libreTranslateOut := PostRequest(os.Getenv("MOZHI_LIBRETRANSLATE_URL")+"/translate", json) - gjsonArr := libreTranslateOut.Get("translatedText").Array() - var langout LangOut - langout.OutputText = gjsonArr[0].String() - langout.Engine = "libretranslate" - langout.SourceLang = FromOrig - langout.TargetLang = ToOrig - if from == "auto" { - langout.AutoDetect, _ = AutoDetectLibreTranslate(query) - } - return langout, nil -} - -func TranslateWatson(to string, from string, query string) (LangOut, error) { - FromOrig := from - ToOrig := to - var ToValid bool - var FromValid bool - for _, v := range LangListWatson("sl") { - if v.Id == to { - ToValid = true - } - if v.Id == from { - FromValid = true - } - if FromValid == true && ToValid == true { - break - } - } - if ToValid != true { - return LangOut{}, errors.New("Target language code invalid") - } - if FromValid != true { - return LangOut{}, errors.New("Source language code invalid") - } - var langout LangOut - if from == "auto" { - langout.AutoDetect, _ = AutoDetectWatson(query) - from = langout.AutoDetect - } - json := []byte(`{"text":"` + query + `","source":"` + from + `","target":"` + to + `"}`) - watsonOut := PostRequest("https://www.ibm.com/demos/live/watson-language-translator/api/translate/text", json) - gjsonArr := watsonOut.Get("payload.translations.0.translation").Array() - langout.OutputText = gjsonArr[0].String() - langout.Engine = "watson" - langout.SourceLang = FromOrig - langout.TargetLang = ToOrig - return langout, nil -} - -func TranslateMyMemory(to string, from string, text string) (LangOut, error) { - FromOrig := from - ToOrig := to - var ToValid bool - var FromValid bool - for _, v := range LangListMyMemory("sl") { - if v.Id == to { - ToValid = true - } - if v.Id == from { - FromValid = true - } - if FromValid == true && ToValid == true { - break - } - } - if ToValid != true { - return LangOut{}, errors.New("Target language code invalid") - } - if FromValid != true { - return LangOut{}, errors.New("Source language code invalid") - } - type Options struct { - Translate string `url:"langpair"` - Text string `url:"q"` - } - opt := Options{from + "|" + to, text} - v, _ := query.Values(opt) - myMemoryOut := GetRequest("https://api.mymemory.translated.net/get?" + v.Encode()) - gjsonArr := myMemoryOut.Get("responseData.translatedText").Array() - var langout LangOut - langout.OutputText = gjsonArr[0].String() - langout.Engine = "mymemory" - langout.SourceLang = FromOrig - langout.TargetLang = ToOrig - return langout, nil -} - -func TranslateYandex(to string, from string, text string) (LangOut, error) { - FromOrig := from - ToOrig := to - var ToValid bool - var FromValid bool - for _, v := range LangListYandex("sl") { - if v.Id == to { - ToValid = true - } - if v.Id == from { - FromValid = true - } - if FromValid == true && ToValid == true { - break - } - } - if ToValid != true { - return LangOut{}, errors.New("Target language code invalid") - } - if FromValid != true { - return LangOut{}, errors.New("Source language code invalid") - } - type Options struct { - Translate string `url:"lang"` - Text string `url:"text"` - Srv string `url:"srv"` - Id string `url:"sid"` - } - uuidWithHyphen := uuid.New() - uuid := strings.Replace(uuidWithHyphen.String(), "-", "", -1) - opt := Options{from + "-" + to, text, "android", uuid + "-0-0"} - v, _ := query.Values(opt) - - yandexOut := PostRequest("https://translate.yandex.net/api/v1/tr.json/translate?"+v.Encode(), []byte("")) - gjsonArr := yandexOut.Get("text.0").Array() - var langout LangOut - langout.OutputText = gjsonArr[0].String() - langout.Engine = "yandex" - langout.SourceLang = FromOrig - langout.TargetLang = ToOrig - return langout, nil -} - -func TranslateDeepl(to string, from string, text string) (LangOut, error) { - FromOrig := from - ToOrig := to - var ToValid bool - var FromValid bool - for _, v := range LangListDeepl("sl") { - if v.Id == to { - ToValid = true - } - if v.Id == from { - FromValid = true - } - if FromValid == true && ToValid == true { - break - } - } - if ToValid != true { - return LangOut{}, errors.New("Target language code invalid") - } - if FromValid != true { - return LangOut{}, errors.New("Source language code invalid") - } - answer, err := gdeeplx.Translate(text, from, to, 0) - if err != nil { - return LangOut{}, errors.New("failed") - } - answer1 := answer.(map[string]interface{}) - ans := answer1["data"].(string) - var langout LangOut - langout.OutputText = ans - langout.Engine = "deepl" - if from == "auto" { - langout.AutoDetect = strings.ToLower(answer1["detected_lang"].(string)) - } - langout.SourceLang = FromOrig - langout.TargetLang = ToOrig - return langout, nil -} - -func ddgVqdUpdate() { - r, err := http.NewRequest("GET", "https://duckduckgo.com/?q=translate", nil) - if err != nil { - panic(err) - } - - UserAgent, ok := os.LookupEnv("MOZHI_USER_AGENT") - if !ok { - UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36" - } - r.Header.Set("User-Agent", UserAgent) - - client := &http.Client{} - res, err := client.Do(r) - if err != nil { - panic(err) - } - - defer res.Body.Close() - - body, err := io.ReadAll(res.Body) - if err != nil { - panic(err) - } - re := regexp.MustCompile(`vqd="([^"]*)"`) - match := re.FindStringSubmatch(string(body)) - ddgVqd = match[1] -} - -func TranslateDuckDuckGo(to string, from string, query string) (LangOut, error) { - FromOrig := from - ToOrig := to - var ToValid bool - var FromValid bool - for _, v := range LangListDuckDuckGo("sl") { - if v.Id == to { - ToValid = true - } - if v.Id == from { - FromValid = true - } - if FromValid == true && ToValid == true { - break - } - } - if ToValid != true { - return LangOut{}, errors.New("Target language code invalid") - } - if FromValid != true { - return LangOut{}, errors.New("Source language code invalid") - } - var url string - var langout LangOut - ddgVqdUpdate() - if from == "auto" { - url = "https://duckduckgo.com/translation.js?vqd=" + ddgVqd + "&query=translate&to=" + to - } else { - url = "https://duckduckgo.com/translation.js?vqd=" + ddgVqd + "&query=translate&to=" + to + "&from=" + from - } - duckDuckGoOut := PostRequest(url, []byte(query)) - gjsonArr := duckDuckGoOut.Get("translated").Array() - langout.OutputText = gjsonArr[0].String() - langout.Engine = "duckduckgo" - langout.SourceLang = FromOrig - langout.TargetLang = ToOrig - if from == "auto" { - langout.AutoDetect = duckDuckGoOut.Get("detected_language").String() - } - return langout, nil -} - -func TranslateAll(to string, from string, query string) []LangOut { - engines := []string{"reverso", "google", "libre", "watson", "mymemory", "yandex", "deepl", "duckduckgo"} - langout := []LangOut{} - for i := 0; i < len(engines); i++ { - data, err := Translate(engines[i], to, from, query) - if err == nil { - langout = append(langout, data) - } - } - return langout -} diff --git a/utils/langlist-deepl.go b/utils/langlist-deepl.go deleted file mode 100644 index 6480023..0000000 --- a/utils/langlist-deepl.go +++ /dev/null @@ -1,135 +0,0 @@ -package utils - -func LangListDeepl(listType string) []List { - // IDs got from deepl.com/translator - // Every time you change language, the # will get updated with the lang code. - ListData := []List{ - { - Id: "bg", - Name: "Bulgarian", - }, - { - Id: "zh", - Name: "Chinese (Simplified)", - }, - { - Id: "cs", - Name: "Czech", - }, - { - Id: "da", - Name: "Danish", - }, - { - Id: "nl", - Name: "Dutch", - }, - { - Id: "en", - Name: "English", - }, - { - Id: "et", - Name: "Estonian", - }, - { - Id: "fi", - Name: "Finnish", - }, - { - Id: "fr", - Name: "French", - }, - { - Id: "de", - Name: "Germany", - }, - { - Id: "el", - Name: "Greek", - }, - { - Id: "hu", - Name: "Hungarian", - }, - { - Id: "id", - Name: "Indonesian", - }, - { - Id: "it", - Name: "Italian", - }, - { - Id: "ja", - Name: "Japanese", - }, - { - Id: "ko", - Name: "Korean", - }, - { - Id: "lv", - Name: "Latvian", - }, - { - Id: "lt", - Name: "Lithuanian", - }, - { - Id: "nb", - Name: "Norwegian", - }, - { - Id: "pl", - Name: "Polish", - }, - { - Id: "pt", - Name: "Portugese", - }, - { - Id: "ro", - Name: "Romanian", - }, - { - Id: "ru", - Name: "Russian", - }, - { - Id: "sk", - Name: "Slovak", - }, - { - Id: "sl", - Name: "Slovenian", - }, - { - Id: "es", - Name: "Spanish", - }, - { - Id: "sv", - Name: "Swedish", - }, - { - Id: "tr", - Name: "Turkish", - }, - { - Id: "uk", - Name: "Ukrainian", - }, - } - var ListD []List - if listType == "sl" { - auto := []List{{ - Id: "auto", - Name: "Detect Language", - }} - ListD = append(append([]List{}, auto...), ListData...) - } else { - ListD = ListData - } - return ListD -} diff --git a/utils/langlist-duckduckgo.go b/utils/langlist-duckduckgo.go deleted file mode 100644 index 49dff48..0000000 --- a/utils/langlist-duckduckgo.go +++ /dev/null @@ -1,531 +0,0 @@ -package utils - -func LangListDuckDuckGo(listType string) []List { - // DuckDuckGo is just Bing translate but easier to scrape :) - // Converted json of https://github.com/plainheart/bing-translate-api/blob/master/src/lang.json to this format - ListData := []List{ - { - Id: "af", - Name: "Afrikaans", - }, - { - Id: "sq", - Name: "Albanian", - }, - { - Id: "am", - Name: "Amharic", - }, - { - Id: "ar", - Name: "Arabic", - }, - { - Id: "hy", - Name: "Armenian", - }, - { - Id: "as", - Name: "Assamese", - }, - { - Id: "az", - Name: "Azerbaijani", - }, - { - Id: "bn", - Name: "Bangla", - }, - { - Id: "ba", - Name: "Bashkir", - }, - { - Id: "eu", - Name: "Basque", - }, - { - Id: "bs", - Name: "Bosnian", - }, - { - Id: "bg", - Name: "Bulgarian", - }, - { - Id: "yue", - Name: "Cantonese (Traditional)", - }, - { - Id: "ca", - Name: "Catalan", - }, - { - Id: "lzh", - Name: "Chinese (Literary)", - }, - { - Id: "zh-Hans", - Name: "Chinese Simplified", - }, - { - Id: "zh-Hant", - Name: "Chinese Traditional", - }, - { - Id: "hr", - Name: "Croatian", - }, - { - Id: "cs", - Name: "Czech", - }, - { - Id: "da", - Name: "Danish", - }, - { - Id: "prs", - Name: "Dari", - }, - { - Id: "dv", - Name: "Divehi", - }, - { - Id: "nl", - Name: "Dutch", - }, - { - Id: "en", - Name: "English", - }, - { - Id: "et", - Name: "Estonian", - }, - { - Id: "fo", - Name: "Faroese", - }, - { - Id: "fj", - Name: "Fijian", - }, - { - Id: "fil", - Name: "Filipino", - }, - { - Id: "fi", - Name: "Finnish", - }, - { - Id: "fr", - Name: "French", - }, - { - Id: "fr-CA", - Name: "French (Canada)", - }, - { - Id: "gl", - Name: "Galician", - }, - { - Id: "lug", - Name: "Ganda", - }, - { - Id: "ka", - Name: "Georgian", - }, - { - Id: "de", - Name: "German", - }, - { - Id: "el", - Name: "Greek", - }, - { - Id: "gu", - Name: "Gujarati", - }, - { - Id: "ht", - Name: "Haitian Creole", - }, - { - Id: "ha", - Name: "Hausa", - }, - { - Id: "he", - Name: "Hebrew", - }, - { - Id: "hi", - Name: "Hindi", - }, - { - Id: "mww", - Name: "Hmong Daw", - }, - { - Id: "hu", - Name: "Hungarian", - }, - { - Id: "is", - Name: "Icelandic", - }, - { - Id: "ig", - Name: "Igbo", - }, - { - Id: "id", - Name: "Indonesian", - }, - { - Id: "ikt", - Name: "Inuinnaqtun", - }, - { - Id: "iu", - Name: "Inuktitut", - }, - { - Id: "iu-Latn", - Name: "Inuktitut (Latin)", - }, - { - Id: "ga", - Name: "Irish", - }, - { - Id: "it", - Name: "Italian", - }, - { - Id: "ja", - Name: "Japanese", - }, - { - Id: "kn", - Name: "Kannada", - }, - { - Id: "kk", - Name: "Kazakh", - }, - { - Id: "km", - Name: "Khmer", - }, - { - Id: "rw", - Name: "Kinyarwanda", - }, - { - Id: "tlh-Latn", - Name: "Klingon (Latin)", - }, - { - Id: "gom", - Name: "Konkani", - }, - { - Id: "ko", - Name: "Korean", - }, - { - Id: "ku", - Name: "Kurdish (Central)", - }, - { - Id: "kmr", - Name: "Kurdish (Northern)", - }, - { - Id: "ky", - Name: "Kyrgyz", - }, - { - Id: "lo", - Name: "Lao", - }, - { - Id: "lv", - Name: "Latvian", - }, - { - Id: "ln", - Name: "Lingala", - }, - { - Id: "lt", - Name: "Lithuanian", - }, - { - Id: "dsb", - Name: "Lower Sorbian", - }, - { - Id: "mk", - Name: "Macedonian", - }, - { - Id: "mai", - Name: "Maithili", - }, - { - Id: "mg", - Name: "Malagasy", - }, - { - Id: "ms", - Name: "Malay", - }, - { - Id: "ml", - Name: "Malayalam", - }, - { - Id: "mt", - Name: "Maltese", - }, - { - Id: "mr", - Name: "Marathi", - }, - { - Id: "mn-Cyrl", - Name: "Mongolian (Cyrillic)", - }, - { - Id: "mn-Mong", - Name: "Mongolian (Traditional)", - }, - { - Id: "my", - Name: "Myanmar (Burmese)", - }, - { - Id: "mi", - Name: "Māori", - }, - { - Id: "ne", - Name: "Nepali", - }, - { - Id: "nb", - Name: "Norwegian", - }, - { - Id: "nya", - Name: "Nyanja", - }, - { - Id: "or", - Name: "Odia", - }, - { - Id: "ps", - Name: "Pashto", - }, - { - Id: "fa", - Name: "Persian", - }, - { - Id: "pl", - Name: "Polish", - }, - { - Id: "pt", - Name: "Portuguese (Brazil)", - }, - { - Id: "pt-PT", - Name: "Portuguese (Portugal)", - }, - { - Id: "pa", - Name: "Punjabi", - }, - { - Id: "otq", - Name: "Querétaro Otomi", - }, - { - Id: "ro", - Name: "Romanian", - }, - { - Id: "run", - Name: "Rundi", - }, - { - Id: "ru", - Name: "Russian", - }, - { - Id: "sm", - Name: "Samoan", - }, - { - Id: "sr-Cyrl", - Name: "Serbian (Cyrillic)", - }, - { - Id: "sr-Latn", - Name: "Serbian (Latin)", - }, - { - Id: "st", - Name: "Sesotho", - }, - { - Id: "nso", - Name: "Sesotho sa Leboa", - }, - { - Id: "tn", - Name: "Setswana", - }, - { - Id: "sn", - Name: "Shona", - }, - { - Id: "sd", - Name: "Sindhi", - }, - { - Id: "si", - Name: "Sinhala", - }, - { - Id: "sk", - Name: "Slovak", - }, - { - Id: "sl", - Name: "Slovenian", - }, - { - Id: "so", - Name: "Somali", - }, - { - Id: "es", - Name: "Spanish", - }, - { - Id: "sw", - Name: "Swahili", - }, - { - Id: "sv", - Name: "Swedish", - }, - { - Id: "ty", - Name: "Tahitian", - }, - { - Id: "ta", - Name: "Tamil", - }, - { - Id: "tt", - Name: "Tatar", - }, - { - Id: "te", - Name: "Telugu", - }, - { - Id: "th", - Name: "Thai", - }, - { - Id: "bo", - Name: "Tibetan", - }, - { - Id: "ti", - Name: "Tigrinya", - }, - { - Id: "to", - Name: "Tongan", - }, - { - Id: "tr", - Name: "Turkish", - }, - { - Id: "tk", - Name: "Turkmen", - }, - { - Id: "uk", - Name: "Ukrainian", - }, - { - Id: "hsb", - Name: "Upper Sorbian", - }, - { - Id: "ur", - Name: "Urdu", - }, - { - Id: "ug", - Name: "Uyghur", - }, - { - Id: "uz", - Name: "Uzbek (Latin)", - }, - { - Id: "vi", - Name: "Vietnamese", - }, - { - Id: "cy", - Name: "Welsh", - }, - { - Id: "xh", - Name: "Xhosa", - }, - { - Id: "yo", - Name: "Yoruba", - }, - { - Id: "yua", - Name: "Yucatec Maya", - }, - { - Id: "zu", - Name: "Zulu", - }, - } - var ListD []List - if listType == "sl" { - auto := []List{{ - Id: "auto", - Name: "Detect Language", - }} - ListD = append(append([]List{}, auto...), ListData...) - } else { - ListD = ListData - } - return ListD -} diff --git a/utils/langlist-google.go b/utils/langlist-google.go deleted file mode 100644 index ff76d24..0000000 --- a/utils/langlist-google.go +++ /dev/null @@ -1,550 +0,0 @@ -package utils - -func LangListGoogle(listType string) []List { - // IDs got from original simplytranslate-web and trial and error. Usually first three letters of language. - ListData := []List{ - { - Id: "af", - Name: "Afrikaans", - }, - { - Id: "sq", - Name: "Albanian", - }, - { - Id: "am", - Name: "Amharic", - }, - { - Id: "ar", - Name: "Arabic", - }, - { - Id: "hy", - Name: "Armenian", - }, - { - Id: "as", - Name: "Assamese", - }, - { - Id: "ay", - Name: "Aymara", - }, - { - Id: "az", - Name: "Azerbaijani", - }, - { - Id: "bm", - Name: "Bambara", - }, - { - Id: "eu", - Name: "Basque", - }, - { - Id: "be", - Name: "Belarusian", - }, - { - Id: "bn", - Name: "Bengali", - }, - { - Id: "bho", - Name: "Bhojpuri", - }, - { - Id: "bs", - Name: "Bosnian", - }, - { - Id: "bg", - Name: "Bulgarian", - }, - { - Id: "ca", - Name: "Catalan", - }, - { - Id: "ceb", - Name: "Cebuano", - }, - { - Id: "ny", - Name: "Chichewa", - }, - { - Id: "zh", - Name: "Chinese (Simplified)", - }, - { - Id: "zh-TW", - Name: "Chinese (Traditional)", - }, - { - Id: "co", - Name: "Corsican", - }, - { - Id: "hr", - Name: "Croatian", - }, - { - Id: "cs", - Name: "Czech", - }, - { - Id: "da", - Name: "Danish", - }, - { - Id: "dv", - Name: "Dhivehi", - }, - { - Id: "doi", - Name: "Dogri", - }, - { - Id: "nl", - Name: "Dutch", - }, - { - Id: "en", - Name: "English", - }, - { - Id: "eo", - Name: "Esperanto", - }, - { - Id: "et", - Name: "Estonian", - }, - { - Id: "ee", - Name: "Ewe", - }, - { - Id: "tl", - Name: "Filipino", - }, - { - Id: "fi", - Name: "Finnish", - }, - { - Id: "fr", - Name: "French", - }, - { - Id: "fy", - Name: "Frisian", - }, - { - Id: "gl", - Name: "Galician", - }, - { - Id: "ka", - Name: "Georgian", - }, - { - Id: "de", - Name: "German", - }, - { - Id: "el", - Name: "Greek", - }, - { - Id: "gn", - Name: "Guarani", - }, - { - Id: "gu", - Name: "Gujarati", - }, - { - Id: "ht", - Name: "Haitian Creole", - }, - { - Id: "ha", - Name: "Hausa", - }, - { - Id: "haw", - Name: "Hawaiian", - }, - { - Id: "iw", - Name: "Hebrew", - }, - { - Id: "hi", - Name: "Hindi", - }, - { - Id: "hmn", - Name: "Hmong", - }, - { - Id: "hu", - Name: "Hungarian", - }, - { - Id: "is", - Name: "Icelandic", - }, - { - Id: "ig", - Name: "Igbo", - }, - { - Id: "ilo", - Name: "Ilocano", - }, - { - Id: "id", - Name: "Indonesian", - }, - { - Id: "ga", - Name: "Irish", - }, - { - Id: "it", - Name: "Italian", - }, - { - Id: "ja", - Name: "Japanese", - }, - { - Id: "jw", - Name: "Javanese", - }, - { - Id: "kn", - Name: "Kannada", - }, - { - Id: "kk", - Name: "Kazakh", - }, - { - Id: "km", - Name: "Khmer", - }, - { - Id: "rw", - Name: "Kinyarwanda", - }, - { - Id: "gom", - Name: "Konkani", - }, - { - Id: "ko", - Name: "Korean", - }, - { - Id: "kri", - Name: "Krio", - }, - { - Id: "ku", - Name: "Kurdish (Kurmanji)", - }, - { - Id: "ckb", - Name: "Kurdish (Sorani)", - }, - { - Id: "ky", - Name: "Kyrgyz", - }, - { - Id: "lo", - Name: "Lao", - }, - { - Id: "la", - Name: "Latin", - }, - { - Id: "lv", - Name: "Latvian", - }, - { - Id: "ln", - Name: "Lingala", - }, - { - Id: "lt", - Name: "Lithuanian", - }, - { - Id: "lg", - Name: "Luganda", - }, - { - Id: "lb", - Name: "Luxembourgish", - }, - { - Id: "mk", - Name: "Macedonian", - }, - { - Id: "mai", - Name: "Maithili", - }, - { - Id: "mg", - Name: "Malagasy", - }, - { - Id: "ms", - Name: "Malay", - }, - { - Id: "ml", - Name: "Malayalam", - }, - { - Id: "mt", - Name: "Maltese", - }, - { - Id: "mi", - Name: "Maori", - }, - { - Id: "mr", - Name: "Marathi", - }, - { - Id: "mni-Mtei", - Name: "Meiteilon (Manipuri)", - }, - { - Id: "lus", - Name: "Mizo", - }, - { - Id: "mn", - Name: "Mongolian", - }, - { - Id: "my", - Name: "Myanmar (Burmese)", - }, - { - Id: "ne", - Name: "Nepali", - }, - { - Id: "no", - Name: "Norwegian", - }, - { - Id: "or", - Name: "Odia (Oriya)", - }, - { - Id: "om", - Name: "Oromo", - }, - { - Id: "ps", - Name: "Pashto", - }, - { - Id: "fa", - Name: "Persian", - }, - { - Id: "pl", - Name: "Polish", - }, - { - Id: "pt", - Name: "Portuguese", - }, - { - Id: "pa", - Name: "Punjabi", - }, - { - Id: "qu", - Name: "Quechua", - }, - { - Id: "ro", - Name: "Romanian", - }, - { - Id: "ru", - Name: "Russian", - }, - { - Id: "sm", - Name: "Samoan", - }, - { - Id: "sa", - Name: "Sanskrit", - }, - { - Id: "gd", - Name: "Scots Gaelic", - }, - { - Id: "nso", - Name: "Sepedi", - }, - { - Id: "sr", - Name: "Serbian", - }, - { - Id: "st", - Name: "Sesotho", - }, - { - Id: "sn", - Name: "Shona", - }, - { - Id: "sd", - Name: "Sindhi", - }, - { - Id: "si", - Name: "Sinhala", - }, - { - Id: "sk", - Name: "Slovak", - }, - { - Id: "sl", - Name: "Slovenian", - }, - { - Id: "so", - Name: "Somali", - }, - { - Id: "es", - Name: "Spanish", - }, - { - Id: "su", - Name: "Sundanese", - }, - { - Id: "sw", - Name: "Swahili", - }, - { - Id: "sv", - Name: "Swedish", - }, - { - Id: "tg", - Name: "Tajik", - }, - { - Id: "ta", - Name: "Tamil", - }, - { - Id: "tt", - Name: "Tatar", - }, - { - Id: "te", - Name: "Telugu", - }, - { - Id: "th", - Name: "Thai", - }, - { - Id: "ti", - Name: "Tigrinya", - }, - { - Id: "ts", - Name: "Tsonga", - }, - { - Id: "tr", - Name: "Turkish", - }, - { - Id: "tk", - Name: "Turkmen", - }, - { - Id: "ak", - Name: "Twi", - }, - { - Id: "uk", - Name: "Ukrainian", - }, - { - Id: "ur", - Name: "Urdu", - }, - { - Id: "ug", - Name: "Uyghur", - }, - { - Id: "uz", - Name: "Uzbek", - }, - { - Id: "vi", - Name: "Vietnamese", - }, - { - Id: "cy", - Name: "Welsh", - }, - { - Id: "xh", - Name: "Xhosa", - }, - { - Id: "yi", - Name: "Yiddish", - }, - { - Id: "yo", - Name: "Yoruba", - }, - { - Id: "zu", - Name: "Zulu", - }, - } - var ListD []List - if listType == "sl" { - auto := []List{{ - Id: "auto", - Name: "Detect Language", - }} - ListD = append(append([]List{}, auto...), ListData...) - } else { - ListD = ListData - } - return ListD -} diff --git a/utils/langlist-libre.go b/utils/langlist-libre.go deleted file mode 100644 index b4bfdfa..0000000 --- a/utils/langlist-libre.go +++ /dev/null @@ -1,85 +0,0 @@ -package utils - -func LangListLibreTranslate(listType string) []List { - ListData := []List{ - { - Id: "en", - Name: "English", - }, - { - Id: "ar", - Name: "Arabic", - }, - { - Id: "zh", - Name: "Chinese", - }, - { - Id: "fr", - Name: "French", - }, - { - Id: "de", - Name: "German", - }, - { - Id: "hi", - Name: "Hindi", - }, - { - Id: "id", - Name: "Indonesian", - }, - { - Id: "ga", - Name: "Irish", - }, - { - Id: "it", - Name: "Italian", - }, - { - Id: "ja", - Name: "Japanese", - }, - { - Id: "ko", - Name: "Korean", - }, - { - Id: "pl", - Name: "Polish", - }, - { - Id: "pt", - Name: "Portuguese", - }, - { - Id: "ru", - Name: "Russian", - }, - { - Id: "es", - Name: "Spanish", - }, - { - Id: "tr", - Name: "Turkish", - }, - { - Id: "vi", - Name: "Vietnamese", - }, - } - var ListD []List - if listType == "sl" { - auto := []List{{ - Id: "auto", - Name: "Detect Language", - }} - ListD = append(append([]List{}, auto...), ListData...) - } else { - ListD = ListData - } - return ListD -} diff --git a/utils/langlist-mymemory.go b/utils/langlist-mymemory.go deleted file mode 100644 index cbca658..0000000 --- a/utils/langlist-mymemory.go +++ /dev/null @@ -1,563 +0,0 @@ -package utils - -func LangListMyMemory(listType string) []List { - ListData := []List{ - { - Id: "af", - Name: "Afrikaans", - }, - { - Id: "sq", - Name: "Albanian", - }, - { - Id: "am", - Name: "Amharic", - }, - { - Id: "ar", - Name: "Arabic", - }, - { - Id: "hy", - Name: "Armenian", - }, - { - Id: "az", - Name: "Azerbaijani", - }, - { - Id: "bjs", - Name: "Bajan", - }, - { - Id: "rm", - Name: "Balkan Gipsy", - }, - { - Id: "eu", - Name: "Basque", - }, - { - Id: "bem", - Name: "Bemba", - }, - { - Id: "bn", - Name: "Bengali", - }, - { - Id: "be", - Name: "Bielarus", - }, - { - Id: "bi", - Name: "Bislama", - }, - { - Id: "bs", - Name: "Bosnian", - }, - { - Id: "br", - Name: "Breton", - }, - { - Id: "bg", - Name: "Bulgarian", - }, - { - Id: "my", - Name: "Burmese", - }, - { - Id: "ca", - Name: "Catalan", - }, - { - Id: "ceb", - Name: "Cebuano", - }, - { - Id: "ch", - Name: "Chamorro", - }, - { - Id: "zh", - Name: "Chinese (Simplified)", - }, - { - Id: "zh-TW", - Name: "Chinese (Traditional)", - }, - { - Id: "zdj", - Name: "Comorian", - }, - { - Id: "cop", - Name: "Coptic", - }, - { - Id: "hr", - Name: "Croatian", - }, - { - Id: "cs", - Name: "Czech", - }, - { - Id: "da", - Name: "Danish", - }, - { - Id: "nl", - Name: "Dutch", - }, - { - Id: "dz", - Name: "Dzongkha", - }, - { - Id: "en", - Name: "English", - }, - { - Id: "eo", - Name: "Esperanto", - }, - { - Id: "et", - Name: "Estonian", - }, - { - Id: "fnG", - Name: "Fanagalo", - }, - { - Id: "fo", - Name: "Faroese", - }, - { - Id: "fi", - Name: "Finnish", - }, - { - Id: "fr", - Name: "French", - }, - { - Id: "gl", - Name: "Galician", - }, - { - Id: "ka", - Name: "Georgian", - }, - { - Id: "de", - Name: "German", - }, - { - Id: "el", - Name: "Greek", - }, - { - Id: "grc", - Name: "Greek (Classical)", - }, - { - Id: "gu", - Name: "Gujarati", - }, - { - Id: "ha", - Name: "Hausa", - }, - { - Id: "haw", - Name: "Hawaiian", - }, - { - Id: "he", - Name: "Hebrew", - }, - { - Id: "hi", - Name: "Hindi", - }, - { - Id: "hu", - Name: "Hungarian", - }, - { - Id: "is", - Name: "Icelandic", - }, - { - Id: "id", - Name: "Indonesian", - }, - { - Id: "kl", - Name: "Inuktitut (Greenland)", - }, - { - Id: "ga", - Name: "Irish Gaelic", - }, - { - Id: "it", - Name: "Italian", - }, - { - Id: "ja", - Name: "Japanese", - }, - { - Id: "jv", - Name: "Javanese", - }, - { - Id: "kea", - Name: "Kabuverdianu", - }, - { - Id: "kab", - Name: "Kabylian", - }, - { - Id: "kn", - Name: "Kannada", - }, - { - Id: "kk", - Name: "Kazakh", - }, - { - Id: "km", - Name: "Khmer", - }, - { - Id: "rw", - Name: "Kinyarwanda", - }, - { - Id: "rn", - Name: "Kirundi", - }, - { - Id: "ko", - Name: "Korean", - }, - { - Id: "ku", - Name: "Kurdish", - }, - { - Id: "ckb", - Name: "Kurdish Sorani", - }, - { - Id: "ky", - Name: "Kyrgyz", - }, - { - Id: "lo", - Name: "Lao", - }, - { - Id: "la", - Name: "Latin", - }, - { - Id: "lv", - Name: "Latvian", - }, - { - Id: "lt", - Name: "Lithuanian", - }, - { - Id: "lb", - Name: "Luxembourgish", - }, - { - Id: "mk", - Name: "Macedonian", - }, - { - Id: "mg", - Name: "Malagasy", - }, - { - Id: "ms", - Name: "Malay", - }, - { - Id: "dv", - Name: "Maldivian", - }, - { - Id: "mt", - Name: "Maltese", - }, - { - Id: "gv", - Name: "Manx Gaelic", - }, - { - Id: "mi", - Name: "Maori", - }, - { - Id: "mh", - Name: "Marshallese", - }, - { - Id: "men", - Name: "Mende", - }, - { - Id: "mn", - Name: "Mongolian", - }, - { - Id: "mfe", - Name: "Morisyen", - }, - { - Id: "ne", - Name: "Nepali", - }, - { - Id: "niu", - Name: "Niuean", - }, - { - Id: "no", - Name: "Norwegian", - }, - { - Id: "ny", - Name: "Nyanja", - }, - { - Id: "ur", - Name: "Pakistani", - }, - { - Id: "pau", - Name: "Palauan", - }, - { - Id: "pa", - Name: "Panjabi", - }, - { - Id: "pap", - Name: "Papiamentu", - }, - { - Id: "ps", - Name: "Pashto", - }, - { - Id: "fa", - Name: "Persian", - }, - { - Id: "pis", - Name: "Pijin", - }, - { - Id: "pl", - Name: "Polish", - }, - { - Id: "pt", - Name: "Portuguese", - }, - { - Id: "pot", - Name: "Potawatomi", - }, - { - Id: "qu", - Name: "Quechua", - }, - { - Id: "ro", - Name: "Romanian", - }, - { - Id: "ru", - Name: "Russian", - }, - { - Id: "sm", - Name: "Samoan", - }, - { - Id: "sg", - Name: "Sango", - }, - { - Id: "gd", - Name: "Scots Gaelic", - }, - { - Id: "sr", - Name: "Serbian", - }, - { - Id: "sn", - Name: "Shona", - }, - { - Id: "si", - Name: "Sinhala", - }, - { - Id: "sk", - Name: "Slovak", - }, - { - Id: "sl", - Name: "Slovenian", - }, - { - Id: "so", - Name: "Somali", - }, - { - Id: "st", - Name: "Sotho Southern", - }, - { - Id: "es", - Name: "Spanish", - }, - { - Id: "srn", - Name: "Sranan Tongo", - }, - { - Id: "sw", - Name: "Swahili", - }, - { - Id: "sv", - Name: "Swedish", - }, - { - Id: "syc", - Name: "Syriac (Aramic)", - }, - { - Id: "tl", - Name: "Tagalog", - }, - { - Id: "tg", - Name: "Tajik", - }, - { - Id: "tmh", - Name: "Tamashek (Tuareg)", - }, - { - Id: "ta", - Name: "Tamil", - }, - { - Id: "te", - Name: "Telugu", - }, - { - Id: "tet", - Name: "Tetum", - }, - { - Id: "th", - Name: "Thai", - }, - { - Id: "bo", - Name: "Tibetan", - }, - { - Id: "ti", - Name: "Tigrinya", - }, - { - Id: "tpi", - Name: "Tok Pisin", - }, - { - Id: "tkl", - Name: "Tokelauan", - }, - { - Id: "to", - Name: "Tongan", - }, - { - Id: "tn", - Name: "Tswana", - }, - { - Id: "tr", - Name: "Turkish", - }, - { - Id: "tk", - Name: "Turkmen", - }, - { - Id: "tvl", - Name: "Tuvaluan", - }, - { - Id: "uk", - Name: "Ukrainian", - }, - { - Id: "ppk", - Name: "Uma", - }, - { - Id: "uz", - Name: "Uzbek", - }, - { - Id: "vi", - Name: "Vietnamese", - }, - { - Id: "wls", - Name: "Wallisian", - }, - { - Id: "cy", - Name: "Welsh", - }, - { - Id: "wo", - Name: "Wolof", - }, - { - Id: "xh", - Name: "Xhosa", - }, - { - Id: "yi", - Name: "Yiddish", - }, - { - Id: "zu", - Name: "Zulu", - }, - } - return ListData -} diff --git a/utils/langlist-reverso.go b/utils/langlist-reverso.go deleted file mode 100644 index 6cb29c4..0000000 --- a/utils/langlist-reverso.go +++ /dev/null @@ -1,112 +0,0 @@ -package utils - -func LangListReverso(listType string) []List { - // IDs got from original simplytranslate-web and trial and error. Usually first three letters of language. - ListData := []List{ - { - Id: "ar", - Name: "Arabic", - }, - { - Id: "zh", - Name: "Chinese (Simplified)", - }, - { - Id: "cs", - Name: "Czech", - }, - { - Id: "da", - Name: "Danish", - }, - { - Id: "nl", - Name: "Dutch", - }, - { - Id: "en", - Name: "English", - }, - { - Id: "fr", - Name: "French", - }, - { - Id: "de", - Name: "German", - }, - { - Id: "el", - Name: "Greek", - }, - { - Id: "he", - Name: "Hebrew", - }, - { - Id: "hi", - Name: "Hindi", - }, - { - Id: "hu", - Name: "Hungarian", - }, - { - Id: "it", - Name: "Italian", - }, - { - Id: "ja", - Name: "Japanese", - }, - { - Id: "ko", - Name: "Korean", - }, - { - Id: "per", - Name: "Persian", - }, - { - Id: "pl", - Name: "Polish", - }, - { - Id: "pt", - Name: "Portugese", - }, - { - Id: "ro", - Name: "Romanian", - }, - { - Id: "ru", - Name: "Russian", - }, - { - Id: "sk", - Name: "Slovak", - }, - { - Id: "es", - Name: "Spanish", - }, - { - Id: "sv", - Name: "Swedish", - }, - { - Id: "th", - Name: "Thai", - }, - { - Id: "tr", - Name: "Turkish", - }, - { - Id: "uk", - Name: "Ukrainian", - }, - } - return ListData -} diff --git a/utils/langlist-watson.go b/utils/langlist-watson.go deleted file mode 100644 index 61e6658..0000000 --- a/utils/langlist-watson.go +++ /dev/null @@ -1,246 +0,0 @@ -package utils - -func LangListWatson(listType string) []List { - // IDs got from https://www.loc.gov/standards/iso639-2/php/code_list.php and tested to make sure they work. Exceptions fr-CA zh-CN/TW - ListData := []List{ - { - Id: "ar", - Name: "Arabic", - }, - { - Id: "ba", - Name: "Basque", - }, - { - Id: "bn", - Name: "Bengali", - }, - { - Id: "bs", - Name: "Bosnian", - }, - { - Id: "bg", - Name: "Bulgarian", - }, - { - Id: "ca", - Name: "Catalan", - }, - { - Id: "zh", - Name: "Chinese (Simplified)", - }, - { - Id: "zh-TW", - Name: "Chinese (Traditional)", - }, - { - Id: "hr", - Name: "Croatian", - }, - { - Id: "cs", - Name: "Czech", - }, - { - Id: "da", - Name: "Danish", - }, - { - Id: "nl", - Name: "Dutch", - }, - { - Id: "en", - Name: "English", - }, - { - Id: "et", - Name: "Estonian", - }, - { - Id: "fi", - Name: "Finnish", - }, - { - Id: "fr", - Name: "French", - }, - { - Id: "fr-CA", - Name: "Canadian French", - }, - { - Id: "de", - Name: "German", - }, - { - Id: "el", - Name: "Greek", - }, - { - Id: "gu", - Name: "Gujarati", - }, - { - Id: "he", - Name: "Hebrew", - }, - { - Id: "hi", - Name: "Hindi", - }, - { - Id: "hu", - Name: "Hungarian", - }, - { - Id: "id", - Name: "Indonesian", - }, - { - Id: "ga", - Name: "Irish", - }, - { - Id: "it", - Name: "Italian", - }, - { - Id: "ja", - Name: "Japanese", - }, - { - Id: "kn", - Name: "Kannada", - }, - { - Id: "ko", - Name: "Korean", - }, - { - Id: "lv", - Name: "Latvian", - }, - { - Id: "lt", - Name: "Lithuanian", - }, - { - Id: "ms", - Name: "Malay", - }, - { - Id: "ml", - Name: "Malayalam", - }, - { - Id: "mt", - Name: "Maltese", - }, - { - Id: "mr", - Name: "Marathi", - }, - { - Id: "cnr", - Name: "Montenegrin", - }, - { - Id: "ne", - Name: "Nepali", - }, - { - Id: "nb", - Name: "Norwegian", - }, - { - Id: "pl", - Name: "Polish", - }, - { - Id: "pt", - Name: "Portugese", - }, - { - Id: "pa", - Name: "Punjabi", - }, - { - Id: "ro", - Name: "Romanian", - }, - { - Id: "ru", - Name: "Russian", - }, - { - Id: "sr", - Name: "Serbian", - }, - { - Id: "si", - Name: "Sinhalese", - }, - { - Id: "sk", - Name: "Slovak", - }, - { - Id: "sl", - Name: "Slovenian", - }, - { - Id: "es", - Name: "Spanish", - }, - { - Id: "sv", - Name: "Swedish", - }, - { - Id: "ta", - Name: "Tamil", - }, - { - Id: "te", - Name: "Telugu", - }, - { - Id: "th", - Name: "Thai", - }, - { - Id: "tr", - Name: "Turkish", - }, - { - Id: "uk", - Name: "Ukrainian", - }, - { - Id: "ur", - Name: "Urdu", - }, - { - Id: "vi", - Name: "Vietnamese", - }, - { - Id: "cy", - Name: "Welsh", - }, - } - var ListD []List - if listType == "sl" { - auto := []List{{ - Id: "auto", - Name: "Detect Language", - }} - ListD = append(append([]List{}, auto...), ListData...) - } else { - ListD = ListData - } - return ListD -} diff --git a/utils/langlist-yandex.go b/utils/langlist-yandex.go deleted file mode 100644 index e8fd7cf..0000000 --- a/utils/langlist-yandex.go +++ /dev/null @@ -1,415 +0,0 @@ -package utils - -func LangListYandex(listType string) []List { - ListData := []List{ - { - Id: "af", - Name: "Afrikaans", - }, - { - Id: "sq", - Name: "Albanian", - }, - { - Id: "am", - Name: "Amharic", - }, - { - Id: "ar", - Name: "Arabic", - }, - { - Id: "hy", - Name: "Armenian", - }, - { - Id: "az", - Name: "Azerbaijani", - }, - { - Id: "ba", - Name: "Bashkir", - }, - { - Id: "eu", - Name: "Basque", - }, - { - Id: "be", - Name: "Belarusian", - }, - { - Id: "bn", - Name: "Bengali", - }, - { - Id: "bs", - Name: "Bosnian", - }, - { - Id: "bg", - Name: "Bulgarian", - }, - { - Id: "my", - Name: "Burmese", - }, - { - Id: "ca", - Name: "Catalan", - }, - { - Id: "ceb", - Name: "Cebuano", - }, - { - Id: "zh", - Name: "Chinese", - }, - { - Id: "cv", - Name: "Chuvash", - }, - { - Id: "hr", - Name: "Croatian", - }, - { - Id: "cs", - Name: "Czech", - }, - { - Id: "da", - Name: "Danish", - }, - { - Id: "nl", - Name: "Dutch", - }, - { - Id: "sjn", - Name: "Elvish (Sindarin)", - }, - { - Id: "emj", - Name: "Emoji", - }, - { - Id: "en", - Name: "English", - }, - { - Id: "eo", - Name: "Esperanto", - }, - { - Id: "et", - Name: "Estonian", - }, - { - Id: "fi", - Name: "Finnish", - }, - { - Id: "fr", - Name: "French", - }, - { - Id: "gl", - Name: "Galician", - }, - { - Id: "ka", - Name: "Georgian", - }, - { - Id: "de", - Name: "German", - }, - { - Id: "el", - Name: "Greek", - }, - { - Id: "gu", - Name: "Gujarati", - }, - { - Id: "ht", - Name: "Haitian", - }, - { - Id: "he", - Name: "Hebrew", - }, - { - Id: "mrj", - Name: "Hill Mari", - }, - { - Id: "hi", - Name: "Hindi", - }, - { - Id: "hu", - Name: "Hungarian", - }, - { - Id: "is", - Name: "Icelandic", - }, - { - Id: "id", - Name: "Indonesian", - }, - { - Id: "ga", - Name: "Irish", - }, - { - Id: "it", - Name: "Italian", - }, - { - Id: "ja", - Name: "Japanese", - }, - { - Id: "jv", - Name: "Javanese", - }, - { - Id: "kn", - Name: "Kannada", - }, - { - Id: "kazlat", - Name: "Kazakh (Latin)", - }, - { - Id: "kk", - Name: "Kazakh", - }, - { - Id: "km", - Name: "Khmer", - }, - { - Id: "ko", - Name: "Korean", - }, - { - Id: "ky", - Name: "Kyrgyz", - }, - { - Id: "lo", - Name: "Lao", - }, - { - Id: "la", - Name: "Latin", - }, - { - Id: "lv", - Name: "Latvian", - }, - { - Id: "lt", - Name: "Lithuanian", - }, - { - Id: "lb", - Name: "Luxembourgish", - }, - { - Id: "mk", - Name: "Macedonian", - }, - { - Id: "mg", - Name: "Malagasy", - }, - { - Id: "ms", - Name: "Malay", - }, - { - Id: "ml", - Name: "Malayalam", - }, - { - Id: "mt", - Name: "Maltese", - }, - { - Id: "mi", - Name: "Maori", - }, - { - Id: "mr", - Name: "Marathi", - }, - { - Id: "mhr", - Name: "Mari", - }, - { - Id: "mn", - Name: "Mongolian", - }, - { - Id: "ne", - Name: "Nepali", - }, - { - Id: "no", - Name: "Norwegian", - }, - { - Id: "pap", - Name: "Papiamento", - }, - { - Id: "fa", - Name: "Persian", - }, - { - Id: "pl", - Name: "Polish", - }, - { - Id: "pt-BR", - Name: "Portuguese (Brazilian)", - }, - { - Id: "pt", - Name: "Portuguese", - }, - { - Id: "pa", - Name: "Punjabi", - }, - { - Id: "ro", - Name: "Romanian", - }, - { - Id: "ru", - Name: "Russian", - }, - { - Id: "gd", - Name: "Scottish Gaelic", - }, - { - Id: "sr-Latn", - Name: "Serbian (Latin)", - }, - { - Id: "sr", - Name: "Serbian", - }, - { - Id: "si", - Name: "Sinhalese", - }, - { - Id: "sk", - Name: "Slovak", - }, - { - Id: "sl", - Name: "Slovenian", - }, - { - Id: "es", - Name: "Spanish", - }, - { - Id: "su", - Name: "Sundanese", - }, - { - Id: "sw", - Name: "Swahili", - }, - { - Id: "sv", - Name: "Swedish", - }, - { - Id: "tl", - Name: "Tagalog", - }, - { - Id: "tg", - Name: "Tajik", - }, - { - Id: "ta", - Name: "Tamil", - }, - { - Id: "tt", - Name: "Tatar", - }, - { - Id: "te", - Name: "Telugu", - }, - { - Id: "th", - Name: "Thai", - }, - { - Id: "tr", - Name: "Turkish", - }, - { - Id: "udm", - Name: "Udmurt", - }, - { - Id: "uk", - Name: "Ukrainian", - }, - { - Id: "ur", - Name: "Urdu", - }, - { - Id: "uzbcyr", - Name: "Uzbek (Cyrillic)", - }, - { - Id: "uz", - Name: "Uzbek", - }, - { - Id: "vi", - Name: "Vietnamese", - }, - { - Id: "cy", - Name: "Welsh", - }, - { - Id: "xh", - Name: "Xhosa", - }, - { - Id: "sah", - Name: "Yakut", - }, - { - Id: "yi", - Name: "Yiddish", - }, - { - Id: "zu", - Name: "Zulu", - }, - } - return ListData -} diff --git a/utils/main.go b/utils/main.go deleted file mode 100644 index 2e861b5..0000000 --- a/utils/main.go +++ /dev/null @@ -1,103 +0,0 @@ -package utils - -import ( - "errors" - "os" -) - -type List struct { - Name string - Id string -} -type LangOut struct { - Engine string `json:"engine"` - AutoDetect string `json:"detected"` - OutputText string `json:"translated-text"` - SourceLang string `json:"source_language"` - TargetLang string `json:"target_language"` -} - -func EnvTrueNoExist(env string) bool { - if _, ok := os.LookupEnv(env); ok == false || os.Getenv(env) == "true" { - return true - } - return false -} - -func LangList(engine string, listType string) ([]List, error) { - var data []List - if listType != "sl" && listType != "tl" { - return []List{}, errors.New("list type invalid: either give tl for target languages or sl for source languages.") - } - if engine == "google" && EnvTrueNoExist("MOZHI_GOOGLE_ENABLED") { - data = LangListGoogle(listType) - } else if engine == "libre" && EnvTrueNoExist("MOZHI_LIBRETRANSLATE_ENABLED") { - if EnvTrueNoExist("MOZHI_LIBRETRANSLATE_URL") { - return []List{}, errors.New("Please set MOZHI_LIBRETRANSLATE_URL if you want to use libretranslate. Example: MOZHI_LIBRETRANSLATE_URL=https://lt.psf.lt") - } - data = LangListLibreTranslate(listType) - } else if engine == "reverso" && EnvTrueNoExist("MOZHI_REVERSO_ENABLED") { - data = LangListReverso(listType) - } else if engine == "deepl" && EnvTrueNoExist("MOZHI_DEEPL_ENABLED") { - data = LangListDeepl(listType) - } else if engine == "watson" && EnvTrueNoExist("MOZHI_WATSON_ENABLED") { - data = LangListWatson(listType) - } else if engine == "yandex" && EnvTrueNoExist("MOZHI_YANDEX_ENABLED") { - data = LangListYandex(listType) - } else if engine == "mymemory" && EnvTrueNoExist("MOZHI_MYMEMORY_ENABLED") { - data = LangListMyMemory(listType) - } else if engine == "duckduckgo" && EnvTrueNoExist("MOZHI_DUCKDUCKGO_ENABLED") { - data = LangListDuckDuckGo(listType) - } else { - return []List{}, errors.New("Engine does not exist or has been disabled.") - } - return data, nil -} - -// General function to translate stuff so there is no need for a huge if-block everywhere -func Translate(engine string, to string, from string, text string) (LangOut, error) { - var err error - var data LangOut - if engine == "google" && EnvTrueNoExist("MOZHI_GOOGLE_ENABLED") { - data, err = TranslateGoogle(to, from, text) - } else if engine == "libre" && EnvTrueNoExist("MOZHI_LIBRETRANSLATE_ENABLED") { - if os.Getenv("MOZHI_LIBRETRANSLATE_URL") == "" { - return LangOut{}, errors.New("Please set MOZHI_LIBRETRANSLATE_URL if you want to use libretranslate. Example: MOZHI_LIBRETRANSLATE_URL=https://lt.psf.lt") - } - data, err = TranslateLibreTranslate(to, from, text) - } else if engine == "reverso" && EnvTrueNoExist("MOZHI_REVERSO_ENABLED") { - data, err = TranslateReverso(to, from, text) - } else if engine == "deepl" && EnvTrueNoExist("MOZHI_DEEPL_ENABLED") { - data, err = TranslateDeepl(to, from, text) - } else if engine == "watson" && EnvTrueNoExist("MOZHI_WATSON_ENABLED") { - data, err = TranslateWatson(to, from, text) - } else if engine == "yandex" && EnvTrueNoExist("MOZHI_YANDEX_ENABLED") { - data, err = TranslateYandex(to, from, text) - } else if engine == "mymemory" && EnvTrueNoExist("MOZHI_MYMEMORY_ENABLED") { - data, err = TranslateMyMemory(to, from, text) - } else if engine == "duckduckgo" && EnvTrueNoExist("MOZHI_DUCKDUCKGO_ENABLED") { - data, err = TranslateDuckDuckGo(to, from, text) - } else { - return LangOut{}, errors.New("Engine does not exist or has been disabled.") - } - if err != nil { - return LangOut{}, err - } - return data, nil -} - -func TTS(engine string, lang string, text string) ([]byte, error) { - var err error - var data []byte - if engine == "google" && EnvTrueNoExist("MOZHI_GOOGLE_ENABLED") { - data, err = TTSGoogle(lang, text) - } else if engine == "reverso" && EnvTrueNoExist("MOZHI_REVERSO_ENABLED") { - data, err = TTSReverso(lang, text) - } else { - return []byte(""), errors.New("Engine does not exist and/or doesn't support TTS and/or has been disabled.") - } - if err != nil { - return []byte(""), err - } - return data, nil -} diff --git a/utils/requests.go b/utils/requests.go deleted file mode 100644 index da98d66..0000000 --- a/utils/requests.go +++ /dev/null @@ -1,72 +0,0 @@ -package utils - -import ( - "bytes" - "io" - "net/http" - "os" - - "github.com/tidwall/gjson" -) - -func PostRequest(url string, data []byte) gjson.Result { - bodyReader := bytes.NewReader(data) - r, err := http.NewRequest(http.MethodPost, url, bodyReader) - if err != nil { - panic(err) - } - - UserAgent, ok := os.LookupEnv("MOZHI_USER_AGENT") - if !ok { - UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36" - } - // r.Header.Set("Accept", "application/vnd.github.v3+json") - r.Header.Set("Content-Type", "application/json") - r.Header.Set("User-Agent", UserAgent) - - client := &http.Client{} - res, err := client.Do(r) - if err != nil { - panic(err) - } - - defer res.Body.Close() - - body, err := io.ReadAll(res.Body) - if err != nil { - panic(err) - } - jsonified := gjson.Parse(string(body)) - - return jsonified -} - -func GetRequest(url string) gjson.Result { - r, err := http.NewRequest("GET", url, nil) - if err != nil { - panic(err) - } - - UserAgent, ok := os.LookupEnv("MOZHI_USER_AGENT") - if !ok { - UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36" - } - // r.Header.Set("Content-Type", "application/json") - r.Header.Set("User-Agent", UserAgent) - - client := &http.Client{} - res, err := client.Do(r) - if err != nil { - panic(err) - } - - defer res.Body.Close() - - body, err := io.ReadAll(res.Body) - if err != nil { - panic(err) - } - jsonified := gjson.Parse(string(body)) - - return jsonified -} diff --git a/utils/retrieve.go b/utils/retrieve.go deleted file mode 100644 index d3d3e05..0000000 --- a/utils/retrieve.go +++ /dev/null @@ -1,87 +0,0 @@ -package utils - -//import ( -// "github.com/gocolly/colly" -// "os" -// "strings" -//) -// -//type List struct { -// Name string -// Id string -//} -//// To get new language lists for google yandex and libertranslate. -//func LangListGoogle(listType string) []List { -// UserAgent, ok := os.LookupEnv("MOZHI_USER_AGENT") -// if !ok { -// UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36" -// } -// sc := colly.NewCollector(colly.AllowedDomains("translate.google.com"), colly.UserAgent(UserAgent)) -// var ListData []List -// sc.OnHTML("div.root-container", func(e *colly.HTMLElement) { -// e.ForEach("div.language-item", func(i int, el *colly.HTMLElement) { -// var ListInfo List -// ListInfo.Name = el.ChildText("a") -// if listType == "tl" { -// ListInfo.Id = strings.TrimPrefix(strings.TrimSuffix(el.ChildAttr("a", "href"), "&hl=en-US"), "./m?sl=en&tl=") -// } else { -// ListInfo.Id = strings.TrimPrefix(strings.TrimSuffix(el.ChildAttr("a", "href"), "&tl=en&hl=en-US"), "./m?sl=") -// } -// ListData = append(ListData, ListInfo) -// }) -// }) -// url := "https://translate.google.com/m?sl=en&tl=en&hl=en-US&mui=" + listType -// sc.Visit(url) -// return ListData -//} -//func LangListLibreTranslate(listType string) []List { -// // TODO: Make it configurable -// libreTranslateOut := PostRequest("https://translate.argosopentech.com/languages", []byte("")) -// gjsonArr := libreTranslateOut.Array() -// var ListData []List -// for _, r := range gjsonArr { -// code := r.Get("code").String() -// name := r.Get("name").String() -// -// ListData = append(ListData, List{Id: code, Name: name}) -// } -// if listType == "sl" { -// auto := List{ -// Id: "auto", -// Name: "Detect Language", -// } -// ListData = append(ListData, auto) -// } -// return ListData -//} -//func LangListYandex(listType string) []List { -// UserAgent, ok := os.LookupEnv("MOZHI_USER_AGENT") -// if !ok { -// UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36" -// } -// sc := colly.NewCollector(colly.AllowedDomains("localhost:8000"), colly.UserAgent(UserAgent)) -// var ListData []List -// sc.OnHTML("table.langs", func(e *colly.HTMLElement) { -// if listType == "sl" { -// e.ForEach("select[name='from'] option", func(i int, el *colly.HTMLElement) { -// var ListInfo List -// ListInfo.Name = el.Text -// ListInfo.Id = el.Attr("value") -// ListData = append(ListData, ListInfo) -// }) -// } else { -// e.ForEach("select[name='to'] option", func(i int, el *colly.HTMLElement) { -// var ListInfo List -// ListInfo.Name = el.Text -// ListInfo.Id = el.Attr("value") -// ListData = append(ListData, ListInfo) -// }) -// -// } -// }) -// // Static version of translate.yandex.net nojs/mobile version -// url := "http://localhost:8000/index.html" -// sc.Visit(url) -// return ListData -//} -// diff --git a/utils/tts.go b/utils/tts.go deleted file mode 100644 index ad0a988..0000000 --- a/utils/tts.go +++ /dev/null @@ -1,155 +0,0 @@ -package utils - -import ( - "context" - "encoding/base64" - "os" - - "github.com/carlmjohnson/requests" - "github.com/google/go-querystring/query" -) - -type ReversoTTS struct { - Id string - Voice string -} - -func TTSGoogle(lang string, text string) ([]byte, error) { - type Options struct { - Lang string `url:"tl"` - Text string `url:"q"` - Client string `url:"client"` - } - opt := Options{lang, text, "tw-ob"} - v, _ := query.Values(opt) - - var file string - url := "https://translate.google.com/translate_tts?" + v.Encode() - err := requests. - URL(url). - ToString(&file). - Fetch(context.Background()) - if err != nil { - return []byte(""), err - } - return []byte(file), nil -} - -func TTSReverso(lang string, text string) ([]byte, error) { - TTSData := []ReversoTTS{ - // http://voice.reverso.net/RestPronunciation.svc/v1/output=json/GetAvailableVoices with randomized deduplication - { - Id: "ar", - Voice: "Mehdi22k", - }, - { - Id: "zh", - Voice: "Lulu22k", - }, - { - Id: "cz", - Voice: "Eliska22k", - }, - { - Id: "dk", - Voice: "Mette22k", - }, - { - Id: "nl", - Voice: "Daan22k", - }, - { - Id: "en", - Voice: "Will22k", - }, - { - Id: "fr", - Voice: "Margaux22k", - }, - { - Id: "de", - Voice: "Andreas22k", - }, - { - Id: "gr", - Voice: "Dimitris22k", - }, - { - Id: "heb", - Voice: "he-IL-Asaf", - }, - { - Id: "it", - Voice: "Chiara22k", - }, - { - Id: "jp", - Voice: "Sakura22k", - }, - { - Id: "kr", - Voice: "Minji22k", - }, - { - Id: "pl", - Voice: "Monika22k", - }, - { - Id: "pt", - Voice: "Celia22k", - }, - { - Id: "ro", - Voice: "ro-RO-Andrei", - }, - { - Id: "ru", - Voice: "Alyona22k", - }, - { - Id: "es", - Voice: "Antonio22k", - }, - { - Id: "se", - Voice: "Erik22k", - }, - { - Id: "tr", - Voice: "Ipek22k", - }, - } - // https://voice.reverso.net/RestPronunciation.svc/v1/output=json/GetVoiceStream/voiceName=Lulu22k?voiceSpeed=80&inputText=6K%20V6aqM Base64 input text - text2 := base64.StdEncoding.EncodeToString([]byte(text)) - var voice string - for _, s := range TTSData { - if s.Id == lang { - voice = s.Voice - break - } - } - - type Options struct { - VoiceSpeed int `url:"voiceSpeed"` - Text string `url:"inputText"` - } - opt := Options{80, text2} - v, _ := query.Values(opt) - - var file string - url := "https://voice.reverso.net/RestPronunciation.svc/v1/output=json/GetVoiceStream/voiceName=" + voice + "?" + v.Encode() - - UserAgent, ok := os.LookupEnv("MOZHI_USER_AGENT") - if !ok { - UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36" - } - err := requests. - URL(url). - ToString(&file). - UserAgent(UserAgent). - Fetch(context.Background()) - if err != nil { - return []byte(""), err - } - return []byte(file), nil -} diff --git a/utils/version.go b/utils/version.go deleted file mode 100644 index 39b6090..0000000 --- a/utils/version.go +++ /dev/null @@ -1,19 +0,0 @@ -package utils - -import ( - "runtime/debug" -) - -var Branch = "Alpha" - -// Version returns the git commit hash of the current build. Taken from https://git.vern.cc/pjals/bestofbot. -func Version() string { - if info, ok := debug.ReadBuildInfo(); ok { - for _, setting := range info.Settings { - if setting.Key == "vcs.revision" { - return setting.Value[:8] - } - } - } - return "unknown, please build with Go 1.13+ or use Git" -}