perf: remove testCode

This commit is contained in:
Wzp-2008 2023-08-08 16:22:18 +08:00
parent f4c822a0b5
commit bb5d608b4c

View File

@ -2,34 +2,20 @@ package cn.wzpmc;
import cn.wzpmc.entities.SongObject;
import cn.wzpmc.gui.OnWorldTickStart;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.mojang.brigadier.arguments.IntegerArgumentType;
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import net.fabricmc.api.ClientModInitializer;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback;
import net.minecraft.client.MinecraftClient;
import net.minecraft.server.command.CommandManager;
import net.minecraft.server.command.ServerCommandSource;
import net.minecraft.util.Identifier;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.charset.StandardCharsets;
import java.util.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
@Environment(EnvType.CLIENT)
public class DreamRunnerModClient implements ClientModInitializer {
@ -37,157 +23,11 @@ public class DreamRunnerModClient implements ClientModInitializer {
public static final Identifier packageChannelId = Objects.requireNonNull(Identifier.of("der", "music_channel"));
public static OnWorldTickStart worldTickStart = new OnWorldTickStart();
public static List<SongObject> musics = new ArrayList<>();
public boolean isLogin = false;
public String cookies = "";
@Override
public void onInitializeClient() {
ClientPlayNetworking.registerGlobalReceiver(packageChannelId, (client, handler, buf, responseSender) -> packetHandler(client, buf));
ClientTickEvents.START_CLIENT_TICK.register(worldTickStart);
CommandRegistrationCallback.EVENT.register((dispatcher, registryAccess, environment) -> dispatcher.register(LiteralArgumentBuilder.<ServerCommandSource>literal("play").requires((e) -> isLogin).then(CommandManager.argument("id", IntegerArgumentType.integer()).executes((e) -> {
//https://music.163.com/song?id=1369828361&userid=347345537
Long songId = Long.valueOf(e.getArgument("id", Integer.class));
ByteBuf buffer = Unpooled.buffer();
HttpClient.Builder builder = HttpClient.newBuilder();
HttpClient build = builder.build();
HttpRequest request = HttpRequest.newBuilder(URI.create("http://192.168.1.2:1200/song/url/v1?id=" + songId + "&level=exhigh")).setHeader("Cookie", cookies).build();
try {
HttpResponse<String> send = build.send(request, HttpResponse.BodyHandlers.ofString());
JsonElement jsonElement = JsonParser.parseString(send.body());
String url = jsonElement.getAsJsonObject().get("data").getAsJsonArray().get(0).getAsJsonObject().get("url").getAsString();
System.out.println(url);
HttpResponse<byte[]> music = build.send(HttpRequest.newBuilder(URI.create(url)).build(), HttpResponse.BodyHandlers.ofByteArray());
HttpRequest.Builder builder1 = HttpRequest.newBuilder(URI.create("http://192.168.1.2:1200/song/detail?ids=" + songId));
HttpResponse<String> detailResponse = build.send(builder1.build(), HttpResponse.BodyHandlers.ofString());
JsonObject asJsonObject = JsonParser.parseString(detailResponse.body()).getAsJsonObject().get("songs").getAsJsonArray().get(0).getAsJsonObject();
String asString = asJsonObject.get("name").getAsString();
int dt = asJsonObject.get("dt").getAsInt();
buffer.writeInt(dt);
byte[] bytes1 = asString.getBytes(StandardCharsets.UTF_8);
buffer.writeInt(bytes1.length);
buffer.writeBytes(bytes1);
JsonArray arList = asJsonObject.get("ar").getAsJsonArray();
int size = arList.size();
buffer.writeInt(size);
for (JsonElement ar : arList) {
JsonObject jsonObject = ar.getAsJsonObject();
String arName = jsonObject.get("name").getAsString();
byte[] bytes = arName.getBytes(StandardCharsets.UTF_8);
buffer.writeInt(bytes.length);
buffer.writeBytes(bytes);
}
JsonObject alObject = asJsonObject.get("al").getAsJsonObject();
String picURL = alObject.get("picUrl").getAsString();
System.out.println(picURL);
HttpRequest.Builder builder3 = HttpRequest.newBuilder(URI.create("http://192.168.1.2:1200/lyric?id=" + songId)).setHeader("Cookie", this.cookies);
String lrc = JsonParser.parseString(build.send(builder3.build(), HttpResponse.BodyHandlers.ofString()).body()).getAsJsonObject().get("lrc").getAsJsonObject().get("lyric").getAsString();
byte[] bytes = lrc.getBytes(StandardCharsets.UTF_8);
buffer.writeInt(bytes.length);
buffer.writeBytes(bytes);
HttpRequest.Builder builder2 = HttpRequest.newBuilder(URI.create(picURL));
HttpResponse<byte[]> picResponse = build.send(builder2.build(), HttpResponse.BodyHandlers.ofByteArray());
byte[] body1 = picResponse.body();
buffer.writeInt(body1.length);
buffer.writeBytes(body1);
byte[] body = music.body();
buffer.writeInt(body.length);
buffer.writeBytes(body);
} catch (IOException | InterruptedException ex) {
ex.printStackTrace();
throw new RuntimeException(ex);
}
try {
packetHandler(MinecraftClient.getInstance(), buffer);
} catch (Throwable ea) {
ea.printStackTrace();
}
return 0;
}))));
testLogin();
}
private void testLogin() {
HttpClient httpClient = HttpClient.newHttpClient();
try {
FileInputStream fileInputStream = new FileInputStream("Cookie");
String cookie = new String(fileInputStream.readAllBytes());
fileInputStream.close();
HttpRequest.Builder builder = HttpRequest.newBuilder(URI.create("http://192.168.1.2:1200/login/status?timestamp=" + new Date().getTime())).setHeader("Cookie", cookie);
HttpResponse<String> send = httpClient.send(builder.build(), HttpResponse.BodyHandlers.ofString());
if (!JsonParser.parseString(send.body()).getAsJsonObject().get("data").getAsJsonObject().get("profile").isJsonNull()) {
this.cookies = cookie;
this.isLogin = true;
return;
}
} catch (IOException | InterruptedException e) {
e.printStackTrace();
return;
}
HttpRequest.Builder builder = HttpRequest.newBuilder(URI.create("http://192.168.1.2:1200/login/qr/key?timestamp=" + new Date().getTime()));
try {
HttpResponse<String> send = httpClient.send(builder.build(), HttpResponse.BodyHandlers.ofString());
String body = send.body();
JsonElement jsonElement = JsonParser.parseString(body);
String unikey = jsonElement.getAsJsonObject().get("data").getAsJsonObject().get("unikey").getAsString();
HttpRequest.Builder createQr = HttpRequest.newBuilder(URI.create("http://192.168.1.2:1200/login/qr/create?qrimg=1&key=" + unikey));
HttpResponse<String> send1 = httpClient.send(createQr.build(), HttpResponse.BodyHandlers.ofString());
String body1 = send1.body();
JsonElement jsonElement1 = JsonParser.parseString(body1);
String imgB64 = jsonElement1.getAsJsonObject().get("data").getAsJsonObject().get("qrimg").getAsString().replace("data:image/png;base64,", "");
byte[] decode = Base64.getDecoder().decode(imgB64);
FileOutputStream fileOutputStream = new FileOutputStream("qr.png");
fileOutputStream.write(decode);
fileOutputStream.close();
DreamRunnerMod.LOGGER.info(unikey);
new Thread(() -> {
w:
while (true) {
HttpRequest.Builder builder1 = HttpRequest.newBuilder(URI.create("http://192.168.1.2:1200/login/qr/check?key=" + unikey + "&timestamp=" + new Date().getTime()));
try {
HttpResponse<String> send2 = httpClient.send(builder1.build(), HttpResponse.BodyHandlers.ofString());
JsonElement jsonElement2 = JsonParser.parseString(send2.body());
int code = jsonElement2.getAsJsonObject().get("code").getAsInt();
switch (code) {
case 801:
break;
case 802:
DreamRunnerMod.LOGGER.info("扫码成功等待确认");
break;
case 803:
DreamRunnerMod.LOGGER.info("登录成功");
this.loginSuccess(send2);
break w;
}
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
}).start();
} catch (IOException | InterruptedException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
private void loginSuccess(HttpResponse<String> send2) {
send2.headers().firstValue("set-cookie").ifPresent((e) -> {
this.isLogin = true;
this.cookies = e;
FileOutputStream fileOutputStream;
try {
fileOutputStream = new FileOutputStream("Cookie");
fileOutputStream.write(e.getBytes(StandardCharsets.UTF_8));
fileOutputStream.close();
} catch (IOException ex) {
ex.printStackTrace();
}
});
}
// Packet Struct: