Changeset 17 in code for trunk


Ignore:
Timestamp:
Aug 30, 2023, 3:41:40 PM (22 months ago)
Author:
manerakai
Message:

Added tts

Location:
trunk/web
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/web/main.go

    r16 r17  
    22
    33import (
     4        "bytes"
     5        "net/http"
     6        "net/url"
     7
    48        "codeberg.org/SimpleWeb/SimplyTranslate/engines"
    59        "github.com/gofiber/fiber/v2"
     
    8589                from := ""
    8690                to := ""
     91                ttsFrom := ""
     92                ttsTo := ""
    8793
    8894                if c.Method() == "POST" {
     
    96102                                translatedText = result.TranslatedText
    97103                        }
     104
     105                        ttsFromURL, _ := url.Parse("api/tts")
     106
     107                        fromQuery := url.Values{}
     108                        fromQuery.Add("lang", from)
     109                        fromQuery.Add("text", originalText)
     110                        ttsFromURL.RawQuery = fromQuery.Encode()
     111                        ttsFrom = ttsFromURL.String()
     112
     113                        ttsToURL, _ := url.Parse("api/tts")
     114
     115                        toQuery := url.Values{}
     116                        toQuery.Add("lang", to)
     117                        toQuery.Add("text", translatedText)
     118                        ttsToURL.RawQuery = toQuery.Encode()
     119                        ttsTo = ttsToURL.String()
     120
    98121                }
    99122                return c.Render("index", fiber.Map{
     
    105128                        "From":            from,
    106129                        "To":              to,
     130                        "TtsFrom":         ttsFrom,
     131                        "TtsTo":           ttsTo,
    107132                })
    108133        })
     
    110135        app.Static("/static", "./static")
    111136
     137        app.Get("/api/tts", func(c *fiber.Ctx) error {
     138                engine := c.Query("engine")
     139                if _, ok := engines.Engines[engine]; !ok || engine == "" {
     140                        engine = "google"
     141                }
     142
     143                text := c.Query("text")
     144                if text == "" {
     145                        return c.SendStatus(400)
     146                }
     147
     148                lang := c.Query("lang")
     149                if lang == "" {
     150                        lang = "en"
     151                }
     152
     153                if url, err := engines.Engines[engine].Tts(text, lang); err != nil {
     154                        return c.SendStatus(500)
     155                } else {
     156                        if response, err := http.Get(url); err != nil {
     157                                return c.SendStatus(500)
     158                        } else {
     159                                defer response.Body.Close()
     160                                var buf bytes.Buffer
     161                                response.Write(&buf)
     162                                c.Context().SetContentType("audio/mpeg")
     163                                return c.Send(buf.Bytes())
     164                        }
     165                }
     166        })
     167
    112168        app.Listen(":3000")
    113169}
  • trunk/web/views/index.html

    r16 r17  
    4949                <textarea autofocus class="item" id="input" name="text" dir="auto"
    5050                    placeholder="Enter Text Here">{{ .OriginalText }}</textarea>
     51                <div class="center">
     52                    <audio controls>
     53                        <source type="audio/mpeg" src="{{ .TtsFrom }}">
     54                    </audio>
     55                </div>
    5156            </div>
    5257
     
    5459                <textarea id="output" class="translation item" dir="auto" placeholder="Translation"
    5560                    readonly>{{.TranslatedText}}</textarea>
     61                <audio controls>
     62                    <source type="audio/mpeg" src="{{ .TtsTo }}">
     63                </audio>
    5664            </div>
    5765        </div>
Note: See TracChangeset for help on using the changeset viewer.