コード例 #1
0
        public WikiBuildingInfoPresets GetWikiBuildingInfos(WikiTextTableContainer list)
        {
            var wikibuildingList = new WikiBuildingInfoPresets();

            foreach (var curentry in list.Entries)
            {
                wikibuildingList.Infos.Add(ParseWikiBuildingInfo(curentry));
            }

            //order buildings by name
            wikibuildingList.Infos = wikibuildingList.Infos.OrderBy(x => x.Name).ToList();

            return(wikibuildingList);
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: jostill/anno-designer
        public static async Task Main(string[] args)
        {
            try
            {
                Regex.CacheSize = 100;

                OutputDirectory = Path.Combine(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location), "..", "..", "..", "..", "..", "Presets");

                ParseArguments(args);

                //Console.WriteLine($"{nameof(ForceDownload)}: {ForceDownload}");

                if (!Directory.Exists(OutputDirectory))
                {
                    Directory.CreateDirectory(OutputDirectory);
                }

                logger.Info($"Directory for output: \"{Path.GetFullPath(OutputDirectory)}\"");
                logger.Info($"Version of preset file: {PresetVersion}");

                Console.WriteLine($"Directory for output: \"{Path.GetFullPath(OutputDirectory)}\"");
                Console.WriteLine($"Version of preset file: {PresetVersion}");
                Console.WriteLine();

                WikiTextTableContainer tableContainer = null;

                if (!File.Exists("wiki_basic_info.json") || ForceDownload)
                {
                    logger.Trace("start download of basic wiki building info");

                    var provider       = new WikiTextProvider();
                    var providerResult = await provider.GetWikiTextAsync();

                    var tableParser = new WikiTextTableParser();
                    tableContainer = tableParser.GetTables(providerResult.WikiText);

                    logger.Trace("save basic wiki building info");
                    SerializationHelper.SaveToFile(tableContainer, "wiki_basic_info.json", prettyPrint: true);
                }
                else
                {
                    logger.Trace("load basic wiki building info");
                    tableContainer = SerializationHelper.LoadFromFile <WikiTextTableContainer>("wiki_basic_info.json");
                }

                //get basic info of all buildings
                var wikiBuildingInfoProvider = new WikiBuildingInfoProvider();
                var wikiBuildingInfoPreset   = wikiBuildingInfoProvider.GetWikiBuildingInfos(tableContainer);

                //get detail info of all buildings
                var specialBuildingNameHelper = new SpecialBuildingNameHelper();
                var regionHelper      = new RegionHelper();
                var titleParserSingle = new TitleParserSingle(_commons, specialBuildingNameHelper);
                var infoboxParser     = new InfoboxParser.InfoboxParser(_commons, titleParserSingle, specialBuildingNameHelper, regionHelper);
                var infoboxExtractor  = new InfoboxExtractor(_commons, titleParserSingle);

                var wikiDetailProvider = new WikiBuildingDetailProvider(_commons, infoboxParser, infoboxExtractor);
                wikiBuildingInfoPreset               = wikiDetailProvider.FetchBuildingDetails(wikiBuildingInfoPreset);
                wikiBuildingInfoPreset.Version       = PresetVersion;
                wikiBuildingInfoPreset.DateGenerated = DateTime.UtcNow;

                var outputPath = Path.Combine(OutputDirectory, CoreConstants.PresetsFiles.WikiBuildingInfoPresetsFile);
                logger.Trace($"save wiki building info: {outputPath}");
                SerializationHelper.SaveToFile(wikiBuildingInfoPreset, outputPath, prettyPrint: UsePrettyPrint);

                //for testing
                //load parsed file to test
                //wikiBuildingInfoPreset = SerializationHelper.LoadFromFile<WikiBuildingInfoPreset>(PRESET_FILENAME);

                var oldColor = Console.ForegroundColor;
                Console.ForegroundColor = ConsoleColor.Green;
                Console.WriteLine($"Finished parsing all building information.");
                Console.ForegroundColor = oldColor;
            }
            catch (Exception ex)
            {
                logger.Error(ex, "error occured");

                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine(ex);
            }
            finally
            {
                if (!NoWait)
                {
                    Console.WriteLine();
                    Console.WriteLine("To exit press any key ...");
                    Console.ReadLine();
                }
            }
        }
コード例 #3
0
        public void GetWikiBuildingInfos_IsCalledWithTestdata_ShouldReturnExpectedResultCount(WikiTextTableContainer testdata)
        {
            // Act
            var result = _provider.GetWikiBuildingInfos(testdata);

            // Assert
            Assert.Equal(293, result.Infos.Count);
        }
コード例 #4
0
        static WikiBuildingInfoProviderTests()
        {
            string basePath = AppDomain.CurrentDomain.BaseDirectory;

            testData_BasicInfo_20200514 = SerializationHelper.LoadFromFile <WikiTextTableContainer>(Path.Combine(basePath, "Testdata", "20200514_wiki_basic_info.json"));
        }