示例#1
0
        public async Task RunAsync()
        {
            var apg = new AllPagesGenerator(Site)
            {
                NamespaceId    = Site.Namespaces["Item"].Id,
                PaginationSize = 100
            };

            using (var writer = File.CreateText(FileName))
                using (var ie = apg.EnumItemsAsync().Buffer(100).GetEnumerator())
                {
                    while (await ie.MoveNext())
                    {
                        var entities = ie.Current.Select(s => new Entity(Site, WikiLink.Parse(Site, s.Title).Title)).ToList();
                        await entities.RefreshAsync(EntityQueryOptions.FetchLabels, new[]
                        {
                            "en", "zh", "zh-cn", "zh-hans"
                        });

                        foreach (var entity in entities)
                        {
                            writer.Write(entity.Id);
                            writer.Write('\t');
                            writer.Write(entity.Labels["en"]);
                            writer.Write('\t');
                            writer.Write(entity.Labels["zh-cn"] ?? entity.Labels["zh-hans"] ?? entity.Labels["zh"]);
                            writer.WriteLine();
                        }
                    }
                }
        }
示例#2
0
        public async Task <List <Feature> > GetAll()
        {
            var allpagesGenerator = new AllPagesGenerator(_wikiSite)
            {
                PaginationSize = 500
            };
            var results = await allpagesGenerator.EnumItemsAsync().ToListAsync().ConfigureAwait(false);

            _logger.LogInformation($"Got {results.Count} pages from iNature, fetching their content and images");
            var features = new ConcurrentBag <Feature>();
            await Task.Run(() =>
            {
                Parallel.ForEach(results, new ParallelOptions {
                    MaxDegreeOfParallelism = 5
                }, (page) =>
                {
                    var feature = PageToFeature(page).Result;
                    if (feature != null)
                    {
                        features.Add(feature);
                    }
                });
            }).ConfigureAwait(false);

            return(features.ToList());
        }
示例#3
0
        public async Task <List <Feature> > GetAll()
        {
            var allpagesGenerator = new AllPagesGenerator(_wikiSite)
            {
                PaginationSize = 500
            };
            var results = await allpagesGenerator.EnumItemsAsync().ToList().ConfigureAwait(false);

            _logger.LogInformation($"Got {results.Count} pages from iNature, fetching their content and images");
            var list     = results.AsParallel().WithDegreeOfParallelism(5).Select(PageToFeature);
            var features = await Task.WhenAll(list).ConfigureAwait(false);

            return(features.Where(f => f != null).ToList());
        }