Пример #1
0
        public static async Task CheckTag(ABooru booru, string s1 = "pantyhose")
        {
            Search.Tag.SearchResult result = await booru.GetTagAsync(s1);

            Assert.Equal(s1, result.name);
            Assert.InRange(result.type, Search.Tag.TagType.Trivia, Search.Tag.TagType.Metadata);
            Assert.NotEqual((Search.Tag.TagType) 2, result.type);
            Assert.NotEqual(0, result.count);
        }
Пример #2
0
        public static async Task <FeatureRequest <Response.BooruTags, Error.BooruTags> > SearchTags(string[] idArgs)
        {
            if (idArgs.Length == 0)
            {
                return(new FeatureRequest <Response.BooruTags, Error.BooruTags>(null, Error.BooruTags.Help));
            }
            string id = idArgs[0];

            if (!tagInfos.ContainsKey(id))
            {
                return(new FeatureRequest <Response.BooruTags, Error.BooruTags>(null, Error.BooruTags.NotFound));
            }
            var           elem    = tagInfos[id];
            ABooru        b       = (ABooru)Activator.CreateInstance(elem.Item1, (BooruAuth)null);
            List <string> artists = new List <string>();
            List <string> sources = new List <string>();
            List <string> characs = new List <string>();
            int           i       = 0;

            foreach (string s in elem.Item2.tags)
            {
                i++;
                try
                {
                    switch ((await b.GetTagAsync(s)).type)
                    {
                    case BooruSharp.Search.Tag.TagType.Artist:
                        if (artists.Count == 10)
                        {
                            artists.Add("...");
                        }
                        else if (artists.Count < 10)
                        {
                            artists.Add(s);
                        }
                        break;

                    case BooruSharp.Search.Tag.TagType.Character:
                        if (characs.Count == 10)
                        {
                            characs.Add("...");
                        }
                        else if (characs.Count < 10)
                        {
                            characs.Add(s);
                        }
                        break;

                    case BooruSharp.Search.Tag.TagType.Copyright:
                        if (sources.Count == 10)
                        {
                            sources.Add("...");
                        }
                        else if (sources.Count < 10)
                        {
                            sources.Add(s);
                        }
                        break;
                    }
                }
                catch (BooruSharp.Search.InvalidTags)
                { }
            }
            uint pgcd = PGCD((uint)elem.Item2.height, (uint)elem.Item2.width);

            return(new FeatureRequest <Response.BooruTags, Error.BooruTags>(new Response.BooruTags()
            {
                artistTags = artists.ToArray(),
                characTags = characs.ToArray(),
                sourceTags = sources.ToArray(),
                imageUrl = elem.Item2.previewUrl,
                rating = GetColorFromRating(elem.Item2.rating),
                booruName = elem.Item1.ToString().Split('.').Last(),
                height = elem.Item2.height,
                width = elem.Item2.width,
                aspectRatio = new Tuple <long, long>(elem.Item2.width / pgcd, elem.Item2.height / pgcd)
            }, Error.BooruTags.None));
        }