package com.yutou.qqbot.models.setu; import com.alibaba.fastjson.JSONObject; import com.yutou.qqbot.QQBotManager; import com.yutou.qqbot.interfaces.DownloadInterface; import com.yutou.qqbot.models.Model; import com.yutou.qqbot.utlis.HttpTools; import com.yutou.qqbot.utlis.Log; import com.yutou.qqbot.utlis.StringUtils; import net.mamoe.mirai.event.events.MessageEvent; import net.mamoe.mirai.message.data.MessageChainBuilder; import java.io.File; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; import java.util.regex.Matcher; import java.util.regex.Pattern; public class GetSeTu extends Model { @Override public boolean isUserPublic() { return true; } @Override public String[] getUsePowers() { return new String[0]; } @Override public String getModelName() { return "随机二次元图"; } @Override public void onMessage(Long qq, MessageEvent event, boolean isGroup) { super.onMessage(qq, event, isGroup); boolean isRun = false; boolean isR18 = false; if (msg.contains("来点") && msg.contains("色图")) { isRun = true; } else if (msg.contains("来点") && msg.contains("涩图")) { isRun = true; isR18 = true; msg = msg.replace("涩图", "色图"); } if (isRun) { Log.i(event.getSource().getFromId() + " > " + msg); Pattern pattern = Pattern.compile("来点(.*?)色图"); Matcher matcher = pattern.matcher(msg); String key = null; if (matcher.find()) { key = matcher.group(1); } if (!getSeTu("tag", key, isR18, false, qq, event)) { if (!getSeTu("tag", key, isR18, true, qq, event)) { if (!getSeTu("keyword", key, isR18, true, qq, event)) { QQBotManager.getInstance().sendMessage(qq, "找不到喵~ 不如随便来点吧~"); getSeTu("tag", null, false, false, qq, event); } } } } } private boolean getSeTu(String model, String key, boolean r18, boolean fuzzyR18, Long qq, MessageEvent event) { String url = "https://api.lolicon.app/setu/v2?r18=0&size=regular"; if (r18) { url = "https://api.lolicon.app/setu/v2?r18=1&size=regular"; } if (!StringUtils.isEmpty(key)) { key=key.replace(" ","|"); if (r18) { url = "https://api.lolicon.app/setu/v2?" + model + "=" + URLEncoder.encode(key, StandardCharsets.UTF_8) + "&r18=1&size=regular"; } else { url = "https://api.lolicon.app/setu/v2?" + model + "=" + URLEncoder.encode(key, StandardCharsets.UTF_8) + "&r18=0&size=regular"; } } if (fuzzyR18) { url = url.replace("&r18=0", "&r18=2").replace("&r18=1", "&r18=2"); } String ret = HttpTools.get(url); JSONObject json = JSONObject.parseObject(ret); if (json.getJSONArray("data").size() == 0) { return false; } JSONObject item = json.getJSONArray("data").getJSONObject(0); StringBuilder builder = new StringBuilder(); builder.append(item.getString("title")); builder.append("\n"); builder.append("P站ID:"); builder.append(item.getInteger("pid")); builder.append("\n"); builder.append("R18:"); if (item.getBoolean("r18")) { builder.append("YES!"); } else { builder.append("NO~"); } builder.append("\n"); builder.append("tags:"); for (Object tags : item.getJSONArray("tags")) { builder.append(tags).append("、"); } HttpTools.download(item.getJSONObject("urls").getString("regular"), System.currentTimeMillis() + "_setu.jpg", true , new DownloadInterface() { @Override public void onDownload(File file) { super.onDownload(file); QQBotManager.getInstance().sendMessage(file, qq, event.getMessage(), builder.toString()); } @Override public void onError(Exception e) { super.onError(e); QQBotManager.getInstance().sendMessage(qq, "获取失败喵~"); e.printStackTrace(); } }); return true; } public static void main(String[] args) { String msg = "来点1色图"; Pattern pattern = Pattern.compile("来点(.*?)色图"); Matcher matcher = pattern.matcher(msg); String key = null; if (matcher.find()) { key = matcher.group(1); } System.out.println("key = " + key); } }