/// <summary> /// Конструктор /// </summary> /// <param name="Id">ID</param> /// <param name="Eng">Слово на английском</param> /// <param name="Rus">Слово на русском</param> /// <param name="MeanE">Значение слова на английском</param> /// <param name="MeanR">Значение слова на русском</param> /// <param name="MeanRE">Значение русского перевода на аглийском</param> /// <param name="MeanRR">Значение русского перевода на русском</param> /// <param name="Trans">Транскрипция</param> /// <param name="lev">Уровень слова</param> /// <param name="Tags">Тэги</param> public Word(long Id, string Eng, string tr, string Rus, SpaceYandexEnEn.YandexEnEn MeanE, SpaceYandexEnRu.YandexEnRu MeanR, SpaceYandexRuEn.YandexRuEn MeanRE, SpaceYandexRuRu.YandexRuRu MeanRR, int lev, HashSet <string> Tags) { id = Id; eng = Eng.ToLower(); trans = tr; rus = Rus?.ToLower(); mean_eng = MeanE; mean_rus = MeanR; mean_rus_eng = MeanRE; mean_rus_rus = MeanRR; level = lev; tags = Tags; }
/// <summary> /// Пробует добавить в словарь данное слово на английском /// </summary> /// <param name="word">Строка, содержащая слово</param> /// <returns>Возвращает true, если слово было добавлено</returns> private static bool TryToAddEnglishWord(string word) { if (dictionary.eng_ids.ContainsKey(word)) { return(false); } try { string request1 = @"https://dictionary.yandex.net/api/v1/dicservice.json/lookup?key=" + Resources.tr_key + @"&lang=en-en&text=" + word; string request2 = @"https://dictionary.yandex.net/api/v1/dicservice.json/lookup?key=" + Resources.tr_key + @"&lang=en-ru&text=" + word; string response1 = Methods.Request(request1); string response2 = Methods.Request(request2); SpaceYandexEnEn.YandexEnEn mean_eng = Methods.DeSerializationObjFromStr <SpaceYandexEnEn.YandexEnEn>(response1); SpaceYandexEnRu.YandexEnRu mean_rus = Methods.DeSerializationObjFromStr <SpaceYandexEnRu.YandexEnRu>(response2); if (mean_eng.def.Count == 0 && mean_rus.def.Count == 0) { return(false); } Word add_word; long add_id = dictionary.GetKeys().Max() + 1; if (mean_rus.def.Count > 0 && mean_eng.def.Count == 0) { add_word = new Word(add_id, word, mean_rus.def[0].ts, mean_rus.def[0].tr[0].text, mean_eng, mean_rus, null, null, -1, new HashSet <string> { "rus_only", "added" }); } else if (mean_rus.def.Count == 0 && mean_eng.def.Count > 0) { add_word = new Word(add_id, word, mean_eng.def[0].ts, null, mean_eng, mean_rus, null, null, -1, new HashSet <string> { "eng_only", "added" }); } else { add_word = new Word(add_id, word, mean_eng.def[0].ts, mean_rus.def[0].tr[0].text, mean_eng, mean_rus, null, null, -1, new HashSet <string> { "added" }); } bool add_good = dictionary.AddWord(add_word); if (!add_good) { return(false); } dictionary.eng_ids.Add(word, add_id); if (add_word.mean_rus != null) { bool b = AddRusIds(add_word); if (!b) { add_word.tags.Add("no_in_rus_ids"); } } return(true); } catch (Exception e) { Console.WriteLine("Error in adding english word: " + word); Console.WriteLine(e.Message); Console.WriteLine(e.StackTrace); return(false); } }