新增大头菜预测功能,使用无头浏览器抓包
This commit is contained in:
@@ -1,15 +1,213 @@
|
||||
package com.yutou.qqbot.models.Animal;
|
||||
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.yutou.qqbot.QQBotManager;
|
||||
import com.yutou.qqbot.models.Model;
|
||||
import com.yutou.qqbot.utlis.*;
|
||||
import net.mamoe.mirai.event.events.MessageEvent;
|
||||
|
||||
import javax.net.ssl.HttpsURLConnection;
|
||||
import java.net.URL;
|
||||
import java.util.Calendar;
|
||||
import java.util.Map;
|
||||
|
||||
public class TurnipProphet extends Model {
|
||||
public static class TurnipData {
|
||||
public static final String MODEL = "趋势:";
|
||||
public static final String PR = "概率:";
|
||||
public static final String MIX = "保底价:";
|
||||
public static final String MAX = "最高价:";
|
||||
public static final String DAY = "最高日:";
|
||||
|
||||
public static final String MONDAY_UP = "周一上";
|
||||
public static final String MONDAY_DOWN = "周一下";
|
||||
public static final String TUESDAY_UP = "周二上";
|
||||
public static final String TUESDAY_DOWN = "周二下";
|
||||
public static final String WEDNESDAY_UP = "周三上";
|
||||
public static final String WEDNESDAY_DOWN = "周三下";
|
||||
public static final String THURSDAY_UP = "周四上";
|
||||
public static final String THURSDAY_DOWN = "周四下";
|
||||
public static final String FRIDAY_UP = "周五上";
|
||||
public static final String FRIDAY_DOWN = "周五下";
|
||||
public static final String SATURDAY_UP = "周六上";
|
||||
public static final String SATURDAY_DOWN = "周六下";
|
||||
|
||||
|
||||
}
|
||||
|
||||
int nowTime;
|
||||
|
||||
public class TurnipProphet extends Model {
|
||||
@Override
|
||||
public boolean isUserPublic() {
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String[] getUsePowers() {
|
||||
return new String[0];
|
||||
return new String[]{
|
||||
QQFromCommands.TURNIP_PROPHET
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMessage(Long qq, MessageEvent event, boolean isGroup) {
|
||||
super.onMessage(qq, event, isGroup);
|
||||
int money = -1;
|
||||
try {
|
||||
money = Integer.parseInt(msg.trim());
|
||||
} catch (Exception e) {
|
||||
return;
|
||||
}
|
||||
setData(money, event.getSource().getFromId());
|
||||
}
|
||||
|
||||
private void setData(int money, long qq) {
|
||||
String redisKey = qq + "_turnip";
|
||||
String data = RedisTools.get(redisKey);
|
||||
String pattern = null;
|
||||
JSONObject json;
|
||||
JSONArray array;
|
||||
if (StringUtils.isEmpty(data)) {
|
||||
array = new JSONArray();
|
||||
json = new JSONObject();
|
||||
array.add(-1);
|
||||
array.add(-1);
|
||||
array.add(-1);
|
||||
array.add(-1);
|
||||
array.add(-1);
|
||||
array.add(-1);
|
||||
array.add(-1);
|
||||
array.add(-1);
|
||||
array.add(-1);
|
||||
array.add(-1);
|
||||
array.add(-1);
|
||||
array.add(-1);
|
||||
array.add(-1);
|
||||
} else {
|
||||
json = JSONObject.parseObject(data);
|
||||
array = json.getJSONArray("turnip");
|
||||
}
|
||||
System.err.println(getDay());
|
||||
if(array.getInteger(0)==-1&&getDay()!=0){
|
||||
QQBotManager.getInstance().sendMessage(qq,"没有周日买入信息,本周不收录 :(");
|
||||
return;
|
||||
}
|
||||
if (json.containsKey("old_pattern")) {
|
||||
try {
|
||||
pattern = json.getString("old_pattern");
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
if (getDay() == 0) {
|
||||
if (json.containsKey("pattern")) {
|
||||
json.put("old_pattern", json.getString("pattern"));
|
||||
pattern = json.getString("pattern");
|
||||
}
|
||||
if (money >= 90 && money <= 110) {
|
||||
array.set(0, money);
|
||||
}
|
||||
} else {
|
||||
if (money >= 9 && money <= 660) {
|
||||
System.out.println("array = " + array);
|
||||
System.out.println("array.size() = " + array.size());
|
||||
if (nowTime < 12) {
|
||||
array.set(getDay() * 2 - 1, money);
|
||||
} else {
|
||||
array.set(getDay() * 2, money);
|
||||
}
|
||||
}
|
||||
}
|
||||
json.put("turnip", array);
|
||||
StringBuilder builder = new StringBuilder();
|
||||
for (Object o : array) {
|
||||
builder.append(o).append(".");
|
||||
}
|
||||
builder.append(".".repeat(Math.max(0, (12 - array.size()))));
|
||||
String prices = builder.toString();
|
||||
if (prices.split("\\.").length == 13) {
|
||||
prices = prices.substring(0, prices.length() - 1);
|
||||
}
|
||||
prices = prices.replace("-1", "");
|
||||
json.put("prices", prices);
|
||||
try {
|
||||
if(pattern!=null) {
|
||||
switch (pattern){
|
||||
case "波动型" -> pattern="0";
|
||||
case "大幅上涨(三期型)"-> pattern="1";
|
||||
case "递减型" -> pattern="2";
|
||||
case "小幅上涨(四期型)" -> pattern="3";
|
||||
}
|
||||
}
|
||||
QQBotManager.getInstance().sendMessage(qq,"已记录,正在预测本周走势...");
|
||||
Map<String, String> map = WebClient.getInstance().openTurnip(prices, pattern);
|
||||
|
||||
|
||||
|
||||
JSONObject pr = JSONObject.parseObject(map.get(TurnipData.MODEL));
|
||||
JSONArray prArray = pr.getJSONArray(TurnipData.MODEL);
|
||||
StringBuilder out = new StringBuilder();
|
||||
out.append("预测结果如下:\n");
|
||||
out.append(TurnipData.MODEL).append(prArray.getJSONObject(0).getString(TurnipData.MODEL)).append("\n");
|
||||
out.append(TurnipData.PR).append(prArray.getJSONObject(0).getString(TurnipData.PR)).append("\n");
|
||||
|
||||
out.append(TurnipData.MIX).append(map.get(TurnipData.MIX)).append("\n")
|
||||
.append(TurnipData.MAX).append(map.get(TurnipData.MAX)).append("\n")
|
||||
.append(TurnipData.DAY).append(map.get(TurnipData.DAY)).append("\n")
|
||||
.append("-------------").append("\n")
|
||||
.append(TurnipData.MONDAY_UP).append(map.get(TurnipData.MONDAY_UP)).append(" | ")
|
||||
.append(TurnipData.MONDAY_DOWN).append(map.get(TurnipData.MONDAY_DOWN)).append("\n")
|
||||
.append(TurnipData.TUESDAY_UP).append(map.get(TurnipData.TUESDAY_UP)).append(" | ")
|
||||
.append(TurnipData.TUESDAY_DOWN).append(map.get(TurnipData.TUESDAY_DOWN)).append("\n")
|
||||
.append(TurnipData.WEDNESDAY_UP).append(map.get(TurnipData.WEDNESDAY_UP)).append(" | ")
|
||||
.append(TurnipData.WEDNESDAY_DOWN).append(map.get(TurnipData.WEDNESDAY_DOWN)).append("\n")
|
||||
.append(TurnipData.THURSDAY_UP).append(map.get(TurnipData.THURSDAY_UP)).append(" | ")
|
||||
.append(TurnipData.THURSDAY_DOWN).append(map.get(TurnipData.THURSDAY_DOWN)).append("\n")
|
||||
.append(TurnipData.FRIDAY_UP).append(map.get(TurnipData.FRIDAY_UP)).append(" | ")
|
||||
.append(TurnipData.FRIDAY_DOWN).append(map.get(TurnipData.FRIDAY_DOWN)).append("\n")
|
||||
.append(TurnipData.SATURDAY_UP).append(map.get(TurnipData.SATURDAY_UP)).append(" | ")
|
||||
.append(TurnipData.SATURDAY_DOWN).append(map.get(TurnipData.SATURDAY_DOWN)).append("\n")
|
||||
;
|
||||
out.append("------------").append("\n");
|
||||
out.append("总概率:").append("\n");
|
||||
|
||||
for (Object o : prArray) {
|
||||
JSONObject tmp = (JSONObject) o;
|
||||
out.append(tmp.getString(TurnipData.MODEL)).append(":").append(tmp.getString(TurnipData.PR)).append("\n");
|
||||
}
|
||||
out.append("------------").append("\n");
|
||||
out.append("祝好运 :)");
|
||||
json.put("pattern", prArray.getJSONObject(0).getString(TurnipData.MODEL));
|
||||
RedisTools.set(redisKey, json.toJSONString());
|
||||
Log.i("TurnipProphet",out.toString());
|
||||
QQBotManager.getInstance().sendMessage(qq,out.toString());
|
||||
} catch (Exception e) {
|
||||
setData(money, qq);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTime(String time) {
|
||||
super.onTime(time);
|
||||
nowTime = Integer.parseInt(time.split(":")[0]);
|
||||
}
|
||||
|
||||
private int getDay() {
|
||||
return Calendar.getInstance().get(Calendar.DAY_OF_WEEK)-1;
|
||||
}
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
TurnipProphet prophet = new TurnipProphet();
|
||||
prophet.setData(88, 583819556);
|
||||
|
||||
}
|
||||
}
|
||||
/*
|
||||
null.90...........
|
||||
null.97...........
|
||||
|
||||
null.1!.1@.2!.2@.3!.3@.4!.4@.5!.5@.90.
|
||||
null.1!.1@.2!.2@.3!.3@.4!.4@.5!.5@.6!.90.
|
||||
*/
|
||||
@@ -35,7 +35,7 @@ public abstract class Model implements ModelInterface {
|
||||
}
|
||||
|
||||
public static class QQFromCommands {
|
||||
public static final String ADD_POWER = "大头菜";
|
||||
public static final String TURNIP_PROPHET = "大头菜";
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user