From 88b78476f1f359053b8d401d8e0f160135d533d3 Mon Sep 17 00:00:00 2001 From: TomTom <93038247+AverageGithub@users.noreply.github.com> Date: Thu, 6 Jun 2024 18:10:39 +0200 Subject: [PATCH] Try adding support for discord's new things --- .../transcripts/DiscordHtmlTranscripts.java | 30 ++++++++++++++++--- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/src/main/java/me/ryzeon/transcripts/DiscordHtmlTranscripts.java b/src/main/java/me/ryzeon/transcripts/DiscordHtmlTranscripts.java index c8b5e97..b86f728 100644 --- a/src/main/java/me/ryzeon/transcripts/DiscordHtmlTranscripts.java +++ b/src/main/java/me/ryzeon/transcripts/DiscordHtmlTranscripts.java @@ -16,6 +16,9 @@ import java.time.format.DateTimeFormatter; import java.util.*; import java.util.stream.Collectors; +import java.net.HttpURLConnection; +import java.net.URL; +import java.util.Base64; /** @@ -117,7 +120,7 @@ public InputStream generateFromMessages(Collection messages) throws IOE Element authorAvatar = document.createElement("img"); authorAvatar.addClass("chatlog__author-avatar"); - authorAvatar.attr("src", author.getAvatarUrl()); + authorAvatar.attr("src", getData(author.getAvatarUrl())); authorAvatar.attr("alt", "Avatar"); authorAvatar.attr("loading", "lazy"); @@ -186,7 +189,7 @@ public InputStream generateFromMessages(Collection messages) throws IOE Element attachmentImage = document.createElement("img"); attachmentImage.addClass("chatlog__attachment-media"); - attachmentImage.attr("src", attach.getProxy().getUrl()); + attachmentImage.attr("src", getData(attach.getProxy().getUrl())); attachmentImage.attr("alt", "Image attachment"); attachmentImage.attr("loading", "lazy"); attachmentImage.attr("title", @@ -197,7 +200,7 @@ public InputStream generateFromMessages(Collection messages) throws IOE } else if (videoFormats.contains(attachmentType)) { Element attachmentVideo = document.createElement("video"); attachmentVideo.addClass("chatlog__attachment-media"); - attachmentVideo.attr("src", attach.getProxy().getUrl()); + attachmentVideo.attr("src", getData(attach.getProxy().getUrl())); attachmentVideo.attr("alt", "Video attachment"); attachmentVideo.attr("controls", true); attachmentVideo.attr("title", @@ -207,7 +210,7 @@ public InputStream generateFromMessages(Collection messages) throws IOE } else if (audioFormats.contains(attachmentType)) { Element attachmentAudio = document.createElement("audio"); attachmentAudio.addClass("chatlog__attachment-media"); - attachmentAudio.attr("src", attach.getProxy().getUrl()); + attachmentAudio.attr("src", getData(attach.getProxy().getUrl())); attachmentAudio.attr("alt", "Audio attachment"); attachmentAudio.attr("controls", true); attachmentAudio.attr("title", @@ -484,4 +487,23 @@ private InputStream findFile(String fileName) { } return inputStream; } + + private static String getData(String urlString) { + try { + URL url = new URL(urlString); + HttpURLConnection connection = (HttpURLConnection) url.openConnection(); + connection.connect(); + String contentType = connection.getContentType(); + + InputStream stream = connection.getInputStream(); + byte[] bytes = stream.readAllBytes(); + String base64 = Base64.getEncoder().encodeToString(bytes); + + stream.close(); + connection.disconnect(); + return String.format("data:%s;base64,%s", contentType, base64); + } catch (Exception exception) { + exception.printStackTrace(); + } + } }