From 60a6a5348c6d15d4ac63d08cd133b40ac73f1583 Mon Sep 17 00:00:00 2001 From: zhaojun <873019219@qq.com> Date: Sat, 2 Apr 2022 18:24:00 +0800 Subject: [PATCH] =?UTF-8?q?fix(bug):=20=E4=BF=AE=E5=A4=8D=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E9=9F=B3=E9=A2=91=E4=BF=A1=E6=81=AF=E6=97=B6=EF=BC=8C?= =?UTF-8?q?=E5=9B=A0=E6=96=87=E4=BB=B6=E9=93=BE=E6=8E=A5=20302,=20?= =?UTF-8?q?=E5=AF=BC=E8=87=B4=E6=97=A0=E6=B3=95=E6=AD=A3=E5=B8=B8=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E9=9F=B3=E9=A2=91=E6=96=87=E4=BB=B6=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E7=9A=84=20BUG.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/im/zhaojun/zfile/util/AudioUtil.java | 55 ++++++++++++------- 1 file changed, 35 insertions(+), 20 deletions(-) diff --git a/src/main/java/im/zhaojun/zfile/util/AudioUtil.java b/src/main/java/im/zhaojun/zfile/util/AudioUtil.java index 0a17934..48c9bce 100644 --- a/src/main/java/im/zhaojun/zfile/util/AudioUtil.java +++ b/src/main/java/im/zhaojun/zfile/util/AudioUtil.java @@ -1,10 +1,16 @@ package im.zhaojun.zfile.util; import cn.hutool.core.codec.Base64; +import cn.hutool.core.convert.Convert; import cn.hutool.core.io.FileUtil; import cn.hutool.core.lang.UUID; +import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.URLUtil; +import cn.hutool.http.HttpRequest; +import cn.hutool.http.HttpResponse; import cn.hutool.http.HttpUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.mpatric.mp3agic.ID3v1; import com.mpatric.mp3agic.ID3v2; import com.mpatric.mp3agic.InvalidDataException; @@ -29,27 +35,36 @@ public class AudioUtil { private static final Logger log = LoggerFactory.getLogger(AudioUtil.class); public static AudioInfoDTO getAudioInfo(String url) throws Exception { - String query = new URL(URLUtil.decode(url)).getQuery(); + AudioInfoDTO audioInfoDTO; + try { + String query = new URL(URLUtil.decode(url)).getQuery(); - if (query != null) { - url = url.replace(query, URLUtil.encode(query)); + if (query != null) { + url = url.replace(query, URLUtil.encode(query)); + } + + // 如果音乐文件大小超出 5M, 则不解析此音乐 + if (im.zhaojun.zfile.util.HttpUtil.getRemoteFileSize(url) + > (1024 * 1024 * ZFileConstant.AUDIO_MAX_FILE_SIZE_MB)) { + return AudioInfoDTO.buildDefaultAudioInfoDTO(); + } + + String fullFilePath = StringUtils.removeDuplicateSeparator(ZFileConstant.TMP_FILE_PATH + ZFileConstant.PATH_SEPARATOR + UUID.fastUUID()); + + File file = new File(fullFilePath); + FileUtil.mkParentDirs(file); + + final HttpResponse response = HttpRequest.get(url).setFollowRedirects(true).timeout(-1).executeAsync(); + response.writeBody(file); + + audioInfoDTO = parseAudioInfo(file); + audioInfoDTO.setSrc(url); + file.deleteOnExit(); + return audioInfoDTO; + } catch (Exception e) { + log.error("获取音频文件信息失败.", e); } - - // 如果音乐文件大小超出 5M, 则不解析此音乐 - if (im.zhaojun.zfile.util.HttpUtil.getRemoteFileSize(url) - > (1024 * 1024 * ZFileConstant.AUDIO_MAX_FILE_SIZE_MB)) { - return AudioInfoDTO.buildDefaultAudioInfoDTO(); - } - - String fullFilePath = StringUtils.removeDuplicateSeparator(ZFileConstant.TMP_FILE_PATH + ZFileConstant.PATH_SEPARATOR + UUID.fastUUID()); - - File file = new File(fullFilePath); - FileUtil.mkParentDirs(file); - HttpUtil.downloadFile(url, file); - AudioInfoDTO audioInfoDTO = parseAudioInfo(file); - audioInfoDTO.setSrc(url); - file.deleteOnExit(); - return audioInfoDTO; + return AudioInfoDTO.buildDefaultAudioInfoDTO(); } private static AudioInfoDTO parseAudioInfo(File file) throws IOException, UnsupportedTagException { @@ -86,4 +101,4 @@ public class AudioUtil { return audioInfoDTO; } -} +} \ No newline at end of file