From 15af939c3ffbba5674133aed25d7b6c5c14f642c Mon Sep 17 00:00:00 2001 From: LamGC Date: Thu, 30 Apr 2020 19:08:34 +0800 Subject: [PATCH] =?UTF-8?q?[Fix]=20PixivDownload=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E5=9B=A0=E6=8E=92=E8=A1=8C=E6=A6=9C=E6=80=BB=E9=87=8F=E7=9A=84?= =?UTF-8?q?=E4=B8=8D=E7=A1=AE=E5=AE=9A=E5=AF=BC=E8=87=B4=E6=8E=92=E8=A1=8C?= =?UTF-8?q?=E6=A6=9C=E8=8E=B7=E5=8F=96=E5=BC=82=E5=B8=B8=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98;=20[Change]=20BotEventHandler=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E4=BA=8B=E4=BB=B6=E5=A4=84=E7=90=86=E5=AE=8C=E6=88=90=E5=90=8E?= =?UTF-8?q?=E7=9A=84=E6=97=A5=E5=BF=97=E8=BE=93=E5=87=BA=E5=BD=A2=E5=BC=8F?= =?UTF-8?q?;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/net/lamgc/cgj/bot/event/BotEventHandler.java | 7 +++++-- src/main/java/net/lamgc/cgj/pixiv/PixivDownload.java | 11 ++++++++--- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/main/java/net/lamgc/cgj/bot/event/BotEventHandler.java b/src/main/java/net/lamgc/cgj/bot/event/BotEventHandler.java index cf9459b..5e22dd2 100644 --- a/src/main/java/net/lamgc/cgj/bot/event/BotEventHandler.java +++ b/src/main/java/net/lamgc/cgj/bot/event/BotEventHandler.java @@ -188,7 +188,7 @@ public class BotEventHandler implements EventHandler { log.error("执行命令时发生异常", e); result = "命令执行时发生错误,无法完成!"; } - log.info("命令处理完成.(耗时: {}ms)", System.currentTimeMillis() - time); + long processTime = System.currentTimeMillis() - time; if(Objects.requireNonNull(result) instanceof String) { try { event.sendMessage((String) result); @@ -196,7 +196,10 @@ public class BotEventHandler implements EventHandler { log.error("发送消息时发生异常", e); } } - log.info("命令反馈完成.(耗时: {}ms)", System.currentTimeMillis() - time); + long totalTime = System.currentTimeMillis() - time; + log.info("命令反馈完成.(事件耗时: {}ms, P: {}%({}ms), R: {}%({}ms))", totalTime, + String.format("%.3f", ((double) processTime / (double)totalTime) * 100F), processTime, + String.format("%.3f", ((double) (totalTime - processTime) / (double)totalTime) * 100F), totalTime - processTime); } /** diff --git a/src/main/java/net/lamgc/cgj/pixiv/PixivDownload.java b/src/main/java/net/lamgc/cgj/pixiv/PixivDownload.java index e0d1dee..bcf94fa 100644 --- a/src/main/java/net/lamgc/cgj/pixiv/PixivDownload.java +++ b/src/main/java/net/lamgc/cgj/pixiv/PixivDownload.java @@ -285,7 +285,8 @@ public class PixivDownload { } /** - * 获取排行榜 + * 获取排行榜. + *

注意: 如果范围实际上没超出, 但返回排行榜不足, 会导致与实际请求的数量不符, 需要检查

* @param contentType 排行榜类型 * @param mode 排行榜模式 * @param time 查询时间 @@ -316,7 +317,8 @@ public class PixivDownload { int count = 0; Gson gson = new Gson(); ArrayList results = new ArrayList<>(range); - for (int pageIndex = startPages; pageIndex <= endPages && count < range; pageIndex++) { + boolean canNext = true; + for (int pageIndex = startPages; canNext && pageIndex <= endPages && count < range; pageIndex++) { HttpGet request = createHttpGetRequest(PixivURL.getRankingLink(contentType, mode, time, pageIndex, true)); log.debug("RequestUri: {}", request.getURI()); HttpResponse response = httpClient.execute(request); @@ -326,10 +328,13 @@ public class PixivDownload { throw new IOException("Http Response Error: '" + response.getStatusLine() + "', ResponseBody: '" + responseBody + '\''); } - JsonArray resultArray = gson.fromJson(responseBody, JsonObject.class).getAsJsonArray("contents"); + JsonObject resultObject = gson.fromJson(responseBody, JsonObject.class); + canNext = resultObject.get("next").getAsJsonPrimitive().isNumber(); + JsonArray resultArray = resultObject.getAsJsonArray("contents"); for (int resultIndex = startIndex; resultIndex < resultArray.size() && count < range; resultIndex++, count++) { results.add(resultArray.get(resultIndex).getAsJsonObject()); } + // 重置索引 startIndex = 0; }