From 2af3c20a219f6ac72ebeea41d441cab206bd6089 Mon Sep 17 00:00:00 2001 From: LamGC Date: Thu, 16 Apr 2020 11:01:52 +0800 Subject: [PATCH] =?UTF-8?q?[Change]=20PixivDownload=20=E8=B0=83=E6=95=B4?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E8=BE=93=E5=87=BA=E5=86=85=E5=AE=B9=E5=92=8C?= =?UTF-8?q?=E7=BA=A7=E5=88=AB;=20[Add]=20PixivDownload=20=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=20PixivDownload#getRanking(List,=20int,?= =?UTF-8?q?=20int);?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../net/lamgc/cgj/pixiv/PixivDownload.java | 34 +++++++++++++++---- 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/src/main/java/net/lamgc/cgj/pixiv/PixivDownload.java b/src/main/java/net/lamgc/cgj/pixiv/PixivDownload.java index d6a604e..9614821 100644 --- a/src/main/java/net/lamgc/cgj/pixiv/PixivDownload.java +++ b/src/main/java/net/lamgc/cgj/pixiv/PixivDownload.java @@ -161,7 +161,7 @@ public class PixivDownload { for (int linkIndex = 0; linkIndex < pageLinkList.size(); linkIndex++) { String link = pageLinkList.get(linkIndex); String fileName = link.substring(link.lastIndexOf("/") + 1); - log.debug("({}/{}) 正在处理 {}", linkIndex, pageLinkList.size(), fileName); + log.trace("({}/{}) 正在处理 {}", linkIndex, pageLinkList.size(), fileName); InputStream imageInputStream = null; int tryCount = 0; do { @@ -178,8 +178,7 @@ public class PixivDownload { try(InputStream pageInputStream = new BufferedInputStream(imageInputStream, 256 * 1024)) { fn.accept(fileName, pageInputStream); } - log.debug("Done!"); - + log.trace("Done!"); } log.debug("IllustId {} 处理完成.", illustId); } @@ -247,6 +246,31 @@ public class PixivDownload { }); } + /** + * 从JsonArray获取数据 + * @param rankingList JsonArray对象 + * @param rankStart 开始索引, 从0开始 + * @param range 范围 + * @return 返回List对象 + */ + public static List getRanking(List rankingList, int rankStart, int range) { + log.debug("正在读取JsonArray...(rankStart: {}, range: {})", rankStart, range); + ArrayList results = new ArrayList<>(rankingList.size()); + for (int rankIndex = rankStart; rankIndex < rankingList.size() && rankIndex < range; rankIndex++) { + JsonElement jsonElement = rankingList.get(rankIndex); + JsonObject rankInfo = jsonElement.getAsJsonObject(); + int rank = rankInfo.get("rank").getAsInt(); + int illustId = rankInfo.get("illust_id").getAsInt(); + int authorId = rankInfo.get("user_id").getAsInt(); + String authorName = rankInfo.get("user_name").getAsString(); + String title = rankInfo.get("title").getAsString(); + log.debug("Array-当前到第 {}/{} 名(总共 {} 名), IllustID: {}, Author: ({}) {}, Title: {}", rank, rankStart + range, range, illustId, authorId, authorName, title); + results.add(rankInfo); + } + log.debug("JsonArray读取完成."); + return results; + } + /** * 从JsonArray获取数据 * @param rankingArray JsonArray对象 @@ -255,8 +279,6 @@ public class PixivDownload { * @return 返回List对象 */ public static List getRanking(JsonArray rankingArray, int rankStart, int range) { - //需要添加一个总量, 否则会完整跑完一次. - //检查是否为最后一次请求,和剩余量有多少 log.debug("正在读取JsonArray...(rankStart: {}, range: {})", rankStart, range); ArrayList results = new ArrayList<>(rankingArray.size()); for (int rankIndex = rankStart; rankIndex < rankingArray.size() && rankIndex < range; rankIndex++) { @@ -305,7 +327,7 @@ public class PixivDownload { ArrayList results = new ArrayList<>(); for (int requestCount = startPage; requestCount <= requestFrequency && requestCount <= 10; requestCount++) { int rangeStart = (requestCount - 1) * 50 + 1; - log.debug("正在请求第 {} 到 {} 位排名榜 (第{}次请求, 共 {} 次)", rangeStart, rangeStart + 49, requestCount - startPage + 1, requestFrequency - startPage); + log.debug("正在请求第 {} 到 {} 位排名榜 (第{}次请求, 共 {} 次)", rangeStart, rangeStart + 49, requestCount - startPage + 1, requestFrequency - startPage + 1); HttpGet request = createHttpGetRequest(PixivURL.getRankingLink(contentType, mode, time, requestCount, true)); log.debug("Request URL: {}", request.getURI()); HttpResponse response = httpClient.execute(request);