[Fix] RandomRankingArtworksSender 修复排行榜选取错误的问题;

[Add] RandomRankingArtworksSender 增加对rankingStart, rankingStop的范围选取检查;
[Update] RandomRankingArtworksSender 更新Javadoc;
This commit is contained in:
LamGC 2020-04-24 01:41:53 +08:00
parent 28aa086f15
commit b53aafa81b

View File

@ -26,15 +26,19 @@ public class RandomRankingArtworksSender extends AutoSender {
/** /**
* 构造一个推荐作品发送器 * 构造一个推荐作品发送器
* @param messageSender 消息发送器 * @param messageSender 消息发送器
* @param rankingStart 排行榜开始范围(从1开始, 名次) * @param rankingStart 排行榜开始范围(从1开始, 名次)如传入0或负数则为默认值默认为1
* @param rankingStop 排名榜结束范围(包括该名次) * @param rankingStop 排名榜结束范围(包括该名次)如传入0或负数则为默认值默认为150
* @param quality 图片质量, 详见{@link net.lamgc.cgj.pixiv.PixivDownload.PageQuality} * @param quality 图片质量, 详见{@link net.lamgc.cgj.pixiv.PixivDownload.PageQuality}
* @throws IndexOutOfBoundsException rankingStart > rankingStop时抛出
*/ */
public RandomRankingArtworksSender(MessageSender messageSender, int rankingStart, int rankingStop, PixivDownload.PageQuality quality) { public RandomRankingArtworksSender(MessageSender messageSender, int rankingStart, int rankingStop, PixivDownload.PageQuality quality) {
super(messageSender); super(messageSender);
log = LoggerFactory.getLogger("RecommendArtworksSender@" + Integer.toHexString(this.hashCode())); log = LoggerFactory.getLogger("RecommendArtworksSender@" + Integer.toHexString(this.hashCode()));
this.rankingStart = rankingStart > 0 ? rankingStart : 1; this.rankingStart = rankingStart > 0 ? rankingStart : 1;
this.rankingStop = rankingStop > 0 ? rankingStop : 150; this.rankingStop = rankingStop > 0 ? rankingStop : 150;
if(this.rankingStart > this.rankingStop) {
throw new IndexOutOfBoundsException("rankingStart=" + this.rankingStart + ", rankingStop=" + this.rankingStop);
}
this.quality = quality == null ? PixivDownload.PageQuality.REGULAR : quality; this.quality = quality == null ? PixivDownload.PageQuality.REGULAR : quality;
} }
@ -50,7 +54,7 @@ public class RandomRankingArtworksSender extends AutoSender {
} }
queryDate = calendar.getTime(); queryDate = calendar.getTime();
int selectRanking = rankingStart + new Random().nextInt(rankingStop + 1); int selectRanking = rankingStart + new Random().nextInt(rankingStop - rankingStart + 1);
try { try {
List<JsonObject> rankingList = BotCommandProcess.getRankingInfoByCache( List<JsonObject> rankingList = BotCommandProcess.getRankingInfoByCache(
PixivURL.RankingContentType.TYPE_ILLUST, PixivURL.RankingContentType.TYPE_ILLUST,