move to java 23

This commit is contained in:
Max Rydahl Andersen 2024-09-26 19:06:27 +02:00
parent c15fb9df4d
commit 40fcc66c21

View File

@ -1,12 +1,12 @@
//DEPS com.fasterxml.jackson.core:jackson-databind:2.13.3 //DEPS com.fasterxml.jackson.core:jackson-databind:2.13.3
//DEPS com.fasterxml.jackson.core:jackson-core:2.13.3 //DEPS com.fasterxml.jackson.core:jackson-core:2.13.3
//DEPS com.fasterxml.jackson.core:jackson-annotations:2.13.3 //DEPS com.fasterxml.jackson.core:jackson-annotations:2.13.3
//JAVA 23+
//PREVIEW
import static java.lang.System.out; import static java.lang.System.out;
import static java.nio.file.Files.*; import static java.nio.file.Files.*;
import static java.util.concurrent.TimeUnit.*; import static java.util.concurrent.TimeUnit.*;
import java.io.IOException;
import java.net.URI; import java.net.URI;
import java.net.http.HttpClient; import java.net.http.HttpClient;
import java.net.http.HttpRequest; import java.net.http.HttpRequest;
@ -18,79 +18,77 @@ import java.util.Map;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
public class mkbsd { String URL = "https://storage.googleapis.com/panels-api/data/20240916/media-1a-i-p~s";
HttpClient client = HttpClient.newHttpClient();
ObjectMapper mapper = new ObjectMapper();
private static final String URL = "https://storage.googleapis.com/panels-api/data/20240916/media-1a-i-p~s"; void main() throws Exception {
private static final HttpClient client = HttpClient.newHttpClient();
private static final ObjectMapper mapper = new ObjectMapper();
public static void main(String[] args) throws Exception {
asciiArt(); asciiArt();
SECONDS.sleep(5); SECONDS.sleep(5);
mainSync(); mainSync();
} }
private static void mainSync() throws Exception { void mainSync() throws Exception {
var jsonData = fetchJson(URL); var jsonData = fetchJson(URL);
var data = (Map<String, Object>) jsonData.get("data"); var data = (Map<String, Object>) jsonData.get("data");
if (data == null) { if (data == null) {
throw new RuntimeException("⛔ JSON does not have a 'data' property at its root."); throw new RuntimeException("⛔ JSON does not have a 'data' property at its root.");
} }
var downloadDir = Paths.get("downloads"); var downloadDir = Paths.get("downloads");
if (!exists(downloadDir)) { if (!exists(downloadDir)) {
createDirectory(downloadDir); createDirectory(downloadDir);
out.println("📁 Created directory: " + downloadDir.toAbsolutePath()); out.println("📁 Created directory: " + downloadDir.toAbsolutePath());
} }
for (var entry : data.entrySet()) { for (var entry : data.entrySet()) {
if (entry.getValue() instanceof Map && ((Map<?, ?>) entry.getValue()).get("dhd") != null) { if (entry.getValue() instanceof Map && ((Map<?, ?>) entry.getValue()).get("dhd") != null) {
var imageUrl = (String) ((Map<?, ?>) entry.getValue()).get("dhd"); var imageUrl = (String) ((Map<?, ?>) entry.getValue()).get("dhd");
var parsedUrl = URI.create(imageUrl); var parsedUrl = URI.create(imageUrl);
out.println("🔍 Found image URL!"); out.println("🔍 Found image URL!");
var filename = parsedUrl.getPath().substring(parsedUrl.getPath().lastIndexOf('/')+1); var filename = parsedUrl.getPath().substring(parsedUrl.getPath().lastIndexOf('/')+1);
var filePath = downloadDir.resolve(filename); var filePath = downloadDir.resolve(filename);
if(!filePath.toFile().exists()) { if(!filePath.toFile().exists()) {
downloadImage(imageUrl, filePath); downloadImage(imageUrl, filePath);
out.println("🖼️ Saved image to " + filePath); out.println("🖼️ Saved image to " + filePath);
} else { } else {
out.println("Already saved " + filePath); out.println("Already saved " + filePath);
}
MILLISECONDS.sleep(250);
} }
MILLISECONDS.sleep(250);
} }
}
private static Map<String, Object> fetchJson(String url) throws Exception {
var request = HttpRequest.newBuilder()
.uri(URI.create(url))
.build();
var response = client.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() != 200) {
throw new RuntimeException("⛔ Failed to fetch JSON file: " + response.statusCode());
} }
return mapper.readValue(response.body(), Map.class); }
Map<String, Object> fetchJson(String url) throws Exception {
var request = HttpRequest.newBuilder()
.uri(URI.create(url))
.build();
var response = client.send(request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() != 200) {
throw new RuntimeException("⛔ Failed to fetch JSON file: " + response.statusCode());
} }
return mapper.readValue(response.body(), Map.class);
}
private static void downloadImage(String imageUrl, Path filePath) throws Exception { void downloadImage(String imageUrl, Path filePath) throws Exception {
var request = HttpRequest.newBuilder() var request = HttpRequest.newBuilder()
.uri(URI.create(imageUrl)) .uri(URI.create(imageUrl))
.build(); .build();
var response = client.send(request, HttpResponse.BodyHandlers.ofByteArray()); var response = client.send(request, HttpResponse.BodyHandlers.ofByteArray());
if (response.statusCode() != 200) { if (response.statusCode() != 200) {
throw new RuntimeException("Failed to download image: " + response.statusCode()); throw new RuntimeException("Failed to download image: " + response.statusCode());
}
Files.write(filePath, response.body());
} }
Files.write(filePath, response.body());
}
private static void asciiArt() { void asciiArt() {
out.println(""" out.println("""
/$$ /$$ /$$ /$$ /$$$$$$$ /$$$$$$ /$$$$$$$ /$$ /$$ /$$ /$$ /$$$$$$$ /$$$$$$ /$$$$$$$
| $$$ /$$$| $$ /$$/| $$__ $$ /$$__ $$| $$__ $$ | $$$ /$$$| $$ /$$/| $$__ $$ /$$__ $$| $$__ $$
| $$$$ /$$$$| $$ /$$/ | $$ \\ $$| $$ \\__/| $$ \\ $$ | $$$$ /$$$$| $$ /$$/ | $$ \\ $$| $$ \\__/| $$ \\ $$
| $$ $$/$$ $$| $$$$$/ | $$$$$$$ | $$$$$$ | $$ | $$ | $$ $$/$$ $$| $$$$$/ | $$$$$$$ | $$$$$$ | $$ | $$
@ -98,7 +96,6 @@ public class mkbsd {
| $$\\ $ | $$| $$\\ $$ | $$ \\ $$ /$$ \\ $$| $$ | $$ | $$\\ $ | $$| $$\\ $$ | $$ \\ $$ /$$ \\ $$| $$ | $$
| $$ \\/ | $$| $$ \\ $$| $$$$$$$/| $$$$$$/| $$$$$$$/ | $$ \\/ | $$| $$ \\ $$| $$$$$$$/| $$$$$$/| $$$$$$$/
|__/ |__/|__/ \\__/|_______/ \\______/ |_______/"""); |__/ |__/|__/ \\__/|_______/ \\______/ |_______/""");
out.println(""); out.println("");
out.println("🤑 Starting downloads from your favorite sellout grifter's wallpaper app..."); out.println("🤑 Starting downloads from your favorite sellout grifter's wallpaper app...");
}
} }