Beispiel #1
0
        public string TaggedFileString(Dictionary <string, long> counts)
        {
            // danbooru:
            // app/presenters/tag_set_presenter.rb:66 humanized_essential_tag_string

            // Rules:
            // 5 character tags max ("{n - 5} more" if total number exceeds 5)
            // 1 copyright tag, same rule when exceeded
            // "drawn by {artist} if an artist is present
            //
            // First 2 are sorted by post count, descending

            string result = "";

            if (HasCharacterTags)
            {
                // I hope danbooru trims it right, but just to be sure
                // First instance of "_(" denotes start of copyright part of character tag. Remove this part
                List <string> characters = CharacterTags.OrderByDescending(e => counts[e]).RemoveAfterFirst("_(")
                                           .Select(s => s.Replace('_', ' ')).ToList();

                if (characters.Count > 5)
                {
                    int count = characters.Count;
                    characters = characters.Take(5).ToList();
                    characters.Add($"{count - 5} more");
                }

                result += $"{characters.ToSentence()} ";
            }

            if (HasCopyrightTags)
            {
                // Extra copyright description not needed
                List <string> copyrights = CopyrightTags.OrderByDescending(e => counts[e]).RemoveAfterFirst("_(")
                                           .Select(s => s.Replace('_', ' ')).ToList();

                if (copyrights.Count > 1)
                {
                    int count = copyrights.Count;
                    copyrights = copyrights.Take(1).ToList();
                    copyrights.Add($"{count - 1} more");
                }

                result += $"({copyrights.ToSentence()}) ";
            }

            if (HasArtistTags)
            {
                // Artist tags aren't humanized?
                result += $"drawn by {ArtistTags.ToSentence()} ";
            }

            return(NotEmpty(result) ? $"{result}- {MD5}" : MD5);
        }
        public void Can_hit_endpoint()
        {
            ArtistTags tags = Api <ArtistTags> .Get
                              .WithParameter("artistId", "1")
                              .Please();

            Assert.That(tags, Is.Not.Null);
            Assert.That(tags.TagList.Count, Is.GreaterThan(0));
            Assert.That(tags.TagList.FirstOrDefault().Id, Is.Not.Empty);
            Assert.That(tags.TagList.Where(x => x.Id == "rock").FirstOrDefault().Text, Is.EqualTo("rock"));
        }
        public void Can_hit_endpoint_with_paging()
        {
            ArtistTags artistBrowse = Api <ArtistTags> .Get
                                      .WithParameter("artistId", "1")
                                      .WithParameter("page", "2")
                                      .WithParameter("pageSize", "1")
                                      .Please();

            Assert.That(artistBrowse, Is.Not.Null);
            Assert.That(artistBrowse.Page, Is.EqualTo(2));
            Assert.That(artistBrowse.PageSize, Is.EqualTo(1));
        }