Changeset 40 in code for trunk/engines/google.go
- Timestamp:
- Sep 28, 2023, 7:45:12 AM (21 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/engines/google.go
r32 r40 154 154 } 155 155 responseText := string(bodyBytes) 156 157 responseText = regexp.MustCompile(`\n\d+\n(.*)\n\d+\n`).FindStringSubmatch(responseText)[1] 158 159 var raw []interface{} 160 err = json.Unmarshal([]byte(responseText), &raw) 161 if err != nil { 162 fmt.Println("Error:", err) 163 return TranslationResult{}, nil 164 } 156 responseTextList := regexp.MustCompile(`\n\d+\n(.*)\n\d+\n`).FindStringSubmatch(responseText) 165 157 definitions := make(map[string][]map[string]interface{}) 166 158 translations := make(map[string]map[string]map[string]interface{}) 167 168 if len(raw) > 0 && raw[0] != nil && 169 len(raw[0].([]interface{})) > 2 && raw[0].([]interface{})[2] != nil { 170 data := raw[0].([]interface{})[2].(string) 171 172 var json_ []interface{} 173 err = json.Unmarshal([]byte(data), &json_) 174 175 if len(json_) > 3 && json_[3] != nil && 176 len(json_[3].([]interface{})) > 1 && json_[3].([]interface{})[1] != nil && 177 len(json_[3].([]interface{})[1].([]interface{})) > 0 && json_[3].([]interface{})[1].([]interface{})[0] != nil { 178 for x := 0; x < len(json_[3].([]interface{})[1].([]interface{})[0].([]interface{})); x++ { 179 if len(json_[3].([]interface{})[1].([]interface{})[0].([]interface{})[x].([]interface{})) > 0 { 180 definitionType := json_[3].([]interface{})[1].([]interface{})[0].([]interface{})[x].([]interface{})[0] 181 if definitionType == nil { 182 definitionType = "unknown" 183 } 184 185 definitions[definitionType.(string)] = []map[string]interface{}{} 186 187 for i := 0; i < len(json_[3].([]interface{})[1].([]interface{})[0].([]interface{})[x].([]interface{})[1].([]interface{})); i++ { 188 definitionBox := json_[3].([]interface{})[1].([]interface{})[0].([]interface{})[x].([]interface{})[1].([]interface{})[i].([]interface{}) 189 definitions[definitionType.(string)] = append(definitions[definitionType.(string)], map[string]interface{}{}) 190 191 if len(definitionBox) > 4 && definitionBox[4] != nil && 192 len(definitionBox[4].([]interface{})) > 0 && definitionBox[4].([]interface{})[0] != nil && 193 len(definitionBox[4].([]interface{})[0].([]interface{})) > 0 && definitionBox[4].([]interface{})[0].([]interface{})[0] != nil { 194 definitions[definitionType.(string)][i]["dictionary"] = definitionBox[4].([]interface{})[0].([]interface{})[0] 195 } 196 197 if len(definitionBox) > 0 && definitionBox[0] != nil { 198 definitions[definitionType.(string)][i]["definition"] = definitionBox[0] 199 } 200 201 if len(definitionBox) > 1 && definitionBox[1] != nil { 202 definitions[definitionType.(string)][i]["use_in_sentence"] = definitionBox[1] 203 } 204 205 if len(definitionBox) > 5 && definitionBox[5] != nil { 206 definitions[definitionType.(string)][i]["synonyms"] = map[string][]string{} 207 synonyms := definitionBox[5].([]interface{}) 208 synonymsMap := make(map[string][]string) 209 210 for _, synonymBox := range synonyms { 211 synonymType := "" 212 if len(synonymBox.([]interface{})) > 1 && synonymBox.([]interface{})[1] != nil && 213 len(synonymBox.([]interface{})[1].([]interface{})) > 0 && synonymBox.([]interface{})[1].([]interface{})[0] != nil { 214 synonymType = synonymBox.([]interface{})[1].([]interface{})[0].([]interface{})[0].(string) 215 } 216 217 if len(synonymBox.([]interface{})) > 0 && synonymBox.([]interface{})[0] != nil { 218 synonymList := synonymBox.([]interface{})[0].([]interface{}) 219 synonymsMap[synonymType] = []string{} 220 for _, synonymTypeWord := range synonymList { 221 synonymsMap[synonymType] = append(synonymsMap[synonymType], synonymTypeWord.([]interface{})[0].(string)) 159 if len(responseTextList) > 0 { 160 responseText = responseTextList[1] 161 var raw []interface{} 162 err = json.Unmarshal([]byte(responseText), &raw) 163 if err != nil { 164 fmt.Println("Error:", err) 165 return TranslationResult{}, nil 166 } 167 168 if len(raw) > 0 && raw[0] != nil && 169 len(raw[0].([]interface{})) > 2 && raw[0].([]interface{})[2] != nil { 170 data := raw[0].([]interface{})[2].(string) 171 172 var json_ []interface{} 173 err = json.Unmarshal([]byte(data), &json_) 174 175 if len(json_) > 3 && json_[3] != nil && 176 len(json_[3].([]interface{})) > 1 && json_[3].([]interface{})[1] != nil && 177 len(json_[3].([]interface{})[1].([]interface{})) > 0 && json_[3].([]interface{})[1].([]interface{})[0] != nil { 178 for x := 0; x < len(json_[3].([]interface{})[1].([]interface{})[0].([]interface{})); x++ { 179 if len(json_[3].([]interface{})[1].([]interface{})[0].([]interface{})[x].([]interface{})) > 0 { 180 definitionType := json_[3].([]interface{})[1].([]interface{})[0].([]interface{})[x].([]interface{})[0] 181 if definitionType == nil { 182 definitionType = "unknown" 183 } 184 185 definitions[definitionType.(string)] = []map[string]interface{}{} 186 187 for i := 0; i < len(json_[3].([]interface{})[1].([]interface{})[0].([]interface{})[x].([]interface{})[1].([]interface{})); i++ { 188 definitionBox := json_[3].([]interface{})[1].([]interface{})[0].([]interface{})[x].([]interface{})[1].([]interface{})[i].([]interface{}) 189 definitions[definitionType.(string)] = append(definitions[definitionType.(string)], map[string]interface{}{}) 190 191 if len(definitionBox) > 4 && definitionBox[4] != nil && 192 len(definitionBox[4].([]interface{})) > 0 && definitionBox[4].([]interface{})[0] != nil && 193 len(definitionBox[4].([]interface{})[0].([]interface{})) > 0 && definitionBox[4].([]interface{})[0].([]interface{})[0] != nil { 194 definitions[definitionType.(string)][i]["dictionary"] = definitionBox[4].([]interface{})[0].([]interface{})[0] 195 } 196 197 if len(definitionBox) > 0 && definitionBox[0] != nil { 198 definitions[definitionType.(string)][i]["definition"] = definitionBox[0] 199 } 200 201 if len(definitionBox) > 1 && definitionBox[1] != nil { 202 definitions[definitionType.(string)][i]["use_in_sentence"] = definitionBox[1] 203 } 204 205 if len(definitionBox) > 5 && definitionBox[5] != nil { 206 definitions[definitionType.(string)][i]["synonyms"] = map[string][]string{} 207 synonyms := definitionBox[5].([]interface{}) 208 synonymsMap := make(map[string][]string) 209 210 for _, synonymBox := range synonyms { 211 synonymType := "" 212 if len(synonymBox.([]interface{})) > 1 && synonymBox.([]interface{})[1] != nil && 213 len(synonymBox.([]interface{})[1].([]interface{})) > 0 && synonymBox.([]interface{})[1].([]interface{})[0] != nil { 214 synonymType = synonymBox.([]interface{})[1].([]interface{})[0].([]interface{})[0].(string) 215 } 216 217 if len(synonymBox.([]interface{})) > 0 && synonymBox.([]interface{})[0] != nil { 218 synonymList := synonymBox.([]interface{})[0].([]interface{}) 219 synonymsMap[synonymType] = []string{} 220 for _, synonymTypeWord := range synonymList { 221 synonymsMap[synonymType] = append(synonymsMap[synonymType], synonymTypeWord.([]interface{})[0].(string)) 222 } 222 223 } 223 224 } 224 } 225 226 definitions[definitionType.(string)][i]["synonyms"] = synonymsMap225 226 definitions[definitionType.(string)][i]["synonyms"] = synonymsMap 227 } 227 228 } 228 229 } 229 230 } 230 231 } 231 } 232 233 if len(json_) > 3 && json_[3] != nil &&234 len(json_[3].([]interface{})) > 5 && json_[3].([]interface{})[5] != nil &&235 len(json_[3].([]interface{})[5].([]interface{})) > 0 && json_[3].([]interface{})[5].([]interface{})[0] != nil {236 translationBox := json_[3].([]interface{})[5].([]interface{})[0].([]interface{})237 for x := 0; x < len(translationBox); x++{238 if len(translationBox[x].([]interface{})) > 0 {239 translationType := translationBox[x].([]interface{})[0]240 if translationType == nil {241 translationType = "unknown"242 }243 translations[translationType.(string)] = make(map[string]map[string]interface{}) 244 245 if len(translationBox[x].([]interface{})) > 1 && translationBox[x].([]interface{})[1] != nil {246 translationNamesBox := translationBox[x].([]interface{})[1].([]interface{})247 for i := 0; i < len(translationNamesBox); i++{248 if len(translationNamesBox[i].([]interface{})) > 0 && translationNamesBox[i].([]interface{})[0] != nil {249 translationName := translationNamesBox[i].([]interface{})[0].(string)250 translations[translationType.(string)][translationName] = make(map[string]interface{})251 if len(translationNamesBox[i].([]interface{})) > 3 && translationNamesBox[i].([]interface{})[3] != nil {252 frequency := fmt.Sprintf("%d", int(translationNamesBox[i].([]interface{})[3].(float64)))253 if frequency == "3" {254 frequency = "1"255 } else if frequency == "1" {256 frequency = "3"257 }258 translations[translationType.(string)][translationName]["frequency"] = frequency + "/3" 259 260 translations[translationType.(string)][translationName]["words"] = []string{}261 if len(translationNamesBox[i].([]interface{})) > 2 && translationNamesBox[i].([]interface{})[2] != nil{262 for z := 0; z < len(translationNamesBox[i].([]interface{})[2].([]interface{})); z++ {263 word := translationNamesBox[i].([]interface{})[2].([]interface{})[z].(string)264 translations[translationType.(string)][translationName]["words"] = append(translations[translationType.(string)][translationName]["words"].([]string), word)232 233 if len(json_) > 3 && json_[3] != nil && 234 len(json_[3].([]interface{})) > 5 && json_[3].([]interface{})[5] != nil && 235 len(json_[3].([]interface{})[5].([]interface{})) > 0 && json_[3].([]interface{})[5].([]interface{})[0] != nil { 236 translationBox := json_[3].([]interface{})[5].([]interface{})[0].([]interface{}) 237 for x := 0; x < len(translationBox); x++ { 238 if len(translationBox[x].([]interface{})) > 0 { 239 translationType := translationBox[x].([]interface{})[0] 240 if translationType == nil { 241 translationType = "unknown" 242 } 243 translations[translationType.(string)] = make(map[string]map[string]interface{}) 244 245 if len(translationBox[x].([]interface{})) > 1 && translationBox[x].([]interface{})[1] != nil { 246 translationNamesBox := translationBox[x].([]interface{})[1].([]interface{}) 247 for i := 0; i < len(translationNamesBox); i++ { 248 if len(translationNamesBox[i].([]interface{})) > 0 && translationNamesBox[i].([]interface{})[0] != nil { 249 translationName := translationNamesBox[i].([]interface{})[0].(string) 250 translations[translationType.(string)][translationName] = make(map[string]interface{}) 251 if len(translationNamesBox[i].([]interface{})) > 3 && translationNamesBox[i].([]interface{})[3] != nil { 252 frequency := fmt.Sprintf("%d", int(translationNamesBox[i].([]interface{})[3].(float64))) 253 if frequency == "3" { 254 frequency = "1" 255 } else if frequency == "1" { 256 frequency = "3" 257 } 258 translations[translationType.(string)][translationName]["frequency"] = frequency + "/3" 259 260 translations[translationType.(string)][translationName]["words"] = []string{} 261 if len(translationNamesBox[i].([]interface{})) > 2 && translationNamesBox[i].([]interface{})[2] != nil { 262 for z := 0; z < len(translationNamesBox[i].([]interface{})[2].([]interface{})); z++ { 263 word := translationNamesBox[i].([]interface{})[2].([]interface{})[z].(string) 264 translations[translationType.(string)][translationName]["words"] = append(translations[translationType.(string)][translationName]["words"].([]string), word) 265 } 265 266 } 266 267 } … … 271 272 } 272 273 } 273 } 274 275 if len(json_) > 0 && json_[0] != nil && len(json_[0].([]interface{})) > 2 && json_[0].([]interface{})[2] != nil { 276 from = json_[0].([]interface{})[2].(string) 274 275 if len(json_) > 0 && json_[0] != nil && len(json_[0].([]interface{})) > 2 && json_[0].([]interface{})[2] != nil { 276 from = json_[0].([]interface{})[2].(string) 277 } 278 277 279 } 278 280 }
Note:
See TracChangeset
for help on using the changeset viewer.