From 4e23e3167abadb9450f5507d7968e26d922fa204 Mon Sep 17 00:00:00 2001 From: AndrewVynnytskyi Date: Fri, 26 Jan 2024 23:13:39 +0200 Subject: [PATCH] Add SFW content to Bot --- .idea/uiDesigner.xml | 124 ++++++++++++++++++ src/main/java/org/hentaibot/HentaiBot.java | 35 ++++- .../java/org/hentaibot/dtos/Rule34Dto.java | 28 +--- .../java/org/hentaibot/dtos/WaifuDto.java | 18 +++ .../org/hentaibot/network/AnimeQueries.java | 4 - .../hentaibot/network/AnimeWaifuQueries.java | 24 ++++ .../org/hentaibot/network/ClientNSFW.java | 20 +++ .../java/org/hentaibot/network/ClientSFW.java | 20 +++ .../hentaibot/network/HentaiWaifuQueries.java | 20 +++ 9 files changed, 260 insertions(+), 33 deletions(-) create mode 100644 .idea/uiDesigner.xml create mode 100644 src/main/java/org/hentaibot/dtos/WaifuDto.java delete mode 100644 src/main/java/org/hentaibot/network/AnimeQueries.java create mode 100644 src/main/java/org/hentaibot/network/AnimeWaifuQueries.java create mode 100644 src/main/java/org/hentaibot/network/ClientNSFW.java create mode 100644 src/main/java/org/hentaibot/network/ClientSFW.java create mode 100644 src/main/java/org/hentaibot/network/HentaiWaifuQueries.java diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml new file mode 100644 index 0000000..2b63946 --- /dev/null +++ b/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/org/hentaibot/HentaiBot.java b/src/main/java/org/hentaibot/HentaiBot.java index d2149c6..f6a5c7f 100644 --- a/src/main/java/org/hentaibot/HentaiBot.java +++ b/src/main/java/org/hentaibot/HentaiBot.java @@ -2,7 +2,10 @@ import org.apache.log4j.Logger; import org.hentaibot.dtos.Rule34Dto; +import org.hentaibot.dtos.WaifuDto; +import org.hentaibot.network.AnimeWaifuQueries; import org.hentaibot.network.Client; +import org.hentaibot.network.ClientSFW; import org.hentaibot.network.HentaiQueries; import org.telegram.telegrambots.bots.TelegramLongPollingBot; import org.telegram.telegrambots.meta.api.methods.send.SendAnimation; @@ -30,7 +33,7 @@ public class HentaiBot extends TelegramLongPollingBot { private static final Logger logger = Logger.getLogger(HentaiBot.class.getName()); private static final HentaiQueries hentaiClient = Client.getNsfwClient(); - + private static final AnimeWaifuQueries animeClient = ClientSFW.getSfwClient(); private final String botName; public HentaiBot(String botName, String botToken) { @@ -85,7 +88,7 @@ public void respondNsfw(String chatId) { try { hentaiClient - .getNsfw("anime", pageId) + .getNsfw("female", pageId) .enqueue( new Callback<>() { @Override @@ -120,6 +123,33 @@ public void onFailure(Call> call, Throwable throwable) { } public void respondSfw(String chatId) { + final String[] categories = new String[]{"waifu", "neko", "shinobu", "megumin", "hug", "awoo", "kiss", "lick", "smug", "blush", "smile", "wave", "nom", "glomp", "slap", "kill", "happy", "wink", "poke", "dance", "cringe"}; + String urlCategory = categories[random.nextInt(0, categories.length)]; + animeClient + .getSFW(urlCategory) + .enqueue( + new Callback<>() { + @Override + public void onResponse(Call call, Response response) { + var picSDto = response.body(); + logger.info("\nResponse:\n" + picSDto.getUrl() + "\n"); + + if (picSDto == null) { + onFailure(call, new IOException("Response body is null")); + return; + } + + var path = picSDto.getUrl(); + respondWithContent(chatId, path); + } + + @Override + public void onFailure(Call call, Throwable throwable) { + logger.error(throwable.getMessage()); + respondWithText(chatId, "Failed to get hentai. Try again later"); + } + } + ); } @@ -174,6 +204,7 @@ public void respondWithVideo(String chatId, InputFile file) { response.setChatId(chatId); response.setVideo(file); + try { execute(response); } catch (TelegramApiException ex) { diff --git a/src/main/java/org/hentaibot/dtos/Rule34Dto.java b/src/main/java/org/hentaibot/dtos/Rule34Dto.java index 04bba51..55b9cbf 100644 --- a/src/main/java/org/hentaibot/dtos/Rule34Dto.java +++ b/src/main/java/org/hentaibot/dtos/Rule34Dto.java @@ -2,33 +2,7 @@ // DTO - data transfer object -/** - * - * { - * "preview_url": "https://api-cdn.rule34.xxx/thumbnails/5377/thumbnail_4388d1ab31d98c6d0fd7ed114456b79f.jpg", - * "sample_url": "https://api-cdn.rule34.xxx/samples/5377/sample_4388d1ab31d98c6d0fd7ed114456b79f.jpg", - * "file_url": "https://api-cdn.rule34.xxx/images/5377/4388d1ab31d98c6d0fd7ed114456b79f.png", - * "directory": 5377, - * "hash": "4388d1ab31d98c6d0fd7ed114456b79f", - * "width": 2048, - * "height": 12672, - * "id": 9416035, - * "image": "4388d1ab31d98c6d0fd7ed114456b79f.png", - * "change": 1706095421, - * "owner": "antipenitant", - * "parent_id": 0, - * "rating": "explicit", - * "sample": true, - * "sample_height": 5259, - * "sample_width": 850, - * "score": 0, - * "tags": "anus ass breasts danganronpa harukawa_maki pussy tagme ultimateenf", - * "source": "https://www.deviantart.com/ultimateenf/art/Maki-chained-down-849989950", - * "status": "active", - * "has_notes": false, - * "comment_count": 0 - * } - */ + public class Rule34Dto { private String file_url; private String tags; diff --git a/src/main/java/org/hentaibot/dtos/WaifuDto.java b/src/main/java/org/hentaibot/dtos/WaifuDto.java new file mode 100644 index 0000000..41cee7b --- /dev/null +++ b/src/main/java/org/hentaibot/dtos/WaifuDto.java @@ -0,0 +1,18 @@ +package org.hentaibot.dtos; + +public class WaifuDto { + private String url; + + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + @Override + public String toString() { + return "File url: " + url; + } +} diff --git a/src/main/java/org/hentaibot/network/AnimeQueries.java b/src/main/java/org/hentaibot/network/AnimeQueries.java deleted file mode 100644 index 9c3c121..0000000 --- a/src/main/java/org/hentaibot/network/AnimeQueries.java +++ /dev/null @@ -1,4 +0,0 @@ -package org.hentaibot.network; - -public interface AnimeQueries { -} diff --git a/src/main/java/org/hentaibot/network/AnimeWaifuQueries.java b/src/main/java/org/hentaibot/network/AnimeWaifuQueries.java new file mode 100644 index 0000000..f739198 --- /dev/null +++ b/src/main/java/org/hentaibot/network/AnimeWaifuQueries.java @@ -0,0 +1,24 @@ +package org.hentaibot.network; + +import org.hentaibot.dtos.WaifuDto; +import retrofit2.Call; +import retrofit2.http.GET; +import retrofit2.http.Path; +import retrofit2.http.Query; + +import java.util.List; +import java.util.Random; + +public interface AnimeWaifuQueries { + + Random random = new Random(); + //String[] categories = new String[]{"waifu", "neko", "shinobu", "megumin", "bully", "cuddle", "cry", "hug", "awoo", "kiss", "lick", "pat", "smug", "bonk", "yeet", "blush", "smile", "wave", "highfive", "handhold", "nom", "bite", "glomp", "slap", "kill", "kick", "happy", "wink", "poke", "dance", "cringe"}; + static String urlCategory = "waifu"; + static String urlForm = "/sfw/"; //+ urlCategory; + @GET("/sfw/{category}") + Call getSFW( + + @Path("category") String category + + ); +} diff --git a/src/main/java/org/hentaibot/network/ClientNSFW.java b/src/main/java/org/hentaibot/network/ClientNSFW.java new file mode 100644 index 0000000..f531418 --- /dev/null +++ b/src/main/java/org/hentaibot/network/ClientNSFW.java @@ -0,0 +1,20 @@ +package org.hentaibot.network; + +import retrofit2.Retrofit; +import retrofit2.converter.gson.GsonConverterFactory; + +public class ClientNSFW { + + private static Retrofit clientNWaifu = null; + + private static final String UrlNclient = "https://api.waifu.pics"; + + public HentaiWaifuQueries getNSFWClient() + { + if(clientNWaifu == null) + { + clientNWaifu = new Retrofit.Builder().baseUrl(UrlNclient).addConverterFactory(GsonConverterFactory.create()).build(); + } + return clientNWaifu.create(HentaiWaifuQueries.class); + } +} diff --git a/src/main/java/org/hentaibot/network/ClientSFW.java b/src/main/java/org/hentaibot/network/ClientSFW.java new file mode 100644 index 0000000..dff2d44 --- /dev/null +++ b/src/main/java/org/hentaibot/network/ClientSFW.java @@ -0,0 +1,20 @@ +package org.hentaibot.network; + +import retrofit2.Retrofit; +import retrofit2.converter.gson.GsonConverterFactory; + +public class ClientSFW { + + private static Retrofit clientWaifu = null; + + private static final String UrlClient = "https://api.waifu.pics/"; + + public static AnimeWaifuQueries getSfwClient() + { + if (clientWaifu == null) + { + clientWaifu = new Retrofit.Builder().baseUrl(UrlClient).addConverterFactory(GsonConverterFactory.create()).build(); + } + return clientWaifu.create(AnimeWaifuQueries.class); + } +} diff --git a/src/main/java/org/hentaibot/network/HentaiWaifuQueries.java b/src/main/java/org/hentaibot/network/HentaiWaifuQueries.java new file mode 100644 index 0000000..fe330a5 --- /dev/null +++ b/src/main/java/org/hentaibot/network/HentaiWaifuQueries.java @@ -0,0 +1,20 @@ +package org.hentaibot.network; + +import org.hentaibot.dtos.WaifuDto; +import retrofit2.Call; +import retrofit2.http.GET; +import retrofit2.http.Query; + +import java.util.List; + +public interface HentaiWaifuQueries { + + @GET("/nsfw/") + Call> getNSFW( + @Query("category") String category + ); + + + + +}