BooruSharp 3.0.1
See the version list below for details.
dotnet add package BooruSharp --version 3.0.1
NuGet\Install-Package BooruSharp -Version 3.0.1
<PackageReference Include="BooruSharp" Version="3.0.1" />
paket add BooruSharp --version 3.0.1
#r "nuget: BooruSharp, 3.0.1"
// Install BooruSharp as a Cake Addin #addin nuget:?package=BooruSharp&version=3.0.1 // Install BooruSharp as a Cake Tool #tool nuget:?package=BooruSharp&version=3.0.1
BooruSharp
BooruSharp is a C# library to browse Booru websites easily<br/> You can download it from NuGet:
Install-Package BooruSharp
Install-Package BooruSharp.Others
BooruSharp currently handle the following websites:
- booru.allthefallen.moe
- danbooru.donmai.us
- e621.net
- e926.net
- furry.booru.org
- gelbooru.com
- konachan.com
- lolibooru.moe
- realbooru.com
- rule34.xxx
- safebooru.org
- sakugabooru.com
- beta.sankakucomplex.com
- xbooru.com
- yande.re
BooruSharp.Others allow to handle more websites that aren't booru:
- pixiv.net
Documentation
Version >= 2.0.0: https://boorusharp.zirk.eu/<br/> Version ⇐ 1.4.8: https://github.com/Xwilarg/BooruSharp/wiki<br/> Transition from 1.4.8 to 2.0.0: https://boorusharp.zirk.eu/transition.html
Features availability
Booru | Multiple Random Images | Post by ID | Post by MD5 | Tag by ID | Comment API | Last Comments API | Wiki API | Related Tag API | Post Count API | Favorite API |
---|---|---|---|---|---|---|---|---|---|---|
Atfbooru | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ✔️ | ✔️ | ❌ | ❌ |
Danbooru Donmai | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ✔️ | ✔️ | ❌ | ❌ |
E621 | ✔️ | ❌ | ✔️ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
E926 | ✔️ | ❌ | ✔️ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
Furry Booru | ❌ | ✔️ | ❌ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ✔️ |
Gelbooru | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ✔️ |
Konachan | ✔️ | ❌ | ❌ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ |
Lolibooru | ✔️ | ❌ | ❌ | ✔️ | ❌ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ |
Realbooru | ❌ | ✔️ | ❌ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ✔️ |
Rule 34 | ❌ | ✔️ | ❌ | ✔️ | ❌ | ❌ | ❌ | ❌ | ✔️ | ✔️ |
Safebooru | ❌ | ✔️ | ❌ | ✔️ | ❌ | ❌ | ❌ | ❌ | ✔️ | ✔️ |
Sakugabooru | ✔️ | ❌ | ❌ | ✔️ | ✔️ | ❌ | ✔️ | ✔️ | ✔️ | ❌ |
Sankaku Complex | ✔️ | ❌ | ❌ | ❌ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ❌ |
Xbooru | ❌ | ✔️ | ❌ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ✔️ |
Yandere | ✔️ | ❌ | ❌ | ✔️ | ✔️ | ❌ | ✔️ | ✔️ | ✔️ | ❌ |
Pixiv | ❌ | ✔️ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✔️ | ✔️ |
Examples
Random image:
BooruSharp.Booru.Gelbooru booru = new BooruSharp.Booru.Gelbooru();
BooruSharp.Search.Post.SearchResult result = await booru.GetRandomPostAsync("hibiki_(kantai_collection)", "school_swimsuit");
Console.WriteLine("Image preview URL: " + result.previewUrl.AbsoluteUri + Environment.NewLine +
"Image URL: " + result.fileUrl.AbsoluteUri + Environment.NewLine +
"Image is safe: " + (result.rating == BooruSharp.Search.Post.Rating.Safe) + Environment.NewLine +
"Tags on the image: " + String.Join(", ", result.tags));
Get many random images at once:
BooruSharp.Booru.SankakuComplex booru = new BooruSharp.Booru.SankakuComplex();
BooruSharp.Search.Post.SearchResult[] result = await booru.GetRandomPostsAsync(10, "ifrit_(arknights)", "silence_(arknights)");
Console.WriteLine(string.Join(Environment.NewLine, result.Select(x => "Random Image: " + x.fileUrl)));
Get tag:
BooruSharp.Booru.Safebooru booru = new BooruSharp.Booru.Safebooru();
BooruSharp.Search.Tag.SearchResult result = await booru.GetTagAsync("cirno");
Console.WriteLine("Tag type: " + result.type + Environment.NewLine +
"ID: " + result.id);
Get Wiki entry:
BooruSharp.Booru.Konachan booru = new BooruSharp.Booru.Konachan();
BooruSharp.Search.Wiki.SearchResult result = await booru.GetWikiAsync("loli");
Console.WriteLine("Description: " + result.body + Environment.NewLine +
"ID: " + result.id + Environment.NewLine +
"Created at: " + result.creation.ToString("dd/MM/yy HH:mm:ss") + Environment.NewLine +
"Last update at: " + result.lastUpdate.ToString("dd/MM/yy HH:mm:ss"));
Get related tags:
BooruSharp.Booru.Yandere booru = new BooruSharp.Booru.Yandere();
BooruSharp.Search.Related.SearchResult[] results = await booru.GetRelatedAsync("see_through");
Console.WriteLine(String.Join(Environment.NewLine,
results.Select(delegate (BooruSharp.Search.Related.SearchResult res) { return ("Name: " + res.name +" (" + res.count + ")"); })));
Get comments:
BooruSharp.Booru.Lolibooru booru = new BooruSharp.Booru.Lolibooru();
BooruSharp.Search.Comment.SearchResult[] results = await booru.GetCommentAsync(134097);
Console.WriteLine(String.Join(Environment.NewLine,
results.Select(delegate (BooruSharp.Search.Comment.SearchResult res) { return ("Author: " + res.authorName + ", the " + res.creation.ToString("dd/MM/yy HH:mm:ss") + " - " + res.body); })));
Add to favorite:
BooruSharp.Booru.Safebooru booru = new BooruSharp.Booru.Safebooru();
booru.SetBooruAuth(new BooruSharp.Booru.BooruAuth("yourUserId", "yourPasswordHash")); // See https://boorusharp.zirk.eu/#authentification
await booru.AddFavoriteAsync(1759793);
Get all character tags containing a string:
BooruSharp.Booru.Yandere yandere = new BooruSharp.Booru.Yandere();
BooruSharp.Search.Tag.SearchResult[] results = await yandere.GetTagsAsync("tsukiko");
Console.WriteLine(String.Join(Environment.NewLine,
results.Where(delegate (BooruSharp.Search.Tag.SearchResult res) { return (res.type == BooruSharp.Search.Tag.TagType.Character); })
.Select(delegate (BooruSharp.Search.Tag.SearchResult res) { return (res.name); })));
Want to contribute
Feel free to open a pull request.
Need more help
Feel free to open an issue or come ask on Discord.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Newtonsoft.Json (>= 12.0.3)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on BooruSharp:
Package | Downloads |
---|---|
BooruSharp.Others
Extension of BooruSharp to handle non-booru websites and handle them like the others |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
4.0.0-beta | 398 | 1/10/2023 |
3.6.0 | 1,022 | 8/26/2023 |
3.5.5 | 10,792 | 9/28/2022 |
3.5.4 | 2,712 | 8/18/2022 |
3.5.3 | 425 | 8/17/2022 |
3.5.3-beta | 157 | 8/14/2022 |
3.5.2-beta | 153 | 8/12/2022 |
3.5.1-beta | 152 | 8/12/2022 |
3.5.0-beta | 142 | 8/12/2022 |
3.4.0 | 613 | 8/11/2022 |
3.3.0 | 541 | 6/19/2022 |
3.2.0 | 468 | 5/31/2022 |
3.1.0 | 1,009 | 3/20/2022 |
3.0.4 | 820 | 1/19/2022 |
3.0.3 | 2,445 | 5/21/2021 |
3.0.2 | 1,252 | 2/5/2021 |
3.0.1 | 876 | 11/17/2020 |
3.0.0 | 1,050 | 11/12/2020 |
2.11.0 | 1,690 | 9/7/2020 |
2.10.0 | 1,380 | 8/18/2020 |
2.9.0 | 867 | 8/17/2020 |
2.8.1 | 535 | 8/17/2020 |
2.8.0 | 2,290 | 8/2/2020 |
2.7.0 | 648 | 7/9/2020 |
2.6.1 | 518 | 7/8/2020 |
2.6.0 | 536 | 7/8/2020 |
2.5.0 | 478 | 7/7/2020 |
2.4.0 | 475 | 7/6/2020 |
2.3.1 | 531 | 6/23/2020 |
2.3.0 | 539 | 6/22/2020 |
2.2.0 | 473 | 6/22/2020 |
2.1.0 | 580 | 6/4/2020 |
2.0.3 | 1,063 | 3/24/2020 |
2.0.2 | 527 | 3/24/2020 |
2.0.1 | 522 | 3/23/2020 |
2.0.0 | 536 | 3/21/2020 |
1.4.8 | 672 | 2/21/2020 |
1.4.7 | 565 | 1/31/2020 |
1.4.6 | 658 | 9/24/2019 |
1.4.4 | 1,019 | 8/1/2019 |
1.4.3 | 682 | 7/13/2019 |
1.4.2 | 823 | 5/30/2019 |
1.4.1 | 891 | 4/8/2019 |
1.4.0 | 762 | 2/27/2019 |
1.3.6 | 934 | 1/10/2019 |
1.3.5 | 774 | 1/5/2019 |
1.3.3 | 960 | 10/17/2018 |
1.3.1 | 923 | 8/21/2018 |
1.3.0 | 948 | 8/14/2018 |
1.2.0 | 913 | 7/31/2018 |
1.1.1 | 857 | 7/30/2018 |
1.1.0 | 899 | 7/27/2018 |
1.0.1 | 922 | 7/22/2018 |