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;