mirror of
https://github.com/LamGC/ContentGrabbingJi.git
synced 2025-04-30 06:37:36 +00:00
[Change] CacheStoreCentral 调整代码以为后续更改做准备;
[Change] BotCommandProcess, ImageCacheHandler, PreLoadDataComparator, RandomRankingArtworksSender 适配CacheStoreCentral的更改;
This commit is contained in:
parent
bfe25c2012
commit
97d06c4fc3
@ -100,7 +100,7 @@ public class BotCommandProcess {
|
|||||||
return "阅览禁止:该作品已被封印!!";
|
return "阅览禁止:该作品已被封印!!";
|
||||||
}
|
}
|
||||||
|
|
||||||
JsonObject illustPreLoadData = CacheStoreCentral.getIllustPreLoadData(illustId, false);
|
JsonObject illustPreLoadData = CacheStoreCentral.getCentral().getIllustPreLoadData(illustId, false);
|
||||||
// 在 Java 6 开始, 编译器会将用'+'进行的字符串拼接将自动转换成StringBuilder拼接
|
// 在 Java 6 开始, 编译器会将用'+'进行的字符串拼接将自动转换成StringBuilder拼接
|
||||||
return "色图姬帮你了解了这个作品的信息!\n" + "---------------- 作品信息 ----------------" +
|
return "色图姬帮你了解了这个作品的信息!\n" + "---------------- 作品信息 ----------------" +
|
||||||
"\n作品Id: " + illustId +
|
"\n作品Id: " + illustId +
|
||||||
@ -114,7 +114,7 @@ public class BotCommandProcess {
|
|||||||
"\n页数:" + illustPreLoadData.get(PreLoadDataComparator.Attribute.PAGE.attrName).getAsInt() + "页" +
|
"\n页数:" + illustPreLoadData.get(PreLoadDataComparator.Attribute.PAGE.attrName).getAsInt() + "页" +
|
||||||
"\n作品链接:" + artworksLink(fromGroup, illustId) + "\n" +
|
"\n作品链接:" + artworksLink(fromGroup, illustId) + "\n" +
|
||||||
"---------------- 作品图片 ----------------\n" +
|
"---------------- 作品图片 ----------------\n" +
|
||||||
CacheStoreCentral.getImageById(fromGroup, illustId, PageQuality.REGULAR, 1) + "\n" +
|
CacheStoreCentral.getCentral().getImageById(fromGroup, illustId, PageQuality.REGULAR, 1) + "\n" +
|
||||||
"使用 \".cgj image -id " +
|
"使用 \".cgj image -id " +
|
||||||
illustId +
|
illustId +
|
||||||
"\" 获取原图。\n如有不当作品,可使用\".cgj report -id " +
|
"\" 获取原图。\n如有不当作品,可使用\".cgj report -id " +
|
||||||
@ -209,7 +209,7 @@ public class BotCommandProcess {
|
|||||||
log.warn("配置项 {} 的参数值格式有误!", imageLimitPropertyKey);
|
log.warn("配置项 {} 的参数值格式有误!", imageLimitPropertyKey);
|
||||||
}
|
}
|
||||||
|
|
||||||
List<JsonObject> rankingInfoList = CacheStoreCentral
|
List<JsonObject> rankingInfoList = CacheStoreCentral.getCentral()
|
||||||
.getRankingInfoByCache(type, mode, queryDate, 1, Math.max(0, itemLimit), false);
|
.getRankingInfoByCache(type, mode, queryDate, 1, Math.max(0, itemLimit), false);
|
||||||
if(rankingInfoList.isEmpty()) {
|
if(rankingInfoList.isEmpty()) {
|
||||||
return "无法查询排行榜,可能排行榜尚未更新。";
|
return "无法查询排行榜,可能排行榜尚未更新。";
|
||||||
@ -228,7 +228,7 @@ public class BotCommandProcess {
|
|||||||
.append(pagesCount).append("p.\n");
|
.append(pagesCount).append("p.\n");
|
||||||
if (index <= imageLimit) {
|
if (index <= imageLimit) {
|
||||||
resultBuilder
|
resultBuilder
|
||||||
.append(CacheStoreCentral
|
.append(CacheStoreCentral.getCentral()
|
||||||
.getImageById(fromGroup, illustId, PixivDownload.PageQuality.REGULAR, 1))
|
.getImageById(fromGroup, illustId, PixivDownload.PageQuality.REGULAR, 1))
|
||||||
.append("\n");
|
.append("\n");
|
||||||
}
|
}
|
||||||
@ -312,7 +312,7 @@ public class BotCommandProcess {
|
|||||||
@Argument(name = "page", force = false, defaultValue = "1") int pagesIndex
|
@Argument(name = "page", force = false, defaultValue = "1") int pagesIndex
|
||||||
) throws IOException {
|
) throws IOException {
|
||||||
log.info("正在执行搜索...");
|
log.info("正在执行搜索...");
|
||||||
JsonObject resultBody = CacheStoreCentral
|
JsonObject resultBody = CacheStoreCentral.getCentral()
|
||||||
.getSearchBody(content, type, area, includeKeywords, excludeKeywords, contentOption);
|
.getSearchBody(content, type, area, includeKeywords, excludeKeywords, contentOption);
|
||||||
|
|
||||||
StringBuilder result = new StringBuilder("内容 " + content + " 的搜索结果:\n");
|
StringBuilder result = new StringBuilder("内容 " + content + " 的搜索结果:\n");
|
||||||
@ -365,8 +365,8 @@ public class BotCommandProcess {
|
|||||||
PixivURL.getPixivRefererLink(illustId)
|
PixivURL.getPixivRefererLink(illustId)
|
||||||
);
|
);
|
||||||
|
|
||||||
String imageMsg =
|
String imageMsg = CacheStoreCentral.getCentral()
|
||||||
CacheStoreCentral.getImageById(fromGroup, illustId, PixivDownload.PageQuality.REGULAR, 1);
|
.getImageById(fromGroup, illustId, PixivDownload.PageQuality.REGULAR, 1);
|
||||||
if (isNoSafe(illustId, SettingProperties.getProperties(fromGroup), false)) {
|
if (isNoSafe(illustId, SettingProperties.getProperties(fromGroup), false)) {
|
||||||
log.warn("作品Id {} 为R-18作品, 跳过.", illustId);
|
log.warn("作品Id {} 为R-18作品, 跳过.", illustId);
|
||||||
continue;
|
continue;
|
||||||
@ -375,7 +375,8 @@ public class BotCommandProcess {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
JsonObject illustPreLoadData = CacheStoreCentral.getIllustPreLoadData(illustId, false);
|
JsonObject illustPreLoadData = CacheStoreCentral.getCentral()
|
||||||
|
.getIllustPreLoadData(illustId, false);
|
||||||
result.append(searchArea.name()).append(" (").append(count).append(" / ")
|
result.append(searchArea.name()).append(" (").append(count).append(" / ")
|
||||||
.append(limit).append(")\n\t作品id: ").append(illustId)
|
.append(limit).append(")\n\t作品id: ").append(illustId)
|
||||||
.append(", \n\t作者名: ").append(illustObj.get("userName").getAsString())
|
.append(", \n\t作者名: ").append(illustObj.get("userName").getAsString())
|
||||||
@ -463,7 +464,7 @@ public class BotCommandProcess {
|
|||||||
|
|
||||||
static void clearCache() {
|
static void clearCache() {
|
||||||
log.warn("正在清除所有缓存...");
|
log.warn("正在清除所有缓存...");
|
||||||
CacheStoreCentral.clearCache();
|
CacheStoreCentral.getCentral().clearCache();
|
||||||
File imageStoreDir = new File(BotGlobal.getGlobal().getDataStoreDir(), "data/image/cgj/");
|
File imageStoreDir = new File(BotGlobal.getGlobal().getDataStoreDir(), "data/image/cgj/");
|
||||||
File[] listFiles = imageStoreDir.listFiles();
|
File[] listFiles = imageStoreDir.listFiles();
|
||||||
if (listFiles == null) {
|
if (listFiles == null) {
|
||||||
@ -484,7 +485,7 @@ public class BotCommandProcess {
|
|||||||
@Argument(name = "quality", force = false) PixivDownload.PageQuality quality,
|
@Argument(name = "quality", force = false) PixivDownload.PageQuality quality,
|
||||||
@Argument(name = "page", force = false, defaultValue = "1") int pageIndex
|
@Argument(name = "page", force = false, defaultValue = "1") int pageIndex
|
||||||
) {
|
) {
|
||||||
return CacheStoreCentral.getImageById(fromGroup, illustId, quality, pageIndex);
|
return CacheStoreCentral.getCentral().getImageById(fromGroup, illustId, quality, pageIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -532,7 +533,7 @@ public class BotCommandProcess {
|
|||||||
*/
|
*/
|
||||||
public static boolean isNoSafe(int illustId, Properties settingProp, boolean returnRaw)
|
public static boolean isNoSafe(int illustId, Properties settingProp, boolean returnRaw)
|
||||||
throws IOException, NoSuchElementException {
|
throws IOException, NoSuchElementException {
|
||||||
JsonObject illustInfo = CacheStoreCentral.getIllustInfo(illustId, false);
|
JsonObject illustInfo = CacheStoreCentral.getCentral().getIllustInfo(illustId, false);
|
||||||
JsonArray tags = illustInfo.getAsJsonArray("tags");
|
JsonArray tags = illustInfo.getAsJsonArray("tags");
|
||||||
boolean rawValue = illustInfo.get("xRestrict").getAsInt() != 0;
|
boolean rawValue = illustInfo.get("xRestrict").getAsInt() != 0;
|
||||||
if(!rawValue) {
|
if(!rawValue) {
|
||||||
|
@ -92,7 +92,7 @@ public class RandomRankingArtworksSender extends AutoSender {
|
|||||||
|
|
||||||
int selectRanking = rankingStart + new Random().nextInt(rankingStop - rankingStart + 1);
|
int selectRanking = rankingStart + new Random().nextInt(rankingStop - rankingStart + 1);
|
||||||
try {
|
try {
|
||||||
List<JsonObject> rankingList = CacheStoreCentral.getRankingInfoByCache(
|
List<JsonObject> rankingList = CacheStoreCentral.getCentral().getRankingInfoByCache(
|
||||||
contentType,
|
contentType,
|
||||||
mode,
|
mode,
|
||||||
queryDate,
|
queryDate,
|
||||||
@ -119,7 +119,7 @@ public class RandomRankingArtworksSender extends AutoSender {
|
|||||||
String message = "#美图推送 - 今日排行榜 第 " + rankingInfo.get("rank").getAsInt() + " 名\n" +
|
String message = "#美图推送 - 今日排行榜 第 " + rankingInfo.get("rank").getAsInt() + " 名\n" +
|
||||||
"标题:" + rankingInfo.get("title").getAsString() + "(" + illustId + ")\n" +
|
"标题:" + rankingInfo.get("title").getAsString() + "(" + illustId + ")\n" +
|
||||||
"作者:" + rankingInfo.get("user_name").getAsString() + "\n" +
|
"作者:" + rankingInfo.get("user_name").getAsString() + "\n" +
|
||||||
CacheStoreCentral.getImageById(0, illustId, quality, 1) +
|
CacheStoreCentral.getCentral().getImageById(0, illustId, quality, 1) +
|
||||||
"\n如有不当作品,可使用\".cgj report -id " + illustId + "\"向色图姬反馈。";
|
"\n如有不当作品,可使用\".cgj report -id " + illustId + "\"向色图姬反馈。";
|
||||||
getMessageSender().sendMessage(message);
|
getMessageSender().sendMessage(message);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
@ -31,27 +31,44 @@ import java.util.concurrent.atomic.AtomicInteger;
|
|||||||
@SuppressWarnings("SynchronizationOnLocalVariableOrMethodParameter")
|
@SuppressWarnings("SynchronizationOnLocalVariableOrMethodParameter")
|
||||||
public final class CacheStoreCentral {
|
public final class CacheStoreCentral {
|
||||||
|
|
||||||
private CacheStoreCentral() {}
|
|
||||||
|
|
||||||
private final static Logger log = LoggerFactory.getLogger(CacheStoreCentral.class);
|
private final static Logger log = LoggerFactory.getLogger(CacheStoreCentral.class);
|
||||||
|
|
||||||
private final static Hashtable<String, File> imageCache = new Hashtable<>();
|
private static CacheStoreCentral central = new CacheStoreCentral();
|
||||||
|
|
||||||
private final static JsonRedisCacheStore imageChecksumCache =
|
public static CacheStoreCentral getCentral() {
|
||||||
|
if(central == null) {
|
||||||
|
initialCentral();
|
||||||
|
}
|
||||||
|
return central;
|
||||||
|
}
|
||||||
|
|
||||||
|
private synchronized static void initialCentral() {
|
||||||
|
if(central != null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
central = new CacheStoreCentral();
|
||||||
|
}
|
||||||
|
|
||||||
|
private CacheStoreCentral() {}
|
||||||
|
|
||||||
|
private final Hashtable<String, File> imageCache = new Hashtable<>();
|
||||||
|
|
||||||
|
private final CacheStore<JsonElement> imageChecksumCache =
|
||||||
new JsonRedisCacheStore(BotGlobal.getGlobal().getRedisServer(),
|
new JsonRedisCacheStore(BotGlobal.getGlobal().getRedisServer(),
|
||||||
"imageChecksum", BotGlobal.getGlobal().getGson());
|
"imageChecksum", BotGlobal.getGlobal().getGson());
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 作品信息缓存 - 不过期
|
* 作品信息缓存 - 不过期
|
||||||
*/
|
*/
|
||||||
private final static CacheStore<JsonElement> illustInfoCache =
|
private final CacheStore<JsonElement> illustInfoCache =
|
||||||
new JsonRedisCacheStore(BotGlobal.getGlobal().getRedisServer(),
|
new JsonRedisCacheStore(BotGlobal.getGlobal().getRedisServer(),
|
||||||
"illustInfo", BotGlobal.getGlobal().getGson());
|
"illustInfo", BotGlobal.getGlobal().getGson());
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 作品信息预加载数据 - 有效期 2 小时, 本地缓存有效期1 ± 0.25
|
* 作品信息预加载数据 - 有效期 2 小时, 本地缓存有效期1 ± 0.25
|
||||||
*/
|
*/
|
||||||
private final static CacheStore<JsonElement> illustPreLoadDataCache =
|
private final CacheStore<JsonElement> illustPreLoadDataCache =
|
||||||
CacheStoreUtils.hashLocalHotDataStore(
|
CacheStoreUtils.hashLocalHotDataStore(
|
||||||
new JsonRedisCacheStore(BotGlobal.getGlobal().getRedisServer(),
|
new JsonRedisCacheStore(BotGlobal.getGlobal().getRedisServer(),
|
||||||
"illustPreLoadData", BotGlobal.getGlobal().getGson()),
|
"illustPreLoadData", BotGlobal.getGlobal().getGson()),
|
||||||
@ -59,27 +76,27 @@ public final class CacheStoreCentral {
|
|||||||
/**
|
/**
|
||||||
* 搜索内容缓存, 有效期 2 小时
|
* 搜索内容缓存, 有效期 2 小时
|
||||||
*/
|
*/
|
||||||
private final static CacheStore<JsonElement> searchBodyCache =
|
private final CacheStore<JsonElement> searchBodyCache =
|
||||||
new JsonRedisCacheStore(BotGlobal.getGlobal().getRedisServer(),
|
new JsonRedisCacheStore(BotGlobal.getGlobal().getRedisServer(),
|
||||||
"searchBody", BotGlobal.getGlobal().getGson());
|
"searchBody", BotGlobal.getGlobal().getGson());
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 排行榜缓存, 不过期
|
* 排行榜缓存, 不过期
|
||||||
*/
|
*/
|
||||||
private final static CacheStore<List<JsonObject>> rankingCache =
|
private final CacheStore<List<JsonObject>> rankingCache =
|
||||||
new JsonObjectRedisListCacheStore(BotGlobal.getGlobal().getRedisServer(),
|
new JsonObjectRedisListCacheStore(BotGlobal.getGlobal().getRedisServer(),
|
||||||
"ranking", BotGlobal.getGlobal().getGson());
|
"ranking", BotGlobal.getGlobal().getGson());
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 作品页面下载链接缓存 - 不过期
|
* 作品页面下载链接缓存 - 不过期
|
||||||
*/
|
*/
|
||||||
private final static CacheStore<List<String>> pagesCache =
|
private final CacheStore<List<String>> pagesCache =
|
||||||
new StringListRedisCacheStore(BotGlobal.getGlobal().getRedisServer(), "imagePages");
|
new StringListRedisCacheStore(BotGlobal.getGlobal().getRedisServer(), "imagePages");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 清空所有缓存
|
* 清空所有缓存
|
||||||
*/
|
*/
|
||||||
public static void clearCache() {
|
public void clearCache() {
|
||||||
imageCache.clear();
|
imageCache.clear();
|
||||||
illustInfoCache.clear();
|
illustInfoCache.clear();
|
||||||
illustPreLoadDataCache.clear();
|
illustPreLoadDataCache.clear();
|
||||||
@ -96,7 +113,7 @@ public final class CacheStoreCentral {
|
|||||||
* @param pageIndex 指定页面索引, 从1开始
|
* @param pageIndex 指定页面索引, 从1开始
|
||||||
* @return 如果成功, 返回BotCode, 否则返回错误信息.
|
* @return 如果成功, 返回BotCode, 否则返回错误信息.
|
||||||
*/
|
*/
|
||||||
public static String getImageById(long fromGroup, int illustId, PixivDownload.PageQuality quality, int pageIndex) {
|
public String getImageById(long fromGroup, int illustId, PixivDownload.PageQuality quality, int pageIndex) {
|
||||||
log.debug("IllustId: {}, Quality: {}, PageIndex: {}", illustId, quality.name(), pageIndex);
|
log.debug("IllustId: {}, Quality: {}, PageIndex: {}", illustId, quality.name(), pageIndex);
|
||||||
if(pageIndex <= 0) {
|
if(pageIndex <= 0) {
|
||||||
log.warn("指定的页数不能小于或等于0: {}", pageIndex);
|
log.warn("指定的页数不能小于或等于0: {}", pageIndex);
|
||||||
@ -118,7 +135,7 @@ public final class CacheStoreCentral {
|
|||||||
|
|
||||||
List<String> pagesList;
|
List<String> pagesList;
|
||||||
try {
|
try {
|
||||||
pagesList = CacheStoreCentral.getIllustPages(illustId, quality, false);
|
pagesList = getIllustPages(illustId, quality, false);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
log.error("获取下载链接列表时发生异常", e);
|
log.error("获取下载链接列表时发生异常", e);
|
||||||
return "发生网络异常,无法获取图片!";
|
return "发生网络异常,无法获取图片!";
|
||||||
@ -190,7 +207,7 @@ public final class CacheStoreCentral {
|
|||||||
* @return 返回设定好参数的BotCode
|
* @return 返回设定好参数的BotCode
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("SameParameterValue")
|
@SuppressWarnings("SameParameterValue")
|
||||||
private static BotCode getImageToBotCode(File targetFile, boolean updateCache) {
|
private BotCode getImageToBotCode(File targetFile, boolean updateCache) {
|
||||||
String fileName = Objects.requireNonNull(targetFile, "targetFile is null").getName();
|
String fileName = Objects.requireNonNull(targetFile, "targetFile is null").getName();
|
||||||
BotCode code = BotCode.parse(
|
BotCode code = BotCode.parse(
|
||||||
CQCode.image(BotGlobal.getGlobal().getImageStoreDir().getName() + "/" + fileName));
|
CQCode.image(BotGlobal.getGlobal().getImageStoreDir().getName() + "/" + fileName));
|
||||||
@ -208,7 +225,7 @@ public final class CacheStoreCentral {
|
|||||||
* @throws IOException 当Http请求发生异常时抛出
|
* @throws IOException 当Http请求发生异常时抛出
|
||||||
* @throws NoSuchElementException 当作品未找到时抛出
|
* @throws NoSuchElementException 当作品未找到时抛出
|
||||||
*/
|
*/
|
||||||
public static JsonObject getIllustInfo(int illustId, boolean flushCache)
|
public JsonObject getIllustInfo(int illustId, boolean flushCache)
|
||||||
throws IOException, NoSuchElementException {
|
throws IOException, NoSuchElementException {
|
||||||
String illustIdStr = buildSyncKey(Integer.toString(illustId));
|
String illustIdStr = buildSyncKey(Integer.toString(illustId));
|
||||||
JsonObject illustInfoObj = null;
|
JsonObject illustInfoObj = null;
|
||||||
@ -236,7 +253,7 @@ public final class CacheStoreCentral {
|
|||||||
* @return 成功返回JsonObject对象
|
* @return 成功返回JsonObject对象
|
||||||
* @throws IOException 当Http请求处理发生异常时抛出
|
* @throws IOException 当Http请求处理发生异常时抛出
|
||||||
*/
|
*/
|
||||||
public static JsonObject getIllustPreLoadData(int illustId, boolean flushCache) throws IOException {
|
public JsonObject getIllustPreLoadData(int illustId, boolean flushCache) throws IOException {
|
||||||
String illustIdStr = buildSyncKey(Integer.toString(illustId));
|
String illustIdStr = buildSyncKey(Integer.toString(illustId));
|
||||||
JsonObject result = null;
|
JsonObject result = null;
|
||||||
if (!illustPreLoadDataCache.exists(illustIdStr) || flushCache) {
|
if (!illustPreLoadDataCache.exists(illustIdStr) || flushCache) {
|
||||||
@ -272,7 +289,7 @@ public final class CacheStoreCentral {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static List<String> getIllustPages(int illustId, PixivDownload.PageQuality quality, boolean flushCache)
|
public List<String> getIllustPages(int illustId, PixivDownload.PageQuality quality, boolean flushCache)
|
||||||
throws IOException {
|
throws IOException {
|
||||||
String pagesSign = buildSyncKey(Integer.toString(illustId), ".", quality.name());
|
String pagesSign = buildSyncKey(Integer.toString(illustId), ".", quality.name());
|
||||||
List<String> result = null;
|
List<String> result = null;
|
||||||
@ -295,7 +312,7 @@ public final class CacheStoreCentral {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
private final static Random expireTimeFloatRandom = new Random();
|
private final Random expireTimeFloatRandom = new Random();
|
||||||
/**
|
/**
|
||||||
* 获取排行榜
|
* 获取排行榜
|
||||||
* @param contentType 排行榜类型
|
* @param contentType 排行榜类型
|
||||||
@ -307,7 +324,7 @@ public final class CacheStoreCentral {
|
|||||||
* @return 成功返回有值List, 失败且无异常返回空
|
* @return 成功返回有值List, 失败且无异常返回空
|
||||||
* @throws IOException 获取异常时抛出
|
* @throws IOException 获取异常时抛出
|
||||||
*/
|
*/
|
||||||
public static List<JsonObject> getRankingInfoByCache(PixivURL.RankingContentType contentType,
|
public List<JsonObject> getRankingInfoByCache(PixivURL.RankingContentType contentType,
|
||||||
PixivURL.RankingMode mode,
|
PixivURL.RankingMode mode,
|
||||||
Date queryDate, int start, int range, boolean flushCache)
|
Date queryDate, int start, int range, boolean flushCache)
|
||||||
throws IOException {
|
throws IOException {
|
||||||
@ -363,7 +380,7 @@ public final class CacheStoreCentral {
|
|||||||
* @return 返回完整搜索结果
|
* @return 返回完整搜索结果
|
||||||
* @throws IOException 当请求发生异常, 或接口返回异常信息时抛出.
|
* @throws IOException 当请求发生异常, 或接口返回异常信息时抛出.
|
||||||
*/
|
*/
|
||||||
public static JsonObject getSearchBody(
|
public JsonObject getSearchBody(
|
||||||
String content,
|
String content,
|
||||||
String type,
|
String type,
|
||||||
String area,
|
String area,
|
||||||
@ -457,7 +474,7 @@ public final class CacheStoreCentral {
|
|||||||
return resultBody;
|
return resultBody;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected static ImageChecksum getImageChecksum(int illustId, int pageIndex) {
|
protected ImageChecksum getImageChecksum(int illustId, int pageIndex) {
|
||||||
String cacheKey = illustId + ":" + pageIndex;
|
String cacheKey = illustId + ":" + pageIndex;
|
||||||
if(!imageChecksumCache.exists(cacheKey)) {
|
if(!imageChecksumCache.exists(cacheKey)) {
|
||||||
return null;
|
return null;
|
||||||
@ -466,7 +483,7 @@ public final class CacheStoreCentral {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected static void setImageChecksum(ImageChecksum checksum) {
|
protected void setImageChecksum(ImageChecksum checksum) {
|
||||||
String cacheKey = checksum.getIllustId() + ":" + checksum.getPage();
|
String cacheKey = checksum.getIllustId() + ":" + checksum.getPage();
|
||||||
imageChecksumCache.update(cacheKey, ImageChecksum.toJsonObject(checksum), 0);
|
imageChecksumCache.update(cacheKey, ImageChecksum.toJsonObject(checksum), 0);
|
||||||
}
|
}
|
||||||
|
@ -80,7 +80,7 @@ public class ImageCacheHandler implements EventHandler {
|
|||||||
);
|
);
|
||||||
bufferInputStream.reset();
|
bufferInputStream.reset();
|
||||||
Streams.copy(bufferInputStream, fileOutputStream, false);
|
Streams.copy(bufferInputStream, fileOutputStream, false);
|
||||||
CacheStoreCentral.setImageChecksum(imageChecksum);
|
CacheStoreCentral.getCentral().setImageChecksum(imageChecksum);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
log.error("下载图片时发生异常", e);
|
log.error("下载图片时发生异常", e);
|
||||||
throw e;
|
throw e;
|
||||||
|
@ -39,10 +39,10 @@ public class PreLoadDataComparator implements Comparator<JsonElement> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
JsonObject illustPreLoadData1 =
|
JsonObject illustPreLoadData1 = CacheStoreCentral.getCentral()
|
||||||
CacheStoreCentral.getIllustPreLoadData(o1.getAsJsonObject().get("illustId").getAsInt(), false);
|
.getIllustPreLoadData(o1.getAsJsonObject().get("illustId").getAsInt(), false);
|
||||||
JsonObject illustPreLoadData2 =
|
JsonObject illustPreLoadData2 = CacheStoreCentral.getCentral()
|
||||||
CacheStoreCentral.getIllustPreLoadData(o2.getAsJsonObject().get("illustId").getAsInt(), false);
|
.getIllustPreLoadData(o2.getAsJsonObject().get("illustId").getAsInt(), false);
|
||||||
return Integer.compare(
|
return Integer.compare(
|
||||||
illustPreLoadData2.get(attribute.attrName).getAsInt(),
|
illustPreLoadData2.get(attribute.attrName).getAsInt(),
|
||||||
illustPreLoadData1.get(attribute.attrName).getAsInt());
|
illustPreLoadData1.get(attribute.attrName).getAsInt());
|
||||||
|
Loading…
Reference in New Issue
Block a user