mirror of
https://codeberg.org/aryak/mozhi
synced 2024-11-23 09:32:58 +05:30
add all engine suppor to translate api
This commit is contained in:
parent
dae465a210
commit
75f94266d7
3
TODO.md
3
TODO.md
@ -1,11 +1,10 @@
|
||||
# TODO
|
||||
- Create a web interface
|
||||
- Proper Error handling for requests.go
|
||||
- Use struct instead of string in many places
|
||||
- Tell which language Detect Language chose
|
||||
- Add speech to text with Vosk perhaps
|
||||
- Finish simplytranslate-py compatible API for translations
|
||||
- Alternative words
|
||||
- Dictionary
|
||||
- Use the TranslateServerWebui API instead of scraping Google Translate Legacy
|
||||
- ICIBA
|
||||
- Add speech to text with Vosk perhaps
|
||||
|
17
pages/api.go
17
pages/api.go
@ -67,14 +67,14 @@ func HandleTTS(c *fiber.Ctx) error {
|
||||
} else if lang == "" {
|
||||
return c.SendStatus(fiber.StatusBadRequest)
|
||||
}
|
||||
var data string
|
||||
var data []byte
|
||||
if engine == "google" {
|
||||
data = utils.TTSGoogle(lang, text)
|
||||
} else if engine == "reverso" {
|
||||
data = utils.TTSReverso(lang, text)
|
||||
}
|
||||
c.Set("Content-Type", "audio/mpeg")
|
||||
return c.Send([]byte(data))
|
||||
return c.Send(data)
|
||||
}
|
||||
func HandleTranslate(c *fiber.Ctx) error {
|
||||
engine := utils.Sanitize(c.Query("engine"), "alpha")
|
||||
@ -84,8 +84,9 @@ 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 data utils.LangOut
|
||||
var err error
|
||||
var data utils.LangOut
|
||||
var dataarr []utils.LangOut
|
||||
if engine == "google" {
|
||||
data, err = utils.TranslateGoogle(to, from, text)
|
||||
} else if engine == "libre" {
|
||||
@ -102,11 +103,15 @@ func HandleTranslate(c *fiber.Ctx) error {
|
||||
data, err = utils.TranslateMyMemory(to, from, text)
|
||||
} else if engine == "duckduckgo" {
|
||||
data, err = utils.TranslateDuckDuckGo(to, from, text)
|
||||
} else if engine == "all" {
|
||||
dataarr = utils.TranslateAll(to, from, text)
|
||||
}
|
||||
if err != nil {
|
||||
return fiber.NewError(fiber.StatusInternalServerError, err.Error())
|
||||
}
|
||||
data.SourceLang = from
|
||||
data.TargetLang = to
|
||||
return c.JSON(data)
|
||||
if engine == "all" {
|
||||
return c.JSON(dataarr)
|
||||
} else {
|
||||
return c.JSON(data)
|
||||
}
|
||||
}
|
||||
|
@ -11,13 +11,16 @@ import (
|
||||
)
|
||||
|
||||
type LangOut struct {
|
||||
OutputText string `json:"translated-text"`
|
||||
Engine string `json:"engine"`
|
||||
AutoDetect string `json:"detected"`
|
||||
OutputText string `json:"translated-text"`
|
||||
SourceLang string `json:"source_language"`
|
||||
TargetLang string `json:"target_language"`
|
||||
}
|
||||
|
||||
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"
|
||||
@ -65,9 +68,14 @@ func TranslateGoogle(to string, from string, text string) (LangOut, error) {
|
||||
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") {
|
||||
@ -92,9 +100,14 @@ func TranslateReverso(to string, from string, query string) (LangOut, error) {
|
||||
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") {
|
||||
@ -120,9 +133,14 @@ func TranslateLibreTranslate(to string, from string, query string) (LangOut, err
|
||||
gjsonArr := libreTranslateOut.Get("translatedText").Array()
|
||||
var langout LangOut
|
||||
langout.OutputText = gjsonArr[0].String()
|
||||
langout.Engine = "libretranslate"
|
||||
langout.SourceLang = FromOrig
|
||||
langout.TargetLang = ToOrig
|
||||
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") {
|
||||
@ -147,9 +165,14 @@ func TranslateWatson(to string, from string, query string) (LangOut, error) {
|
||||
gjsonArr := watsonOut.Get("payload.translations.0.translation").Array()
|
||||
var langout LangOut
|
||||
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") {
|
||||
@ -179,9 +202,14 @@ func TranslateMyMemory(to string, from string, text string) (LangOut, error) {
|
||||
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") {
|
||||
@ -216,9 +244,14 @@ func TranslateYandex(to string, from string, text string) (LangOut, error) {
|
||||
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") {
|
||||
@ -246,9 +279,14 @@ func TranslateDeepl(to string, from string, text string) (LangOut, error) {
|
||||
ans := answer1["data"].(string)
|
||||
var langout LangOut
|
||||
langout.OutputText = ans
|
||||
langout.Engine = "deepl"
|
||||
langout.SourceLang = FromOrig
|
||||
langout.TargetLang = ToOrig
|
||||
return langout, nil
|
||||
}
|
||||
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") {
|
||||
@ -272,9 +310,12 @@ func TranslateDuckDuckGo(to string, from string, query string) (LangOut, error)
|
||||
gjsonArr := duckDuckGoOut.Get("translated").Array()
|
||||
var langout LangOut
|
||||
langout.OutputText = gjsonArr[0].String()
|
||||
langout.Engine = "duckduckgo"
|
||||
langout.SourceLang = FromOrig
|
||||
langout.TargetLang = ToOrig
|
||||
return langout, nil
|
||||
}
|
||||
func TranslateAll(to string, from string, query string) (string, string, string, string, string, string, string, string) {
|
||||
func TranslateAll(to string, from string, query string) ([]LangOut) {
|
||||
reverso, _ := TranslateReverso(to, from, query)
|
||||
google, _ := TranslateGoogle(to, from, query)
|
||||
libretranslate, _ := TranslateLibreTranslate(to, from, query)
|
||||
@ -283,5 +324,7 @@ func TranslateAll(to string, from string, query string) (string, string, string,
|
||||
yandex, _ := TranslateYandex(to, from, query)
|
||||
deepl, _ := TranslateDeepl(to, from, query)
|
||||
duckduckgo, _ := TranslateDuckDuckGo(to, from, query)
|
||||
return google.OutputText, reverso.OutputText, libretranslate.OutputText, watson.OutputText, mymemory.OutputText, yandex.OutputText, deepl.OutputText, duckduckgo.OutputText
|
||||
|
||||
langout := []LangOut{reverso, google, libretranslate, watson, mymemory, yandex, deepl, duckduckgo}
|
||||
return langout
|
||||
}
|
||||
|
@ -13,7 +13,7 @@ type ReversoTTS struct {
|
||||
Voice string
|
||||
}
|
||||
|
||||
func TTSGoogle(lang string, text string) string {
|
||||
func TTSGoogle(lang string, text string) []byte {
|
||||
type Options struct {
|
||||
Lang string `url:"tl"`
|
||||
Text string `url:"q"`
|
||||
@ -31,9 +31,9 @@ func TTSGoogle(lang string, text string) string {
|
||||
if err != nil {
|
||||
file = ""
|
||||
}
|
||||
return file
|
||||
return []byte(file)
|
||||
}
|
||||
func TTSReverso(lang string, text string) string {
|
||||
func TTSReverso(lang string, text string) []byte {
|
||||
var TTSData = []ReversoTTS{
|
||||
// http://voice.reverso.net/RestPronunciation.svc/v1/output=json/GetAvailableVoices with randomized deduplication
|
||||
ReversoTTS{
|
||||
@ -149,5 +149,5 @@ func TTSReverso(lang string, text string) string {
|
||||
if err != nil {
|
||||
file = ""
|
||||
}
|
||||
return file
|
||||
return []byte(file)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user