protected override SByte[] ParseData(object obj) { string[] data = obj as string[]; SByte[] result = Enumerable.Repeat <SByte>(0, HERO_SUBGROUP_COUNT * 2 + MAP_COUNT + 1).ToArray(); if (data.Length < 12) { Console.WriteLine("Неверный формат " + string.Join(" ", data)); return(null); } for (int i = 0; i < 5; i++) { //получаем гуид героя int guid = Int32.Parse(data[i]); //получаем ид героя int id = guidMapper[$"Hero#{guid+1}"]; //получаем индекс роли(иды идут с еденицы а индексы с нуля) int index = (sbyte)(heroService.Find(id + 1).SubGroup - 1); result[index]++; } for (int i = 0; i < 5; i++) { int guid = Int32.Parse(data[i + 5]); int id = guidMapper[$"Hero#{guid+1}"]; int index = (sbyte)(heroService.Find(id + 1).SubGroup - 1 + HERO_SUBGROUP_COUNT); result[index]++; } int mapid = Int32.Parse(data[10]); int m_index = mapid - heroCount + 2 * HERO_SUBGROUP_COUNT; result[m_index] = 1; result[result.Length - 1] = SByte.Parse(data[11]); //result[result.Length-1] = SByte.Parse(data[6]); return(result); }
static void Main(string[] args) { ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; string HTML = ""; if (!Directory.Exists("Cache")) { Directory.CreateDirectory("Cache"); } if (!Directory.Exists("./Source/Images")) { Directory.CreateDirectory("./Source/Images"); } if (!Directory.Exists("./Source/Icons")) { Directory.CreateDirectory("./Source/Icons"); } if (!Directory.Exists("./Source/Hero")) { Directory.CreateDirectory("./Source/Hero"); } if (!Directory.Exists("./Source/Portrait")) { Directory.CreateDirectory("./Source/Portrait"); } log("debug", "WEB Парсер запущен"); if (!File.Exists("./Source/Hero/Hero.json")) { log("error", "Не найден исходный файл схемы героев по пути ./Source/Hero/Hero.json"); } Heroes.Load("./Source/Hero/Hero.json"); if (USE_HERO_DETAILS) { Details = new HeroDetails[Heroes.Count()]; WebExtension = new HeroWebExtension[Heroes.Count()]; log("succes", "Схема героев успешно загружена"); log("debug", "Парсинг деталей героев"); for (int i = 0; i < Heroes.Count(); i++) { temp = i; var Hero = Heroes.Find(i); var path = HeroTemplateURL + Hero.Name; Caching(HeroTemplateURL + Hero.Name, $"./Cache/{Hero.Name}.html"); log("debug", "Чтение Data:" + Hero.Name); HTML = File.ReadAllText($"./Cache/{Hero.Name}.html", Encoding.Default); log("succes", "Считан Data:" + Hero.Name); log("debug", "Парсинг " + Hero.Name + " начат"); Details[i] = ParseDetails(HTML); WebExtension[i] = new HeroWebExtension(i); WebExtension[i].DetailsUrl = path; log("info", Details[i].ToString()); log("succes", "Парсинг " + Hero.Name + " завершен"); } } if (USE_HERO_ICONS) { Caching(IconsURL, "./Cache/Icons.html"); log("debug", "Чтение Icons"); HTML = File.ReadAllText($"./Cache/Icons.html"); log("succes", "Считан Icons"); log("debug", "Парсинг Icons начат"); ParseIcons(HTML); log("succes", "Парсинг Icons завершен"); } log("debug", "Парсинг изображений"); for (int i = 0; i < Heroes.Count(); i++) { var Hero = Heroes.Find(i); Caching(ImageTemplateURL + Hero.Name, $"./Cache/{Hero.Name}_Large.html"); log("debug", $"Чтение {Hero.Name}_Large"); HTML = File.ReadAllText($"./Cache/{Hero.Name}_Large.html", Encoding.Default); log("succes", $"Считан {Hero.Name}_Large"); log("debug", $"Парсинг {Hero.Name}_Large"); ParseImages(HTML, Hero.Name); ParseModel(HTML, Hero.Name); log("succes", $"Парсинг {Hero.Name}_Large завершен"); } log("succes", "Парсинг изображений завершен"); log("succes", "Парсинг деталей героев завершен"); var outputDetails = JSonParser.Save(Details, typeof(HeroDetails[])); var outputExtensions = JSonParser.Save(WebExtension, typeof(HeroWebExtension[])); File.WriteAllText("./Source/Hero/HeroDetails.json", outputDetails); File.WriteAllText("./Source/Hero/HeroWebExtension.json", outputExtensions); }