private static NameExchange ByteLengthFitter(NameExchange nameExchange) { nameExchange.ReferenceName = nameExchange.ReferenceName.Replace(" ", ""); if (nameExchange.Check) { switch (nameExchange.ReferenceNameWordList.Count) { case 1: nameExchange.ReferenceName = nameExchange.ReferenceNameWordList[0] .Substring(0, nameExchange.OriginalNameLength); break; case 2: nameExchange.ReferenceName = nameExchange.ReferenceNameWordList[1]; if (nameExchange.Check) { nameExchange.ReferenceName = nameExchange.ReferenceName.Substring(0, nameExchange.OriginalNameLength); } break; } } return(nameExchange); }
public static NameExchange OriginalToReference(string wikia, NameExchange name) { var wikiaResult = WikiaCSharpWrapper.Client.RequestValuesFromWiki(wikia, name.OriginalName, false); if (wikiaResult.Result != null) { foreach (var item in wikiaResult.Result.items) { var matches = regExSpanMatcher.Matches(item.snippet); var tempMatchVariable = string.Empty; foreach (Match match in matches) { if (tempMatchVariable != string.Empty) { tempMatchVariable = tempMatchVariable + " "; } tempMatchVariable = tempMatchVariable + match.Value.Split('<')[0]; } var entryCount = name.OriginalName.Split(' ').Length; if (matches.Count == entryCount && tempMatchVariable == name.OriginalName) { name.ReferenceName = item.title; name.ReferenceNameWordList = name.ReferenceName.Split(' ').ToList(); break; } } } return(name); }
public static Task <List <NameExchange> > CsvFile(string filename) { List <NameExchange> list = new List <NameExchange>(); string content = string.Empty; using (FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read)) { TextReader tr = new StreamReader(fs, Encoding.ASCII); content = tr.ReadToEnd(); tr.Dispose(); } string[] contentArray = content.Split(new string[] { "\r\n" }, StringSplitOptions.None); foreach (var item in contentArray) { string[] itemArray = item.Split(';'); var name = new NameExchange() { Encoding = Encoding.ASCII, OriginalName = itemArray.First(), ReferenceName = itemArray.Last() }; list.Add(name); } return(Task.FromResult(list)); }
public static void NameExchangeList(List <Entry> entries, string filename) { List <NameExchange> list = new List <NameExchange>(); foreach (var entry in entries) { var name = new NameExchange() { Encoding = Encoding.Unicode, OriginalName = entry.OriginalText, ReferenceName = entry.EditedText }; list.Add(name); } NameExchangeList(list, $"{filename.Trim()}.csv"); }
public static async Task ToReferenceNames(string sourceFile, string targetFile, string wikia, int from, int to, bool recursiveCheck, bool matchByteLength) { Settings.LogTime = DateTime.Now; IO.Write.Log($"SourceFilepath: {sourceFile}", true); IO.Write.Log($"TargetFilePath: {targetFile}", true); IO.Write.Log($"Wikia: {wikia}", true); IO.Write.Log($"Recursive Check: {recursiveCheck}", true); IO.Write.Log($"Match ByteLength: {matchByteLength}", true); IO.Write.Log("Loading KUP file", true); var kup = Kontract.KUP.Load(sourceFile); int kupEntryCount = kup.Count; if (from == -1) { from = 0; } if (to == -1) { to = kupEntryCount; } IO.Write.Log($"From Count: {from}", true); IO.Write.Log($"To Count: {to}", true); var entries = kup.Entries.Where(x => Convert.ToInt32(x.Name.Remove(0, 4)) >= from && Convert.ToInt32(x.Name.Remove(0, 4)) <= to).ToList(); IO.Write.Log("Begin translation", true); List <NameExchange> NameExchangeList = new List <NameExchange>(); foreach (var entry in entries) { NameExchange nameExchange = new NameExchange(); nameExchange.Encoding = Encoding.ASCII; nameExchange.KupReference = entry.Name; nameExchange.OriginalName = entry.OriginalText; nameExchange.OriginalNameWordList = nameExchange.OriginalName.Split(' ').ToList(); if (recursiveCheck) { var preCheck = NameExchangeList.FirstOrDefault(x => x.OriginalNameWordList.Contains(entry.OriginalText) && x.ReferenceName != null); if (preCheck != null) { if (nameExchange.OriginalNameWordList.Count == 1) { nameExchange.ReferenceName = (nameExchange.OriginalNameWordList.Count == 1) ? preCheck.ReferenceNameWordList[preCheck.ReferenceNameWordList.Count - 1] : preCheck.ReferenceName; nameExchange.ReferenceNameWordList = nameExchange.ReferenceName.Split(' ').ToList(); } } else { Translate.OriginalToReference(wikia, nameExchange); } } else { Translate.OriginalToReference(wikia, nameExchange); } if (matchByteLength && nameExchange.ReferenceName != null) { ByteLengthFitter(nameExchange); } IO.Write.Log($"{nameExchange.OriginalName} => {nameExchange.ReferenceName}"); NameExchangeList.Add(nameExchange); } await Task.Run(() => Shared.IO.Write.NameExchangeList(NameExchangeList, targetFile)); }