Changeset 20 in code


Ignore:
Timestamp:
Aug 31, 2023, 8:28:02 AM (22 months ago)
Author:
manerakai
Message:

Improved code

Location:
trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/engines/engine.go

    r15 r20  
    1313        Translate(text string, from, to string) (TranslationResult, error)
    1414        DetectLanguage(text string) (string, error)
     15        Tts(text, lang string) (string, error)
    1516}
    1617
     
    1819
    1920var Engines = map[string]Engine{
    20         "google":   &GoogleTranslate{},
    21         "icibia":   &ICIBA{},
    22         "libre":    &LibreTranslate{},
     21        "google": &GoogleTranslate{},
     22        // "icibia":   &ICIBA{},
     23        // "libre":    &LibreTranslate{},
    2324        "reverseo": &Reverso{},
    2425}
  • trunk/engines/google.go

    r15 r20  
    3636
    3737        response, err := http.Get(requestURL.String())
    38 
    3938        if err != nil {
    4039                return nil, err
     
    4443
    4544        doc, err := goquery.NewDocumentFromReader(response.Body)
    46 
    4745        if err != nil {
    4846                return nil, err
    4947        }
    5048
    51         var langs Language
     49        var langs Language = make(Language)
    5250
    5351        doc.Find(".language-item").Each(func(_ int, s *goquery.Selection) {
     
    5553
    5654                href, exists := a.Attr("href")
    57 
    58                 // Shouldn't happen, but here goes.
    5955                if !exists {
    6056                        return
     
    6258
    6359                langURL, err := url.Parse(href)
    64 
    6560                if err != nil {
    6661                        return
     
    6863
    6964                langCode := langURL.Query()[langsType][0]
    70 
    71                 if langCode == "auto" {
    72                         return
    73                 }
    7465
    7566                langs[langCode] = a.Text()
     
    8576func (e *GoogleTranslate) TargetLanguages() (Language, error) {
    8677        return e.getLangs("target")
     78}
     79
     80func (e *GoogleTranslate) Tts(text, lang string) (string, error) {
     81        requestURL, _ := url.Parse("https://translate.google.com/translate_tts")
     82
     83        query := url.Values{}
     84        query.Add("tl", lang)
     85        query.Add("q", text)
     86        query.Add("client", "tw-ob")
     87        requestURL.RawQuery = query.Encode()
     88
     89        return requestURL.String(), nil
    8790}
    8891
  • trunk/engines/iciba.go

    r15 r20  
    226226
    227227func (_ *ICIBA) Translate(text string, from, to string) (TranslationResult, error) {
    228         requestURL, err := url.Parse("https://ifanyi.iciba.com/index.php")
    229 
    230         if err != nil {
    231                 // The URL is constant, so it should never fail.
    232                 panic(err)
    233         }
     228        requestURL, _ := url.Parse("https://ifanyi.iciba.com/index.php")
    234229
    235230        query := url.Values{}
     
    240235
    241236        sum := md5.Sum([]byte(("6key_web_fanyiifanyiweb8hc9s98e" + text)))
    242 
    243237        query.Add("sign", hex.EncodeToString(sum[:])[:16])
    244238
     
    251245
    252246        response, err := http.PostForm(requestURL.String(), formData)
    253 
    254247        if err != nil {
    255248                return TranslationResult{}, err
     
    287280        }, nil
    288281}
     282
     283func (_ *ICIBA) Tts(text, lang string) (string, error) { return "", nil }
  • trunk/engines/libretranslate.go

    r15 r20  
    6363
    6464func (e *LibreTranslate) TargetLanguages() (Language, error) { return e.getLangs() }
     65
     66func (e *LibreTranslate) Tts(text, lang string) (string, error) { return "", nil }
    6567
    6668type libreDetectResponse []struct {
  • trunk/engines/reverso.go

    r15 r20  
    4646
    4747func (_ *Reverso) TargetLanguages() (Language, error) { return reversoLangs, nil }
     48
     49func (_ *Reverso) Tts(text, lang string) (string, error) { return "", nil }
    4850
    4951type reversoAPIResponse struct {
  • trunk/web/main.go

    r19 r20  
    9191                        "Engine":          engine,
    9292                        "enginesNames":    enginesNames,
    93                         "SourceLanguages": targetLanguages,
    94                         "TargetLanguages": sourceLanguages,
     93                        "SourceLanguages": sourceLanguages,
     94                        "TargetLanguages": targetLanguages,
    9595                        "OriginalText":    originalText,
    9696                        "TranslatedText":  translatedText,
     
    169169
    170170                lang := c.Query("lang")
    171                 if lang == "" {
    172                         lang = "en"
    173                 }
    174171
    175172                if url, err := engines.Engines[engine].Tts(text, lang); err != nil {
     
    189186        })
    190187
     188        app.Post("/switchlanguages", func(c *fiber.Ctx) error {
     189                if c.Cookies("from") != "" {
     190                        fromCookie := new(fiber.Cookie)
     191                        fromCookie.Name = "from"
     192                        fromCookie.Value = c.Cookies("to")
     193                        fromCookie.Expires = time.Now().Add(24 * time.Hour * 365)
     194
     195                        toCookie := new(fiber.Cookie)
     196                        toCookie.Name = "to"
     197                        toCookie.Value = c.Cookies("from")
     198                        toCookie.Expires = time.Now().Add(24 * time.Hour * 365)
     199
     200                        c.Cookie(fromCookie)
     201                        c.Cookie(toCookie)
     202                }
     203                return c.Redirect("/")
     204        })
     205
    191206        app.Static("/static", "./static")
    192207
  • trunk/web/views/index.html

    r19 r20  
    5858                <textarea autofocus class="item" id="input" name="text" dir="auto"
    5959                    placeholder="Enter Text Here">{{ .OriginalText }}</textarea>
    60                 <div class="center">
    61                     <audio controls>
    62                         <source type="audio/mpeg" src="{{ .TtsFrom }}">
    63                     </audio>
    64                 </div>
     60                {{if .TtsFrom}}
     61                <audio controls>
     62                    <source type="audio/mpeg" src="{{ .TtsFrom }}">
     63                </audio>
     64                {{end}}
    6565            </div>
    6666
     
    6868                <textarea id="output" class="translation item" dir="auto" placeholder="Translation"
    6969                    readonly>{{.TranslatedText}}</textarea>
     70                {{if .TtsTo}}
    7071                <audio controls>
    7172                    <source type="audio/mpeg" src="{{ .TtsTo }}">
    7273                </audio>
     74                {{end}}
    7375            </div>
    7476        </div>
Note: See TracChangeset for help on using the changeset viewer.