mirror of
https://github.com/LamGC/ContentGrabbingJi.git
synced 2025-07-03 05:47:26 +00:00
[Add] 初步添加成人内容检测器, 尚未使用;
This commit is contained in:
@ -0,0 +1,65 @@
|
||||
package net.lamgc.cgj.pixiv;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.JsonObject;
|
||||
import org.apache.http.HttpResponse;
|
||||
import org.apache.http.client.HttpClient;
|
||||
import org.apache.http.client.methods.HttpGet;
|
||||
import org.apache.http.impl.client.HttpClientBuilder;
|
||||
import org.apache.http.util.EntityUtils;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* 使用ModerateContent服务开发的检测器.<br/>
|
||||
* ModerateContent: www.moderatecontent.com
|
||||
*/
|
||||
public class ModerateContentDetector implements AdultContentDetector {
|
||||
|
||||
private final static HttpClient httpClient = HttpClientBuilder.create().build();
|
||||
private final static Gson gson = new Gson();
|
||||
private final String requestUrl;
|
||||
|
||||
private final static String API_URL = "https://www.moderatecontent.com/api/v2?key={key}&url=https://pixiv.cat/";
|
||||
|
||||
/**
|
||||
* 创建一个使用ModerateContent鉴黄服务的检测器
|
||||
* @param apiKey API密钥
|
||||
*/
|
||||
public ModerateContentDetector(String apiKey) {
|
||||
requestUrl = API_URL.replace("{key}", apiKey);
|
||||
}
|
||||
|
||||
private JsonObject accessInterface(int illustId, boolean isUgoira, int pageIndex) throws IOException {
|
||||
HttpResponse response;
|
||||
if(pageIndex <= 0) {
|
||||
response = httpClient.execute(new HttpGet(requestUrl + illustId + (isUgoira ? ".gif" : ".jpg")));
|
||||
} else {
|
||||
response = httpClient.execute(new HttpGet(requestUrl + illustId + "-" + pageIndex + (isUgoira ? ".gif" : ".jpg")));
|
||||
}
|
||||
if(response.getStatusLine().getStatusCode() != 200) {
|
||||
throw new IOException("Http response error: " + response.getStatusLine());
|
||||
}
|
||||
|
||||
JsonObject result = gson.fromJson(EntityUtils.toString(response.getEntity()), JsonObject.class);
|
||||
if (result.get("error_code").getAsInt() != 0) {
|
||||
throw new IOException("Interface result error: " + (result.has("error") ? result.get("error").getAsString() : "(error message is empty)"));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public double detect(int illustId, boolean isUgoira, int pageIndex) throws IOException {
|
||||
return accessInterface(illustId, isUgoira, pageIndex).getAsJsonObject("predictions").get("adult").getAsDouble();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAdultContent(int illustId, boolean isUgoira, int pageIndex) throws IOException {
|
||||
return accessInterface(illustId, isUgoira, pageIndex).get("rating_index").getAsInt() == 3;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAdultContent(int illustId, boolean isUgoira, int pageIndex, double threshold) throws IOException {
|
||||
return detect(illustId, isUgoira, pageIndex) >= threshold;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user