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);
        }
Beispiel #2
0
        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);
        }