public static bool ProcessNew() { List <string> newlines = File.ReadAllLines(Path.Combine(Program.serverpath, "newentries.txt")).ToList(); Program.newentries = newlines.Count(); if (newlines.Count() != 0) { List <string> newitems = new List <string>(); foreach (string item in newlines.ToList()) { newlines.Remove(item); Program.newentries--; try { string[] split = item.Split('\t'); string chinese = split[0]; DictionaryEntry t1 = Program.DictionaryDatatemp.FirstOrDefault(x => x.chinese == chinese || x.simplified == chinese || (x.alternate != null && x.alternate == chinese)); if ((split.Count() != 8 && split.Count() != 9) || t1 != null) { if ((split.Count() != 8 && split.Count() != 9) || t1.definition != null) { File.AppendAllText(Path.Combine(Program.serverpath, "rejected.txt"), item + Environment.NewLine); continue; } else { t1.definition = split[7].Split('|').ToList(); Program.DictionaryDatatemp.RemoveAll(x => x.chinese == chinese || x.simplified == chinese || (x.alternate != null && x.alternate == chinese)); Program.DictionaryDatatemp.Add(t1); Program.SentenceDatatemp.ForEach(x => { x.mouseover = x.chinese.Contains(chinese) ? null : x.mouseover; }); continue; } } DictionaryEntry t2 = new DictionaryEntry(); t2.chinese = split[0]; t2.simplified = split[1]; t2.alternate = split[2]; t2.zhuyin = split[3]; t2.pinyin = split[4]; t2.mainland = split[5]; t2.measureword = split[6]; t2.definition = split[7].Split('|').ToList(); Program.DictionaryDatatemp.Add(t2); Program.SentenceDatatemp.ForEach(x => { x.mouseover = x.chinese.Contains(chinese) ? null : x.mouseover; }); } catch { File.AppendAllText(Path.Combine(Program.serverpath, "rejected.txt"), item + Environment.NewLine); } } DictionaryEntry.WriteDictionaryData(Program.DictionaryDatatemp); SentenceEntry.WriteSentenceData(Program.SentenceDatatemp); File.WriteAllLines(Path.Combine(Program.serverpath, "newentries.txt"), newlines); return(true); } return(false); }
public static List <SentenceEntry> ReadSentenceData() { List <SentenceEntry> entries = new List <SentenceEntry>(); bool writeprocessed = false; Dictionary <string, string> t1 = new Dictionary <string, string>(); if (File.Exists(Path.Combine(Program.serverpath, "processedsentences.txt"))) { List <string> t2 = File.ReadAllLines(Path.Combine(Program.serverpath, "processedsentences.txt")).ToList(); foreach (string ii in t2) { if (!t1.ContainsKey(ii.Split('\t')[0])) { t1.Add(ii.Split('\t')[0], ii.Split('\t')[1]); } } } Program.sentence = File.ReadAllLines(Path.Combine(Program.serverpath, "sentencesfinal.txt")).Count(); foreach (string[] item in File.ReadAllLines(Path.Combine(Program.serverpath, "sentencesfinal.txt")).Select(x => x.Split('\t'))) { Program.sentence--; SentenceEntry entry = new SentenceEntry(); entry.chinese = item[0]; entry.english = item[4]; entry.englishwordseparated = Regex.Replace(item[4].ToLower().Insert(0, " ").Insert(item[4].Length > 1 ? (item[4].Length + 2) - 1 : 0, " ").Replace("!", " ").Replace("-", " ").Replace("i.e.", "").Replace("e.g.", "").Replace("?", " ").Replace(",", " ").Replace(".", " ").Replace("|", " "), @"\s+", " "); string line = null; if (t1.TryGetValue(item[0], out line)) { entry.mouseover = line; } else { entry.mouseover = Utilities.GetHoverMark(entry.chinese); writeprocessed = true; } entries.Add(entry); } if (writeprocessed) { WriteSentenceData(entries); } return(entries); }
public static void Init() { Loading = true; if (!File.Exists(Path.Combine(Program.serverpath, "newentries.txt"))) { File.Create(Path.Combine(Program.serverpath, "newentries.txt")).Close(); } ThreadPool.QueueUserWorkItem(delegate { while (Loading) { if (display1.IsHandleCreated) { display1.Invoke((MethodInvoker) delegate() { int periods = display1.Display1.Text.Count(x => x == '.'); if (periods > 20) { periods = 0; } display1.Display1.Clear(); display1.Display1.Text = "Scanning Entries" + string.Concat(Enumerable.Repeat(".", periods + 1)); if (dictionary != -1) { display1.Display1.AppendText(Environment.NewLine + "Scanning existing entries: " + dictionary + " remaining"); } if (sentence != -1) { display1.Display1.AppendText(Environment.NewLine + "Scanning existing sentences: " + sentence + " remaining"); } if (newentries != -1) { display1.Display1.AppendText(Environment.NewLine + "Checking for new entries: " + newentries + " remaining"); } if (newsentences != -1) { display1.Display1.AppendText(Environment.NewLine + "Checking for new Sentences: " + newsentences + " remaining"); } if (writecount != -1) { display1.Display1.AppendText(Environment.NewLine + "Adding new entries: " + writecount + " remaining"); } display1.Display1.Update(); }); } Thread.Sleep(100); } }, null); DictionaryDatatemp = DictionaryEntry.ReadDictionaryData(); SentenceDatatemp = SentenceEntry.ReadSentenceData(); if (Utilities.ProcessNew()) { DictionaryDatatemp = DictionaryEntry.ReadDictionaryData(); SentenceDatatemp = SentenceEntry.ReadSentenceData(); } Dictionary <string[], DictionaryEntry> DictionaryDataPinyintemp = new Dictionary <string[], DictionaryEntry>(); Dictionary <string[], DictionaryEntry> DictionaryExactWordtemp = new Dictionary <string[], DictionaryEntry>(); Dictionary <string, DictionaryEntry> DictionaryContainingWordtemp = new Dictionary <string, DictionaryEntry>(); Dictionary <string, SentenceEntry> SentenceContainingWordtemp = new Dictionary <string, SentenceEntry>(); foreach (DictionaryEntry item in DictionaryDatatemp) { DictionaryDataPinyintemp.Add(item.pinyinlatin, item); if (item.cleandefinition != null) { DictionaryExactWordtemp.Add(item.cleandefinition.ToArray(), item); } if (item.wordsearchdefintion != null) { DictionaryContainingWordtemp.Add((random.Next().ToString() + item.wordsearchdefintion), item); } } foreach (SentenceEntry item in SentenceDatatemp) { if (!SentenceContainingWordtemp.ContainsKey(item.englishwordseparated)) { SentenceContainingWordtemp.Add(item.englishwordseparated, item); } } while (DataAccessInProgress) { Thread.Sleep(1); } DataAccessInProgress = true; DictionaryData = DictionaryDatatemp; SentenceData = SentenceDatatemp; DictionaryDataPinyin = DictionaryDataPinyintemp; DictionaryExactWord = DictionaryExactWordtemp; DictionaryContainingWord = DictionaryContainingWordtemp; SentenceContainingWord = SentenceContainingWordtemp; DataAccessInProgress = false; Utilities.GetNews(); Loading = false; FullReset = false; }