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)); }