示例#1
0
        private async Task <IEnumerable <XmlItemBase> > ReadJson(string wikiClass,
                                                                 Func <XmlItemBase, ItemType> itemTypeFunc, ItemCategory category)
        {
            var conditions = new ConditionBuilder
            {
                { RdfRarity, "Normal" },
                { RdfItemClass, wikiClass }
            };
            var printouts  = GlobalPredicates.Union(PredicatesPerCategory[category]);
            var enumerable =
                from result in await WikiApiAccessor.AskArgs(conditions, printouts)
                select PrintoutsToBase(category, result);

            var ret = enumerable.ToList();

            foreach (var item in ret)
            {
                item.ItemType = itemTypeFunc(item);
            }
            Log.Info($"Retrieved {ret.Count} bases of class {wikiClass}.");
            return
                (from b in ret
                 orderby b.ItemType, b.Level, b.Name
                 select b);
        }
示例#2
0
        private async Task ReadJson(string wikiClass)
        {
            // for items that have the given class ...
            var conditions = new ConditionBuilder
            {
                { RdfItemClass, wikiClass }
            };
            // ... retrieve name and the icon url
            var task    = WikiApiAccessor.AskAndQueryImageInforUrls(conditions);
            var results = (await task).ToList();

            // download the images from the urls and save them
            foreach (var result in results)
            {
                var data = await HttpClient.GetByteArrayAsync(result.Url);

                foreach (var name in result.Names)
                {
                    var fileName = name + ".png";
                    WikiApiUtils.SaveImage(data, Path.Combine(SavePath, fileName), true);
                }
            }

            Log.Info($"Retrieved {results.Count} images for class {wikiClass}.");
        }
示例#3
0
        private Task <IReadOnlyList <JToken> > QueryApiForJewelsAsync()
        {
            string[] tables = { ItemTableName, JewelTableName };
            var where = GetWhereClause(JewelClass);
            var joinOn = $"{ItemTableName}.{PageName}={JewelTableName}.{PageName}";

            return(WikiApiAccessor.CargoQueryAsync(tables, JewelFields, where, joinOn));
        }
示例#4
0
        private Task <IReadOnlyList <JToken> > QueryApiForModsAsync()
        {
            string[] tables = { ItemTableName, ItemModTableName };
            string[] fields = { ModId };
            var where = $"{Rarity}='Unique' AND is_implicit=false AND is_random=false AND {ModId} != ''";
            var joinOn = $"{ItemTableName}.{PageName}={ItemModTableName}.{PageName}";

            return(WikiApiAccessor.CargoQueryAsync(tables, fields, where, joinOn));
        }
示例#5
0
        private async Task <IEnumerable <XmlUnique> > ReadJson(string wikiClass)
        {
            var conditions = new ConditionBuilder
            {
                { RdfRarity, "Unique" },
                { RdfItemClass, wikiClass }
            };
            IEnumerable <XmlUnique> enumerable =
                from result in await WikiApiAccessor.AskArgs(conditions, Printouts)
                select PrintoutsToUnique(result);

            var ret = enumerable.ToList();

            Log.Info($"Retrieved {ret.Count} bases of class {wikiClass}.");
            return(ret.OrderBy(b => b.Name));
        }
示例#6
0
        private async Task <IEnumerable <XmlItemBase> > ReadJson(string wikiClass, ItemClass itemClass)
        {
            var conditions = new ConditionBuilder
            {
                { RdfRarity, "Normal" },
                { RdfItemClass, wikiClass }
            };
            var enumerable =
                from result in await WikiApiAccessor.AskArgs(conditions, PrintoutPredicates)
                select PrintoutsToBase(itemClass, result);

            var ret = enumerable.ToList();

            Log.Info($"Retrieved {ret.Count} bases of class {wikiClass}.");
            return
                (from b in ret
                 orderby b.Level, b.Name
                 select b);
        }
示例#7
0
        private async Task ReadJson(string wikiClass)
        {
            // for items that have the given class ...
            var where = $"{CargoConstants.ItemClass}='{wikiClass}'";
            // ... retrieve name and the icon url
            var task    = WikiApiAccessor.GetItemImageInfosAsync(where);
            var results = (await task).ToList();

            // download the images from the urls and save them
            foreach (var result in results)
            {
                var data = await HttpClient.GetByteArrayAsync(result.Url);

                foreach (var name in result.Names)
                {
                    var fileName = name + ".png";
                    WikiApiUtils.SaveImage(data, Path.Combine(SavePath, fileName), true);
                }
            }

            Log.Info($"Retrieved {results.Count} images for class {wikiClass}.");
        }
示例#8
0
 private Task <IReadOnlyList <JToken> > QueryApiForUniquesAsync(string wikiClass)
 {
     string[] tables = { ItemTableName };
     var where = GetWhereClause(wikiClass);
     return(WikiApiAccessor.CargoQueryAsync(tables, Fields, where));
 }
示例#9
0
 private Task <IEnumerable <JToken> > QueryApiAsync(string wikiClass)
 {
     string[] tables = { ItemTableName };
     var where = GetWhereClause(wikiClass);
     return(WikiApiAccessor.CargoQueryAsync(tables, Fields, where));
 }