diff --git a/Booru.Net.Tests/Booru.Net.Tests.csproj b/Booru.Net.Tests/Booru.Net.Tests.csproj
new file mode 100644
index 0000000..51ab5c4
--- /dev/null
+++ b/Booru.Net.Tests/Booru.Net.Tests.csproj
@@ -0,0 +1,12 @@
+
+
+
+ Exe
+ netcoreapp2.1
+
+
+
+
+
+
+
diff --git a/Booru.Net.Tests/Program.cs b/Booru.Net.Tests/Program.cs
new file mode 100644
index 0000000..939686d
--- /dev/null
+++ b/Booru.Net.Tests/Program.cs
@@ -0,0 +1,20 @@
+using System.Threading.Tasks;
+using System;
+
+namespace Booru.Net.Tests
+{
+ class Program
+ {
+ static void Main(string[] args) => StartAsync().GetAwaiter().GetResult();
+
+
+ static async Task StartAsync()
+ {
+ var BooruClient = new BooruClient();
+
+ var posts = await BooruClient.GetE621ImagesAsync("nintendo");
+
+ Console.ReadLine();
+ }
+ }
+}
diff --git a/Booru.Net.sln b/Booru.Net.sln
index 78bbf4d..735b899 100644
--- a/Booru.Net.sln
+++ b/Booru.Net.sln
@@ -3,7 +3,9 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.27703.2026
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Booru.Net", "Booru.Net\Booru.Net.csproj", "{BC612FDE-FC2D-42D8-AD7F-988874B6A839}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Booru.Net", "Booru.Net\Booru.Net.csproj", "{BC612FDE-FC2D-42D8-AD7F-988874B6A839}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Booru.Net.Tests", "Booru.Net.Tests\Booru.Net.Tests.csproj", "{747B6EAC-E4EB-4882-BDEB-5DEF9A3CA3E3}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -15,6 +17,10 @@ Global
{BC612FDE-FC2D-42D8-AD7F-988874B6A839}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BC612FDE-FC2D-42D8-AD7F-988874B6A839}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BC612FDE-FC2D-42D8-AD7F-988874B6A839}.Release|Any CPU.Build.0 = Release|Any CPU
+ {747B6EAC-E4EB-4882-BDEB-5DEF9A3CA3E3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {747B6EAC-E4EB-4882-BDEB-5DEF9A3CA3E3}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {747B6EAC-E4EB-4882-BDEB-5DEF9A3CA3E3}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {747B6EAC-E4EB-4882-BDEB-5DEF9A3CA3E3}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/Booru.Net/Booru.Net.csproj b/Booru.Net/Booru.Net.csproj
index ee2c6e1..a6b4b81 100644
--- a/Booru.Net/Booru.Net.csproj
+++ b/Booru.Net/Booru.Net.csproj
@@ -23,6 +23,7 @@ Yande.re
booru imageboard api wrapper
https://github.com/exsersewo/Booru.Net/blob/master/LICENSE
true
+ 1.0.0.2
diff --git a/Booru.Net/Client.cs b/Booru.Net/Client.cs
index 576925c..60f9d39 100644
--- a/Booru.Net/Client.cs
+++ b/Booru.Net/Client.cs
@@ -121,5 +121,22 @@ namespace Booru.Net
}
else return null;
}
- }
+
+ public async Task> GetSafebooruImagesAsync(params string[] tags)
+ => await GetSafebooruImagesAsync(tags.AsEnumerable());
+ public async Task> GetRule34ImagesAsync(params string[] tags)
+ => await GetRule34ImagesAsync(tags.AsEnumerable());
+ public async Task> GetRealBooruImagesAsync(params string[] tags)
+ => await GetRealBooruImagesAsync(tags.AsEnumerable());
+ public async Task> GetDanbooruImagesAsync(params string[] tags)
+ => await GetDanbooruImagesAsync(tags.AsEnumerable());
+ public async Task> GetGelbooruImagesAsync(params string[] tags)
+ => await GetGelbooruImagesAsync(tags.AsEnumerable());
+ public async Task> GetKonaChanImagesAsync(params string[] tags)
+ => await GetKonaChanImagesAsync(tags.AsEnumerable());
+ public async Task> GetE621ImagesAsync(params string[] tags)
+ => await GetE621ImagesAsync(tags.AsEnumerable());
+ public async Task> GetYandereImagesAsync(params string[] tags)
+ => await GetYandereImagesAsync(tags.AsEnumerable());
+ }
}
diff --git a/Booru.Net/Models/Boards/E621Image.cs b/Booru.Net/Models/Boards/E621Image.cs
index e525753..1fda44a 100644
--- a/Booru.Net/Models/Boards/E621Image.cs
+++ b/Booru.Net/Models/Boards/E621Image.cs
@@ -2,6 +2,6 @@
{
public class E621Image : GelbooruImage
{
- public override string PostUrl { get { return "https://e621.net/post/show/" + ID; } }
+ public override string PostUrl { get { return "https://e621.net/post/show/" + ID; } }
}
}
diff --git a/Booru.Net/Models/Boards/GelbooruImage.cs b/Booru.Net/Models/Boards/GelbooruImage.cs
index 4bb245a..2b83442 100644
--- a/Booru.Net/Models/Boards/GelbooruImage.cs
+++ b/Booru.Net/Models/Boards/GelbooruImage.cs
@@ -7,12 +7,12 @@ namespace Booru.Net
{
[JsonProperty("directory")]
public string Directory { get; set; }
-
+
[JsonProperty("tags")]
private string Ptags { get; set; }
-
+
public IReadOnlyList Tags { get { return Ptags.Split(' '); } }
-
+
public virtual string PostUrl { get { return "https://gelbooru.com/index.php?page=post&s=view&id=" + ID; } }
}
}
\ No newline at end of file
diff --git a/Booru.Net/WebRequest.cs b/Booru.Net/WebRequest.cs
index 1c4fd8b..0a1b0e7 100644
--- a/Booru.Net/WebRequest.cs
+++ b/Booru.Net/WebRequest.cs
@@ -2,6 +2,7 @@
using System.Net;
using System.Threading.Tasks;
using System.IO;
+using System.Reflection;
namespace Booru.Net
{
@@ -9,12 +10,14 @@ namespace Booru.Net
{
public static HttpWebRequest CreateWebRequest(Uri uri)
{
- var cli = (HttpWebRequest)System.Net.WebRequest.Create(uri);
+ var ver = Assembly.GetExecutingAssembly().GetName().Version;
- cli.AllowAutoRedirect = true;
+ var cli = (HttpWebRequest)System.Net.WebRequest.Create(uri);
+ cli.UserAgent = "Mozilla/5.0 Booru.Net/{VERSION} +https://github.com/exsersewo/Booru.Net".Replace("{VERSION}", $"{ver.Major}.{ver.MajorRevision}.{ver.Minor}.{ver.MinorRevision}");
+ cli.AllowAutoRedirect = true;
cli.KeepAlive = false;
cli.Timeout = 20000;
- cli.ProtocolVersion = HttpVersion.Version10;
+ cli.ProtocolVersion = HttpVersion.Version11;
return cli;
}