Refactor: remove webp to png convert

direct upload webp - cause discord upload limit
This commit is contained in:
2025-10-12 06:36:28 +09:00
parent 40e20c381b
commit 35c2973bb9
4 changed files with 9 additions and 31 deletions

2
.idea/gradle.xml generated
View File

@@ -5,7 +5,7 @@
<option name="linkedExternalProjectsSettings"> <option name="linkedExternalProjectsSettings">
<GradleProjectSettings> <GradleProjectSettings>
<option name="externalProjectPath" value="$PROJECT_DIR$" /> <option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="gradleHome" value="" /> <option name="gradleJvm" value="ms-11" />
<option name="modules"> <option name="modules">
<set> <set>
<option value="$PROJECT_DIR$" /> <option value="$PROJECT_DIR$" />

View File

@@ -89,23 +89,17 @@ class BotListener extends ListenerAdapter {
eb.appendDescription("태그: `" + hitomiData.getTagsAsString() + "`"); eb.appendDescription("태그: `" + hitomiData.getTagsAsString() + "`");
String coverUrl = Hitomi.getImageUrl(hitomiData.getImageHashList().get(0)); String coverUrl = Hitomi.getImageUrl(hitomiData.getImageHashList().get(0));
byte[] webpData = AyayaUtils.GetFileFromUrl(coverUrl); byte[] webpData = AyayaUtils.getFileFromUrl(coverUrl);
if (webpData == null) { if (webpData == null) {
event.getHook().editOriginal("URL에서 이미지를 가져오지 못했습니다. URL이나 서버 상태를 확인해주세요.").queue(); event.getHook().editOriginal("URL에서 이미지를 가져오지 못했습니다. URL이나 서버 상태를 확인해주세요.").queue();
return; return;
} }
byte[] pngData = AyayaUtils.ConvertWebpToPng(webpData); eb.setImage("attachment://" + "1.webp");
if (pngData == null) {
event.getHook().editOriginal("이미지를 PNG로 변환하는 데 실패했습니다. 파일이 올바른 WebP 형식이 아닐 수 있습니다.").queue();
return;
}
eb.setImage("attachment://" + "1.png");
eb.setFooter("Uploader : " + event.getUser().getName()); eb.setFooter("Uploader : " + event.getUser().getName());
eb.setTimestamp(Instant.now()); eb.setTimestamp(Instant.now());
FileUpload fileUpload = FileUpload.fromData(pngData, "1.png"); FileUpload fileUpload = FileUpload.fromData(webpData, "1.webp");
event.getChannel().sendFiles(fileUpload).setEmbeds(eb.build()).queue(); event.getChannel().sendFiles(fileUpload).setEmbeds(eb.build()).queue();
event.getHook().editOriginal("작품을 받아오는 데에 성공하였습니다!").queue(); event.getHook().editOriginal("작품을 받아오는 데에 성공하였습니다!").queue();
} }

View File

@@ -1,13 +1,11 @@
package dev.ptnr; package dev.ptnr;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.*; import java.io.*;
import java.net.HttpURLConnection; import java.net.HttpURLConnection;
import java.net.URL; import java.net.URL;
public class AyayaUtils { public class AyayaUtils {
public static byte[] GetFileFromUrl(String url) { public static byte[] getFileFromUrl(String url) {
HttpURLConnection conn = null; HttpURLConnection conn = null;
try { try {
URL u = new URL(url); URL u = new URL(url);
@@ -29,7 +27,7 @@ public class AyayaUtils {
return out.toByteArray(); return out.toByteArray();
} }
} catch (IOException e) { } catch (IOException e) {
System.out.println("[ERR > AyayaUtils.GetFileFromUrl()] Failed to Get Data\n" + e.getMessage()); System.out.println("[ERR > AyayaUtils.getFileFromUrl()] Failed to Get Data\n" + e.getMessage());
return null; return null;
} finally { } finally {
if (conn != null) { if (conn != null) {
@@ -38,24 +36,10 @@ public class AyayaUtils {
} }
} }
public static byte[] ConvertWebpToPng(byte[] webpBytes) {
try (ByteArrayInputStream bais = new ByteArrayInputStream(webpBytes);
ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
BufferedImage image = ImageIO.read(bais);
if (image == null) return null;
ImageIO.write(image, "png", baos);
return baos.toByteArray();
} catch (IOException e) {
System.out.println("[ERR > AyayaUtils.ConvertWebpToPng()] Failed to Convert Webp\n" + e.getMessage());
return null;
}
}
public static boolean writeFile(String location, byte[] data) { public static boolean writeFile(String location, byte[] data) {
File file = new File(location); File file = new File(location);
try (FileOutputStream fos = new FileOutputStream(file)) { try (FileOutputStream fos = new FileOutputStream(file)) {
fos.write(data); fos.write(data);
fos.close();
} catch (IOException e) { } catch (IOException e) {
System.out.println("[ERR > AyayaUtils.writeFile()] Failed to Convert Webp\n" + e.getMessage()); System.out.println("[ERR > AyayaUtils.writeFile()] Failed to Convert Webp\n" + e.getMessage());
return false; return false;

View File

@@ -29,7 +29,7 @@ public class Hitomi {
ArrayList<String> normalTag = new ArrayList<>(); ArrayList<String> normalTag = new ArrayList<>();
Map<String, ArrayList<String>> tags = new HashMap<String, ArrayList<String>>(); Map<String, ArrayList<String>> tags = new HashMap<String, ArrayList<String>>();
byte[] rawData = AyayaUtils.GetFileFromUrl(baseUrl); byte[] rawData = AyayaUtils.getFileFromUrl(baseUrl);
if (rawData == null) { if (rawData == null) {
System.out.println("[ERR > Hitomi.GetGalleryData()] Failed to Get " + galleryId + ".js"); System.out.println("[ERR > Hitomi.GetGalleryData()] Failed to Get " + galleryId + ".js");
return null; return null;
@@ -123,7 +123,7 @@ public class Hitomi {
private static String getGGJS() { private static String getGGJS() {
String baseUrl = baseCDNUrl + "/gg.js"; String baseUrl = baseCDNUrl + "/gg.js";
byte[] rawJs = AyayaUtils.GetFileFromUrl(baseUrl); byte[] rawJs = AyayaUtils.getFileFromUrl(baseUrl);
if (rawJs == null) { if (rawJs == null) {
System.out.println("[ERR > Hitomi.GetGGJS()] Failed to Get gg.js"); System.out.println("[ERR > Hitomi.GetGGJS()] Failed to Get gg.js");
return null; return null;
@@ -182,7 +182,7 @@ public class Hitomi {
for (String hash : test.getImageHashList()) { for (String hash : test.getImageHashList()) {
File file = new File(downloadPath + "/" + test.getId()); File file = new File(downloadPath + "/" + test.getId());
file.mkdirs(); file.mkdirs();
byte[] data = AyayaUtils.GetFileFromUrl(getImageUrl(hash)); byte[] data = AyayaUtils.getFileFromUrl(getImageUrl(hash));
AyayaUtils.writeFile(downloadPath + "/" + test.getId() + "/" + idx + ".webp", data); AyayaUtils.writeFile(downloadPath + "/" + test.getId() + "/" + idx + ".webp", data);
++idx; ++idx;
} }