From 8492bc994e9e8c2b7cc468efb6218f0307dd27e6 Mon Sep 17 00:00:00 2001 From: exsersewo Date: Sat, 4 Apr 2020 00:16:18 +0100 Subject: [PATCH] Fix E621Tags --- Booru.Net.Tests/Booru.Net.Tests.csproj | 4 +- Booru.Net.Tests/Program.cs | 52 +++++++++++++++-------- Booru.Net/Booru.Net.csproj | 4 +- Booru.Net/Converters/TagGroupConverter.cs | 21 ++------- Booru.Net/Models/Boards/E621Image.cs | 4 +- 5 files changed, 45 insertions(+), 40 deletions(-) diff --git a/Booru.Net.Tests/Booru.Net.Tests.csproj b/Booru.Net.Tests/Booru.Net.Tests.csproj index abc4ce5..eaeb3c5 100644 --- a/Booru.Net.Tests/Booru.Net.Tests.csproj +++ b/Booru.Net.Tests/Booru.Net.Tests.csproj @@ -3,8 +3,8 @@ Exe netcoreapp2.1 - 2020.3.29.0 - 2020.3.29.0 + 2020.4.10.0 + 2020.4.10.0 diff --git a/Booru.Net.Tests/Program.cs b/Booru.Net.Tests/Program.cs index ee18f01..f33329f 100644 --- a/Booru.Net.Tests/Program.cs +++ b/Booru.Net.Tests/Program.cs @@ -21,43 +21,61 @@ namespace Booru.Net.Tests { try { - IEnumerable posts = null; - Console.WriteLine(client); - switch(client) + string[] tags = new[] { "corona" }; + + switch (client) { case 0: - posts = await new DanbooruClient().GetImagesAsync().ConfigureAwait(false); + { + var posts = await new DanbooruClient().GetImagesAsync(tags).ConfigureAwait(false); + Console.WriteLine(posts.Any(x => x.Tags.Any(z=>tags.Contains(z) != null))); + } break; case 1: - var p = await new E621Client().GetImagesAsync().ConfigureAwait(false); - Console.WriteLine(p.Posts.Any(x => x.ImageUrl != null)); + { + var p = await new E621Client().GetImagesAsync(tags).ConfigureAwait(false); + Console.WriteLine(p.Posts.All(x => x.Tags.Any(z => z.Value.Any(y => tags.Contains(y))))); + } break; case 2: - posts = await new GelbooruClient().GetImagesAsync().ConfigureAwait(false); + { + var posts = await new GelbooruClient().GetImagesAsync(tags).ConfigureAwait(false); + Console.WriteLine(posts.Any(x => x.Tags.Any(z => tags.Contains(z) != null))); + } break; case 3: - posts = await new KonaChanClient().GetImagesAsync().ConfigureAwait(false); + { + var posts = await new KonaChanClient().GetImagesAsync(tags).ConfigureAwait(false); + Console.WriteLine(posts.Any(x => x.Tags.Any(z => tags.Contains(z) != null))); + } break; case 4: - posts = await new RealbooruClient().GetImagesAsync().ConfigureAwait(false); + { + var posts = await new RealbooruClient().GetImagesAsync(tags).ConfigureAwait(false); + Console.WriteLine(posts.Any(x => x.Tags.Any(z => tags.Contains(z) != null))); + } break; case 5: - posts = await new Rule34Client().GetImagesAsync().ConfigureAwait(false); + { + var posts = await new Rule34Client().GetImagesAsync(tags).ConfigureAwait(false); + Console.WriteLine(posts.Any(x => x.Tags.Any(z => tags.Contains(z) != null))); + } break; case 6: - posts = await new SafebooruClient().GetImagesAsync().ConfigureAwait(false); + { + var posts = await new SafebooruClient().GetImagesAsync(tags).ConfigureAwait(false); + Console.WriteLine(posts.Any(x => x.Tags.Any(z => tags.Contains(z) != null))); + } break; case 7: - posts = await new YandereClient().GetImagesAsync().ConfigureAwait(false); + { + var posts = await new YandereClient().GetImagesAsync(tags).ConfigureAwait(false); + Console.WriteLine(posts.Any(x => x.Tags.Any(z => tags.Contains(z) != null))); + } break; } - - if (posts != null) - { - Console.WriteLine(posts.Any(x => x.ImageUrl != null)); - } } catch(Exception ex) { diff --git a/Booru.Net/Booru.Net.csproj b/Booru.Net/Booru.Net.csproj index a28ad91..6e417f6 100644 --- a/Booru.Net/Booru.Net.csproj +++ b/Booru.Net/Booru.Net.csproj @@ -26,8 +26,8 @@ Yande.re true 2.0.3 LICENSE - 2020.3.0.0 - 2020.3.0.0 + 2020.4.9.0 + 2020.4.9.0 Fix some null ref issues with images diff --git a/Booru.Net/Converters/TagGroupConverter.cs b/Booru.Net/Converters/TagGroupConverter.cs index 8f285c8..9b31122 100644 --- a/Booru.Net/Converters/TagGroupConverter.cs +++ b/Booru.Net/Converters/TagGroupConverter.cs @@ -2,6 +2,7 @@ using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; +using System.Linq; namespace Booru.Net.Converters { @@ -16,25 +17,11 @@ namespace Booru.Net.Converters { var token = JToken.Load(reader); - List>> container = new List>>(); + Dictionary> container = new Dictionary>(); - foreach(var el in token.Children()) + foreach(JProperty el in token.Values()) { - Dictionary> att = new Dictionary>(); - foreach (JProperty prop in el.Properties()) - { - List children = new List(); - - foreach(var child in prop.Value.Children()) - { - children.Add(child.Value()); - } - - att.Add(prop.Name, children); - break; - } - - container.Add(att); + container.Add(el.Name, el.Value.Values().ToList()); } return container; diff --git a/Booru.Net/Models/Boards/E621Image.cs b/Booru.Net/Models/Boards/E621Image.cs index d28a0ea..ce951ae 100644 --- a/Booru.Net/Models/Boards/E621Image.cs +++ b/Booru.Net/Models/Boards/E621Image.cs @@ -26,9 +26,9 @@ namespace Booru.Net [JsonProperty("tags")] [JsonConverter(typeof(TagGroupConverter))] - private List>> PTags { get; set; } + private Dictionary> PTags { get; set; } - public IReadOnlyList>> Tags { get { return PTags.AsReadOnly(); } } + public IReadOnlyDictionary> Tags { get { return PTags; } } public override string ImageUrl => File.Url;