Changeset 20 in code
- Timestamp:
- Aug 31, 2023, 8:28:02 AM (22 months ago)
- Location:
- trunk
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/engines/engine.go
r15 r20 13 13 Translate(text string, from, to string) (TranslationResult, error) 14 14 DetectLanguage(text string) (string, error) 15 Tts(text, lang string) (string, error) 15 16 } 16 17 … … 18 19 19 20 var Engines = map[string]Engine{ 20 "google": 21 "icibia": &ICIBA{},22 "libre": &LibreTranslate{},21 "google": &GoogleTranslate{}, 22 // "icibia": &ICIBA{}, 23 // "libre": &LibreTranslate{}, 23 24 "reverseo": &Reverso{}, 24 25 } -
trunk/engines/google.go
r15 r20 36 36 37 37 response, err := http.Get(requestURL.String()) 38 39 38 if err != nil { 40 39 return nil, err … … 44 43 45 44 doc, err := goquery.NewDocumentFromReader(response.Body) 46 47 45 if err != nil { 48 46 return nil, err 49 47 } 50 48 51 var langs Language 49 var langs Language = make(Language) 52 50 53 51 doc.Find(".language-item").Each(func(_ int, s *goquery.Selection) { … … 55 53 56 54 href, exists := a.Attr("href") 57 58 // Shouldn't happen, but here goes.59 55 if !exists { 60 56 return … … 62 58 63 59 langURL, err := url.Parse(href) 64 65 60 if err != nil { 66 61 return … … 68 63 69 64 langCode := langURL.Query()[langsType][0] 70 71 if langCode == "auto" {72 return73 }74 65 75 66 langs[langCode] = a.Text() … … 85 76 func (e *GoogleTranslate) TargetLanguages() (Language, error) { 86 77 return e.getLangs("target") 78 } 79 80 func (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 87 90 } 88 91 -
trunk/engines/iciba.go
r15 r20 226 226 227 227 func (_ *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") 234 229 235 230 query := url.Values{} … … 240 235 241 236 sum := md5.Sum([]byte(("6key_web_fanyiifanyiweb8hc9s98e" + text))) 242 243 237 query.Add("sign", hex.EncodeToString(sum[:])[:16]) 244 238 … … 251 245 252 246 response, err := http.PostForm(requestURL.String(), formData) 253 254 247 if err != nil { 255 248 return TranslationResult{}, err … … 287 280 }, nil 288 281 } 282 283 func (_ *ICIBA) Tts(text, lang string) (string, error) { return "", nil } -
trunk/engines/libretranslate.go
r15 r20 63 63 64 64 func (e *LibreTranslate) TargetLanguages() (Language, error) { return e.getLangs() } 65 66 func (e *LibreTranslate) Tts(text, lang string) (string, error) { return "", nil } 65 67 66 68 type libreDetectResponse []struct { -
trunk/engines/reverso.go
r15 r20 46 46 47 47 func (_ *Reverso) TargetLanguages() (Language, error) { return reversoLangs, nil } 48 49 func (_ *Reverso) Tts(text, lang string) (string, error) { return "", nil } 48 50 49 51 type reversoAPIResponse struct { -
trunk/web/main.go
r19 r20 91 91 "Engine": engine, 92 92 "enginesNames": enginesNames, 93 "SourceLanguages": targetLanguages,94 "TargetLanguages": sourceLanguages,93 "SourceLanguages": sourceLanguages, 94 "TargetLanguages": targetLanguages, 95 95 "OriginalText": originalText, 96 96 "TranslatedText": translatedText, … … 169 169 170 170 lang := c.Query("lang") 171 if lang == "" {172 lang = "en"173 }174 171 175 172 if url, err := engines.Engines[engine].Tts(text, lang); err != nil { … … 189 186 }) 190 187 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 191 206 app.Static("/static", "./static") 192 207 -
trunk/web/views/index.html
r19 r20 58 58 <textarea autofocus class="item" id="input" name="text" dir="auto" 59 59 placeholder="Enter Text Here">{{ .OriginalText }}</textarea> 60 <div class="center">61 62 63 64 </div>60 {{if .TtsFrom}} 61 <audio controls> 62 <source type="audio/mpeg" src="{{ .TtsFrom }}"> 63 </audio> 64 {{end}} 65 65 </div> 66 66 … … 68 68 <textarea id="output" class="translation item" dir="auto" placeholder="Translation" 69 69 readonly>{{.TranslatedText}}</textarea> 70 {{if .TtsTo}} 70 71 <audio controls> 71 72 <source type="audio/mpeg" src="{{ .TtsTo }}"> 72 73 </audio> 74 {{end}} 73 75 </div> 74 76 </div>
Note:
See TracChangeset
for help on using the changeset viewer.