2022-01-01 23:36:12 +08:00
|
|
|
|
package com.yutou.qqbot.models.setu;
|
|
|
|
|
|
2022-04-20 21:17:49 +08:00
|
|
|
|
import com.alibaba.fastjson.JSONArray;
|
2022-01-02 00:14:27 +08:00
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
2022-01-01 23:36:12 +08:00
|
|
|
|
import com.yutou.qqbot.QQBotManager;
|
|
|
|
|
import com.yutou.qqbot.interfaces.DownloadInterface;
|
|
|
|
|
import com.yutou.qqbot.models.Model;
|
|
|
|
|
import com.yutou.qqbot.utlis.HttpTools;
|
2022-04-17 01:49:48 +08:00
|
|
|
|
import com.yutou.qqbot.utlis.Log;
|
2022-04-20 21:17:49 +08:00
|
|
|
|
import com.yutou.qqbot.utlis.RedisTools;
|
2022-04-17 01:20:40 +08:00
|
|
|
|
import com.yutou.qqbot.utlis.StringUtils;
|
2022-01-01 23:36:12 +08:00
|
|
|
|
import net.mamoe.mirai.event.events.MessageEvent;
|
2022-04-20 21:17:49 +08:00
|
|
|
|
import net.mamoe.mirai.message.data.At;
|
2022-01-01 23:36:12 +08:00
|
|
|
|
import net.mamoe.mirai.message.data.MessageChainBuilder;
|
2022-04-20 21:17:49 +08:00
|
|
|
|
import redis.clients.jedis.Jedis;
|
2022-01-01 23:36:12 +08:00
|
|
|
|
|
|
|
|
|
import java.io.File;
|
2022-04-17 01:20:40 +08:00
|
|
|
|
import java.net.URLEncoder;
|
|
|
|
|
import java.nio.charset.StandardCharsets;
|
2022-04-20 21:17:49 +08:00
|
|
|
|
import java.util.*;
|
2022-04-17 21:37:08 +08:00
|
|
|
|
import java.util.regex.Matcher;
|
|
|
|
|
import java.util.regex.Pattern;
|
2022-01-01 23:36:12 +08:00
|
|
|
|
|
|
|
|
|
public class GetSeTu extends Model {
|
|
|
|
|
@Override
|
|
|
|
|
public boolean isUserPublic() {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public String[] getUsePowers() {
|
|
|
|
|
return new String[0];
|
|
|
|
|
}
|
|
|
|
|
|
2022-04-08 15:39:59 +08:00
|
|
|
|
@Override
|
|
|
|
|
public String getModelName() {
|
|
|
|
|
return "随机二次元图";
|
|
|
|
|
}
|
|
|
|
|
|
2022-04-20 21:17:49 +08:00
|
|
|
|
@Override
|
|
|
|
|
public void onTime(Long qq, String time) {
|
|
|
|
|
super.onTime(qq, time);
|
|
|
|
|
if ("00:00:00".equals(time)) {
|
|
|
|
|
del();
|
2022-04-22 00:21:39 +08:00
|
|
|
|
} else if (RedisTools.get("Setu_time", "23:59:00").equals(time)) {
|
2022-04-20 21:17:49 +08:00
|
|
|
|
send();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void del() {
|
|
|
|
|
Jedis redis = RedisTools.getRedis();
|
|
|
|
|
redis.select(RedisTools.QQBOT_USER);
|
|
|
|
|
Set<String> keys = redis.keys("Setu_*");
|
|
|
|
|
for (String key : keys) {
|
|
|
|
|
redis.del(key);
|
|
|
|
|
}
|
|
|
|
|
redis.close();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void send() {
|
|
|
|
|
Jedis redis = RedisTools.getRedis();
|
|
|
|
|
redis.select(RedisTools.QQBOT_USER);
|
|
|
|
|
Set<String> keys = redis.keys("Setu_*");
|
2022-04-22 00:21:39 +08:00
|
|
|
|
Log.i("进入涩图打印:" + keys.size());
|
2022-04-20 21:17:49 +08:00
|
|
|
|
redis.close();
|
|
|
|
|
for (String key : keys) {
|
2022-04-22 00:21:39 +08:00
|
|
|
|
if ("Setu_time".equals(key)) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
2022-04-20 21:17:49 +08:00
|
|
|
|
String ret = RedisTools.get(key);
|
|
|
|
|
MessageChainBuilder builder = null;
|
2022-04-22 00:21:39 +08:00
|
|
|
|
Log.i(key, ret);
|
2022-04-20 21:17:49 +08:00
|
|
|
|
if (!StringUtils.isEmpty(ret)) {
|
2022-04-22 00:24:03 +08:00
|
|
|
|
JSONArray array = JSONArray.parseArray(ret);
|
2022-04-20 21:17:49 +08:00
|
|
|
|
builder = new MessageChainBuilder();
|
|
|
|
|
builder.append("各位老色胚们晚上好,现在公布本群涩图数据!");
|
2022-04-22 00:28:46 +08:00
|
|
|
|
builder.append("\n");
|
2022-04-20 21:17:49 +08:00
|
|
|
|
builder.append("本群今日共查询:");
|
|
|
|
|
builder.append(String.valueOf(array.size()));
|
|
|
|
|
builder.append("次!\n");
|
|
|
|
|
builder.append("接下来公布大伙的XP系统:");
|
|
|
|
|
builder.append("\n");
|
|
|
|
|
Map<Long, List<String>> map = new HashMap<>();
|
|
|
|
|
for (Object o : array) {
|
|
|
|
|
JSONObject item = (JSONObject) o;
|
|
|
|
|
List<String> tags = map.getOrDefault(item.getLong("user"), new ArrayList<>());
|
|
|
|
|
tags.add(item.getString("key"));
|
|
|
|
|
map.put(item.getLong("user"), tags);
|
|
|
|
|
}
|
|
|
|
|
Long maxQQ = -1L;
|
|
|
|
|
int max = -1;
|
|
|
|
|
for (Long qq : map.keySet()) {
|
2022-04-22 00:28:46 +08:00
|
|
|
|
builder.append("------------------\n");
|
2022-04-20 21:17:49 +08:00
|
|
|
|
List<String> list = map.get(qq);
|
|
|
|
|
if (list.size() > max) {
|
|
|
|
|
max = list.size();
|
|
|
|
|
maxQQ = qq;
|
|
|
|
|
}
|
|
|
|
|
builder.append(new At(qq))
|
|
|
|
|
.append(":\n");
|
|
|
|
|
for (String tag : list) {
|
|
|
|
|
builder.append(tag).append("\n");
|
|
|
|
|
}
|
2022-04-22 00:28:46 +08:00
|
|
|
|
builder.append("------------------\n");
|
2022-04-20 21:17:49 +08:00
|
|
|
|
}
|
|
|
|
|
builder.append("那么今日最色批的就是:");
|
|
|
|
|
builder.append(new At(maxQQ));
|
|
|
|
|
builder.append("\n");
|
|
|
|
|
builder.append("如果炸群了请找他(\n");
|
|
|
|
|
builder.append("明天见~");
|
|
|
|
|
}
|
2022-04-22 00:21:39 +08:00
|
|
|
|
Log.i("打印色图统计:" + builder);
|
|
|
|
|
if (builder != null) {
|
2022-04-22 00:16:36 +08:00
|
|
|
|
QQBotManager.getInstance().sendMessage(Long.parseLong(key.replace("Setu_", "")), builder);
|
2022-04-20 21:17:49 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2022-01-01 23:36:12 +08:00
|
|
|
|
@Override
|
|
|
|
|
public void onMessage(Long qq, MessageEvent event, boolean isGroup) {
|
|
|
|
|
super.onMessage(qq, event, isGroup);
|
2022-04-17 15:25:51 +08:00
|
|
|
|
boolean isRun = false;
|
|
|
|
|
boolean isR18 = false;
|
|
|
|
|
if (msg.contains("来点") && msg.contains("色图")) {
|
|
|
|
|
isRun = true;
|
|
|
|
|
} else if (msg.contains("来点") && msg.contains("涩图")) {
|
|
|
|
|
isRun = true;
|
|
|
|
|
isR18 = true;
|
2022-04-17 21:37:08 +08:00
|
|
|
|
msg = msg.replace("涩图", "色图");
|
2022-04-17 15:25:51 +08:00
|
|
|
|
}
|
|
|
|
|
if (isRun) {
|
|
|
|
|
Log.i(event.getSource().getFromId() + " > " + msg);
|
2022-04-17 21:37:08 +08:00
|
|
|
|
Pattern pattern = Pattern.compile("来点(.*?)色图");
|
2022-04-18 22:49:27 +08:00
|
|
|
|
Matcher matcher = pattern.matcher(msg);
|
|
|
|
|
String key = null;
|
|
|
|
|
if (matcher.find()) {
|
|
|
|
|
key = matcher.group(1);
|
2022-04-17 21:37:08 +08:00
|
|
|
|
}
|
2022-04-18 22:49:27 +08:00
|
|
|
|
if (!getSeTu("tag", key, isR18, false, qq, event)) {
|
|
|
|
|
if (!getSeTu("tag", key, isR18, true, qq, event)) {
|
2022-04-18 23:02:11 +08:00
|
|
|
|
if (!getSeTu("keyword", key, isR18, true, qq, event)) {
|
|
|
|
|
QQBotManager.getInstance().sendMessage(qq, "找不到喵~ 不如随便来点吧~");
|
|
|
|
|
getSeTu("tag", null, false, false, qq, event);
|
2022-04-18 22:49:27 +08:00
|
|
|
|
}
|
2022-04-17 15:25:51 +08:00
|
|
|
|
}
|
2022-04-17 01:20:40 +08:00
|
|
|
|
}
|
2022-04-20 21:17:49 +08:00
|
|
|
|
|
|
|
|
|
JSONObject data = new JSONObject();
|
|
|
|
|
data.put("user", event.getSource().getFromId());
|
|
|
|
|
data.put("group", qq);
|
|
|
|
|
data.put("key", key);
|
|
|
|
|
|
|
|
|
|
String redis = RedisTools.get("Setu_" + qq);
|
|
|
|
|
JSONArray array = new JSONArray();
|
|
|
|
|
if (!StringUtils.isEmpty(redis)) {
|
|
|
|
|
array = JSONArray.parseArray(redis);
|
|
|
|
|
}
|
|
|
|
|
array.add(data);
|
|
|
|
|
RedisTools.set("Setu_" + qq, array.toString());
|
2022-04-18 22:49:27 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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)) {
|
2022-04-20 20:20:42 +08:00
|
|
|
|
if ("tag".equals(model)) {
|
2022-04-20 20:18:49 +08:00
|
|
|
|
String[] keys = key.split(" ");
|
|
|
|
|
StringBuilder keyBuilder = new StringBuilder();
|
|
|
|
|
for (String _key : keys) {
|
2022-04-20 21:17:49 +08:00
|
|
|
|
keyBuilder.append(URLEncoder.encode(_key, StandardCharsets.UTF_8)).append("&tag=");
|
2022-04-20 20:18:49 +08:00
|
|
|
|
}
|
|
|
|
|
key = keyBuilder.toString();
|
2022-04-20 20:20:42 +08:00
|
|
|
|
key = key.substring(0, key.length() - 5);
|
2022-04-20 21:17:49 +08:00
|
|
|
|
} else {
|
|
|
|
|
key = URLEncoder.encode(key, StandardCharsets.UTF_8);
|
2022-04-20 20:18:49 +08:00
|
|
|
|
}
|
2022-04-18 22:49:27 +08:00
|
|
|
|
if (r18) {
|
2022-04-20 20:20:42 +08:00
|
|
|
|
url = "https://api.lolicon.app/setu/v2?" + model + "=" + key + "&r18=1&size=regular";
|
2022-04-17 15:25:51 +08:00
|
|
|
|
} else {
|
2022-04-20 20:20:42 +08:00
|
|
|
|
url = "https://api.lolicon.app/setu/v2?" + model + "=" + key + "&r18=0&size=regular";
|
2022-04-17 02:24:26 +08:00
|
|
|
|
}
|
2022-01-01 23:36:12 +08:00
|
|
|
|
}
|
2022-04-18 22:49:27 +08:00
|
|
|
|
if (fuzzyR18) {
|
|
|
|
|
url = url.replace("&r18=0", "&r18=2").replace("&r18=1", "&r18=2");
|
|
|
|
|
}
|
2022-04-20 20:18:49 +08:00
|
|
|
|
System.out.println("url = " + url);
|
2022-04-18 22:49:27 +08:00
|
|
|
|
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");
|
2022-04-18 22:57:15 +08:00
|
|
|
|
builder.append("P站ID:");
|
|
|
|
|
builder.append(item.getInteger("pid"));
|
|
|
|
|
builder.append("\n");
|
2022-04-18 22:49:27 +08:00
|
|
|
|
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;
|
2022-01-01 23:36:12 +08:00
|
|
|
|
}
|
2022-01-02 00:14:27 +08:00
|
|
|
|
|
2022-01-02 00:59:22 +08:00
|
|
|
|
public static void main(String[] args) {
|
2022-04-18 22:49:27 +08:00
|
|
|
|
String msg = "来点1色图";
|
2022-04-17 21:41:54 +08:00
|
|
|
|
Pattern pattern = Pattern.compile("来点(.*?)色图");
|
2022-04-18 22:49:27 +08:00
|
|
|
|
Matcher matcher = pattern.matcher(msg);
|
|
|
|
|
String key = null;
|
|
|
|
|
if (matcher.find()) {
|
|
|
|
|
key = matcher.group(1);
|
2022-04-17 21:41:54 +08:00
|
|
|
|
}
|
|
|
|
|
System.out.println("key = " + key);
|
2022-01-02 00:59:22 +08:00
|
|
|
|
}
|
2022-01-01 23:36:12 +08:00
|
|
|
|
}
|