mirror of
https://github.com/LamGC/ContentGrabbingJi.git
synced 2025-04-30 06:37:36 +00:00
[Change] BotGlobal, BotCommandProcess 将'Gson'和'PixivDownload'对象纳入BotGlobal;
This commit is contained in:
parent
273dbd45b0
commit
feb51b8534
@ -36,15 +36,9 @@ import java.util.concurrent.atomic.AtomicInteger;
|
|||||||
@SuppressWarnings({"SynchronizationOnLocalVariableOrMethodParameter", "SameParameterValue"})
|
@SuppressWarnings({"SynchronizationOnLocalVariableOrMethodParameter", "SameParameterValue"})
|
||||||
public class BotCommandProcess {
|
public class BotCommandProcess {
|
||||||
|
|
||||||
private final static PixivDownload pixivDownload =
|
|
||||||
new PixivDownload(BotGlobal.getGlobal().getCookieStore(), BotGlobal.getGlobal().getProxy());
|
|
||||||
|
|
||||||
private final static Logger log = LoggerFactory.getLogger(BotCommandProcess.class);
|
private final static Logger log = LoggerFactory.getLogger(BotCommandProcess.class);
|
||||||
|
|
||||||
private final static File imageStoreDir = new File(BotGlobal.getGlobal().getDataStoreDir(), "data/image/cgj/");
|
private final static File imageStoreDir = new File(BotGlobal.getGlobal().getDataStoreDir(), "data/image/cgj/");
|
||||||
private final static Gson gson = new GsonBuilder()
|
|
||||||
.serializeNulls()
|
|
||||||
.create();
|
|
||||||
|
|
||||||
/* -------------------- 缓存 -------------------- */
|
/* -------------------- 缓存 -------------------- */
|
||||||
|
|
||||||
@ -54,26 +48,30 @@ public class BotCommandProcess {
|
|||||||
* 作品信息缓存 - 不过期
|
* 作品信息缓存 - 不过期
|
||||||
*/
|
*/
|
||||||
private final static CacheStore<JsonElement> illustInfoCache =
|
private final static CacheStore<JsonElement> illustInfoCache =
|
||||||
new JsonRedisCacheStore(BotGlobal.getGlobal().getRedisServer(), "illustInfo", gson);
|
new JsonRedisCacheStore(BotGlobal.getGlobal().getRedisServer(),
|
||||||
|
"illustInfo", BotGlobal.getGlobal().getGson());
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 作品信息预加载数据 - 有效期 2 小时, 本地缓存有效期1 ± 0.25
|
* 作品信息预加载数据 - 有效期 2 小时, 本地缓存有效期1 ± 0.25
|
||||||
*/
|
*/
|
||||||
private final static CacheStore<JsonElement> illustPreLoadDataCache =
|
private final static CacheStore<JsonElement> illustPreLoadDataCache =
|
||||||
CacheStoreUtils.hashLocalHotDataStore(
|
CacheStoreUtils.hashLocalHotDataStore(
|
||||||
new JsonRedisCacheStore(BotGlobal.getGlobal().getRedisServer(), "illustPreLoadData", gson),
|
new JsonRedisCacheStore(BotGlobal.getGlobal().getRedisServer(),
|
||||||
3600000, 900000);
|
"illustPreLoadData", BotGlobal.getGlobal().getGson()),
|
||||||
|
3600000, 900000);
|
||||||
/**
|
/**
|
||||||
* 搜索内容缓存, 有效期 2 小时
|
* 搜索内容缓存, 有效期 2 小时
|
||||||
*/
|
*/
|
||||||
private final static CacheStore<JsonElement> searchBodyCache =
|
private final static CacheStore<JsonElement> searchBodyCache =
|
||||||
new JsonRedisCacheStore(BotGlobal.getGlobal().getRedisServer(), "searchBody", gson);
|
new JsonRedisCacheStore(BotGlobal.getGlobal().getRedisServer(),
|
||||||
|
"searchBody", BotGlobal.getGlobal().getGson());
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 排行榜缓存, 不过期
|
* 排行榜缓存, 不过期
|
||||||
*/
|
*/
|
||||||
private final static CacheStore<List<JsonObject>> rankingCache =
|
private final static CacheStore<List<JsonObject>> rankingCache =
|
||||||
new JsonObjectRedisListCacheStore(BotGlobal.getGlobal().getRedisServer(), "ranking", gson);
|
new JsonObjectRedisListCacheStore(BotGlobal.getGlobal().getRedisServer(),
|
||||||
|
"ranking", BotGlobal.getGlobal().getGson());
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 作品页面下载链接缓存 - 不过期
|
* 作品页面下载链接缓存 - 不过期
|
||||||
@ -85,7 +83,8 @@ public class BotCommandProcess {
|
|||||||
* 作品报告存储 - 不过期
|
* 作品报告存储 - 不过期
|
||||||
*/
|
*/
|
||||||
public final static CacheStore<JsonElement> reportStore =
|
public final static CacheStore<JsonElement> reportStore =
|
||||||
new JsonRedisCacheStore(BotGlobal.getGlobal().getRedisServer(), "report", gson);
|
new JsonRedisCacheStore(BotGlobal.getGlobal().getRedisServer(),
|
||||||
|
"report", BotGlobal.getGlobal().getGson());
|
||||||
|
|
||||||
private final static RankingUpdateTimer updateTimer = new RankingUpdateTimer();
|
private final static RankingUpdateTimer updateTimer = new RankingUpdateTimer();
|
||||||
|
|
||||||
@ -380,12 +379,12 @@ public class BotCommandProcess {
|
|||||||
if (!searchBodyCache.exists(requestUrl)) {
|
if (!searchBodyCache.exists(requestUrl)) {
|
||||||
log.debug("searchBody缓存失效, 正在更新...");
|
log.debug("searchBody缓存失效, 正在更新...");
|
||||||
JsonObject jsonObject;
|
JsonObject jsonObject;
|
||||||
HttpGet httpGetRequest = pixivDownload.createHttpGetRequest(requestUrl);
|
HttpGet httpGetRequest = BotGlobal.getGlobal().getPixivDownload().createHttpGetRequest(requestUrl);
|
||||||
HttpResponse response = pixivDownload.getHttpClient().execute(httpGetRequest);
|
HttpResponse response = BotGlobal.getGlobal().getPixivDownload().getHttpClient().execute(httpGetRequest);
|
||||||
|
|
||||||
String responseBody = EntityUtils.toString(response.getEntity(), StandardCharsets.UTF_8);
|
String responseBody = EntityUtils.toString(response.getEntity(), StandardCharsets.UTF_8);
|
||||||
log.debug("ResponseBody: {}", responseBody);
|
log.debug("ResponseBody: {}", responseBody);
|
||||||
jsonObject = gson.fromJson(responseBody, JsonObject.class);
|
jsonObject = BotGlobal.getGlobal().getGson().fromJson(responseBody, JsonObject.class);
|
||||||
|
|
||||||
if (jsonObject.get("error").getAsBoolean()) {
|
if (jsonObject.get("error").getAsBoolean()) {
|
||||||
log.error("接口请求错误, 错误信息: {}", jsonObject.get("message").getAsString());
|
log.error("接口请求错误, 错误信息: {}", jsonObject.get("message").getAsString());
|
||||||
@ -511,7 +510,7 @@ public class BotCommandProcess {
|
|||||||
log.warn("来源群 {} 查询的作品Id {} 为R18作品, 根据配置设定, 屏蔽该作品.", fromGroup, illustId);
|
log.warn("来源群 {} 查询的作品Id {} 为R18作品, 根据配置设定, 屏蔽该作品.", fromGroup, illustId);
|
||||||
return "该作品已被封印!";
|
return "该作品已被封印!";
|
||||||
}
|
}
|
||||||
List<String> pagesList = PixivDownload.getIllustAllPageDownload(pixivDownload.getHttpClient(), pixivDownload.getCookieStore(), illustId, quality);
|
List<String> pagesList = PixivDownload.getIllustAllPageDownload(BotGlobal.getGlobal().getPixivDownload().getHttpClient(), BotGlobal.getGlobal().getPixivDownload().getCookieStore(), illustId, quality);
|
||||||
StringBuilder builder = new StringBuilder("作品ID ").append(illustId).append(" 共有").append(pagesList.size()).append("页:").append("\n");
|
StringBuilder builder = new StringBuilder("作品ID ").append(illustId).append(" 共有").append(pagesList.size()).append("页:").append("\n");
|
||||||
int index = 0;
|
int index = 0;
|
||||||
for (String link : pagesList) {
|
for (String link : pagesList) {
|
||||||
@ -606,7 +605,7 @@ public class BotCommandProcess {
|
|||||||
headRequest.addHeader("Referer", PixivURL.getPixivRefererLink(illustId));
|
headRequest.addHeader("Referer", PixivURL.getPixivRefererLink(illustId));
|
||||||
HttpResponse headResponse;
|
HttpResponse headResponse;
|
||||||
try {
|
try {
|
||||||
headResponse = pixivDownload.getHttpClient().execute(headRequest);
|
headResponse = BotGlobal.getGlobal().getPixivDownload().getHttpClient().execute(headRequest);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
log.error("获取图片大小失败!", e);
|
log.error("获取图片大小失败!", e);
|
||||||
return "图片获取失败!";
|
return "图片获取失败!";
|
||||||
@ -736,7 +735,7 @@ public class BotCommandProcess {
|
|||||||
if (!illustInfoCache.exists(illustIdStr) || flushCache) {
|
if (!illustInfoCache.exists(illustIdStr) || flushCache) {
|
||||||
synchronized (illustIdStr) {
|
synchronized (illustIdStr) {
|
||||||
if (!illustInfoCache.exists(illustIdStr) || flushCache) {
|
if (!illustInfoCache.exists(illustIdStr) || flushCache) {
|
||||||
illustInfoObj = pixivDownload.getIllustInfoByIllustId(illustId);
|
illustInfoObj = BotGlobal.getGlobal().getPixivDownload().getIllustInfoByIllustId(illustId);
|
||||||
illustInfoCache.update(illustIdStr, illustInfoObj, null);
|
illustInfoCache.update(illustIdStr, illustInfoObj, null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -764,7 +763,7 @@ public class BotCommandProcess {
|
|||||||
synchronized (illustIdStr) {
|
synchronized (illustIdStr) {
|
||||||
if (!illustPreLoadDataCache.exists(illustIdStr) || flushCache) {
|
if (!illustPreLoadDataCache.exists(illustIdStr) || flushCache) {
|
||||||
log.debug("IllustId {} 缓存失效, 正在更新...", illustId);
|
log.debug("IllustId {} 缓存失效, 正在更新...", illustId);
|
||||||
JsonObject preLoadDataObj = pixivDownload.getIllustPreLoadDataById(illustId)
|
JsonObject preLoadDataObj = BotGlobal.getGlobal().getPixivDownload().getIllustPreLoadDataById(illustId)
|
||||||
.getAsJsonObject("illust")
|
.getAsJsonObject("illust")
|
||||||
.getAsJsonObject(Integer.toString(illustId));
|
.getAsJsonObject(Integer.toString(illustId));
|
||||||
|
|
||||||
@ -798,7 +797,7 @@ public class BotCommandProcess {
|
|||||||
if (!pagesCache.exists(pagesSign) || flushCache) {
|
if (!pagesCache.exists(pagesSign) || flushCache) {
|
||||||
synchronized (pagesSign) {
|
synchronized (pagesSign) {
|
||||||
if (!pagesCache.exists(pagesSign) || flushCache) {
|
if (!pagesCache.exists(pagesSign) || flushCache) {
|
||||||
List<String> linkList = PixivDownload.getIllustAllPageDownload(pixivDownload.getHttpClient(), pixivDownload.getCookieStore(), illustId, quality);
|
List<String> linkList = PixivDownload.getIllustAllPageDownload(BotGlobal.getGlobal().getPixivDownload().getHttpClient(), BotGlobal.getGlobal().getPixivDownload().getCookieStore(), illustId, quality);
|
||||||
result = linkList;
|
result = linkList;
|
||||||
pagesCache.update(pagesSign, linkList, null);
|
pagesCache.update(pagesSign, linkList, null);
|
||||||
}
|
}
|
||||||
@ -861,7 +860,7 @@ public class BotCommandProcess {
|
|||||||
synchronized(requestSign) {
|
synchronized(requestSign) {
|
||||||
if(!rankingCache.exists(requestSign) || flushCache) {
|
if(!rankingCache.exists(requestSign) || flushCache) {
|
||||||
log.debug("Ranking缓存失效, 正在更新...(RequestSign: {})", requestSign);
|
log.debug("Ranking缓存失效, 正在更新...(RequestSign: {})", requestSign);
|
||||||
List<JsonObject> rankingResult = pixivDownload.getRanking(contentType, mode, queryDate, 1, 500);
|
List<JsonObject> rankingResult = BotGlobal.getGlobal().getPixivDownload().getRanking(contentType, mode, queryDate, 1, 500);
|
||||||
long expireTime = 0;
|
long expireTime = 0;
|
||||||
if(rankingResult.size() == 0) {
|
if(rankingResult.size() == 0) {
|
||||||
expireTime = 5400000 + expireTimeFloatRandom.nextInt(1800000);
|
expireTime = 5400000 + expireTimeFloatRandom.nextInt(1800000);
|
||||||
|
@ -1,6 +1,9 @@
|
|||||||
package net.lamgc.cgj.bot.boot;
|
package net.lamgc.cgj.bot.boot;
|
||||||
|
|
||||||
import com.google.common.base.Strings;
|
import com.google.common.base.Strings;
|
||||||
|
import com.google.gson.Gson;
|
||||||
|
import com.google.gson.GsonBuilder;
|
||||||
|
import net.lamgc.cgj.pixiv.PixivDownload;
|
||||||
import org.apache.http.HttpHost;
|
import org.apache.http.HttpHost;
|
||||||
import org.apache.http.client.CookieStore;
|
import org.apache.http.client.CookieStore;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
@ -38,6 +41,12 @@ public final class BotGlobal {
|
|||||||
|
|
||||||
private CookieStore cookieStore;
|
private CookieStore cookieStore;
|
||||||
|
|
||||||
|
private final Gson gson = new GsonBuilder()
|
||||||
|
.serializeNulls()
|
||||||
|
.create();
|
||||||
|
|
||||||
|
private final PixivDownload pixivDownload;
|
||||||
|
|
||||||
private BotGlobal() {
|
private BotGlobal() {
|
||||||
this.redisUri = URI.create("redis://" + System.getProperty("cgj.redisAddress"));
|
this.redisUri = URI.create("redis://" + System.getProperty("cgj.redisAddress"));
|
||||||
this.redisServer = new JedisPool(
|
this.redisServer = new JedisPool(
|
||||||
@ -59,6 +68,9 @@ public final class BotGlobal {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
this.proxy = temp;
|
this.proxy = temp;
|
||||||
|
|
||||||
|
this.pixivDownload =
|
||||||
|
new PixivDownload(BotGlobal.getGlobal().getCookieStore(), BotGlobal.getGlobal().getProxy());
|
||||||
}
|
}
|
||||||
|
|
||||||
public URI getRedisUri() {
|
public URI getRedisUri() {
|
||||||
@ -88,4 +100,12 @@ public final class BotGlobal {
|
|||||||
public void setCookieStore(CookieStore cookieStore) {
|
public void setCookieStore(CookieStore cookieStore) {
|
||||||
this.cookieStore = cookieStore;
|
this.cookieStore = cookieStore;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Gson getGson() {
|
||||||
|
return gson;
|
||||||
|
}
|
||||||
|
|
||||||
|
public PixivDownload getPixivDownload() {
|
||||||
|
return pixivDownload;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user