修复ip查询地址的处理

This commit is contained in:
chuzhongzai 2024-03-04 22:05:58 +08:00
parent c31b3ff5f0
commit 78747c60eb
5 changed files with 41 additions and 38 deletions

View File

@ -13,22 +13,22 @@ import java.util.Map;
@Data
public class Gallery {
@JsonProperty("name")
private String name; //本子名字
private String name; //图片名字
@JsonProperty("gid")
private int gid; //gid
@JsonProperty("link")
private String link; //本子链接
private String link; //图片链接
@JsonProperty("language")
private String language; //本子语言
private String language; //图片语言
@JsonProperty("pages")
private int pages; //本子页数
private int pages; //图片页数
@JsonProperty("status")
private String status; //本子当前状态
private String status; //图片当前状态
@JsonIgnore
private long fileSize; //文件大小

View File

@ -28,7 +28,7 @@ public class CollectService {
public String disCollectGallery(int gid, int collector){
Response response = Response.generateResponse();
if(collectMapper.isCollect(gid, collector) == 0) { //没有收藏
response.failure("没有收藏该本子");
response.failure("没有收藏该图片");
}else{
collectMapper.disCollect(gid, collector);
response.success("取消收藏成功");

View File

@ -92,7 +92,7 @@ public class GalleryManageService {
return response.toJSONString();
}
//尝试下载本子返回结果
//尝试下载图片返回结果
try {
gallery = GalleryUtil.parse(link, true, targetResolution);
if (gallery == null || !gallery.getStatus().equals("已提交")) {
@ -140,7 +140,7 @@ public class GalleryManageService {
}
/**
* 根据链接查询本子
* 根据链接查询图片
* @param link 链接
* @return 查询结果
*/
@ -176,7 +176,7 @@ public class GalleryManageService {
}
/**
* 通过gid查询本子
* 通过gid查询图片
*
* @param gid gid
* @return 查询结果
@ -186,7 +186,7 @@ public class GalleryManageService {
Gallery gallery = galleryMapper.selectGalleryByGid(gid);
if (gallery == null)
response.failure("未找到该本子,请使用链接");
response.failure("未找到该图片,请使用链接");
else
response.success(gallery.toString());
@ -195,7 +195,7 @@ public class GalleryManageService {
}
/**
* 查询所有本子
* 查询所有图片
*
* @return 查询结果
*/
@ -204,19 +204,19 @@ public class GalleryManageService {
Gallery[] galleries = galleryMapper.selectAllGallery();
if (galleries == null) {
response.failure("没有找到本子");
response.failure("没有找到图片");
return response.toJSONString();
}
ArrayList<Integer> galleryIds = collectMapper.selectGidByCollector(userId);
Iterator<Integer> idIterator;
if (!galleryIds.isEmpty()) //如果该用户收藏了本子
galleryLoop:for (Gallery gallery : galleries) { //遍历本子
if (!galleryIds.isEmpty()) //如果该用户收藏了图片
galleryLoop:for (Gallery gallery : galleries) { //遍历图片
idIterator = galleryIds.iterator();
while (idIterator.hasNext()) { //遍历收藏的gid
Integer id = idIterator.next();
if (id.equals(gallery.getGid())) { //如果找到对应的gid,修改对应本子的属性删除当前gid判断是否需要跳出或者结束循环
if (id.equals(gallery.getGid())) { //如果找到对应的gid,修改对应图片的属性删除当前gid判断是否需要跳出或者结束循环
gallery.setCollect(true);
idIterator.remove();
@ -233,7 +233,7 @@ public class GalleryManageService {
}
/**
* 通过本子名查询本子
* 通过图片名查询图片
*
* @param name 名字
* @return 查询结果
@ -245,13 +245,13 @@ public class GalleryManageService {
if (gallery != null)
response.success(new ObjectMapper().valueToTree(gallery).toString());
else
response.failure("没有找到该名字的本子");
response.failure("没有找到该名字的图片");
return response.toJSONString();
}
/**
* 查询用户下载的本子
* 查询用户下载的图片
*
* @param AuthCode 授权码用于查询用户名
* @return 查询结果
@ -263,13 +263,13 @@ public class GalleryManageService {
if (galleries.length > 0)
response.success(new ObjectMapper().valueToTree(galleries).toString());
else
response.failure("您未下载本子");
response.failure("您未下载图片");
return response.toJSONString();
}
/**
* 删除本子以及对应的文件如果存在的话
* 删除图片以及对应的文件如果存在的话
*
* @param gid gid
* @return 删除结果
@ -279,21 +279,21 @@ public class GalleryManageService {
Gallery gallery = galleryMapper.selectGalleryByGid(gid);
User user = userMapper.selectUserByAuthCode(AuthCode);
if (gallery == null) {
response.failure("删除失败,该本子不存在");
response.failure("删除失败,该图片不存在");
return response.toJSONString();
}
ArrayList<Integer> collector = collectMapper.selectCollectorByGid(gallery.getGid());
if (!(collector.isEmpty() || collector.size() == 1 && collector.getFirst().equals(user.getId()) //判断收藏
&& gallery.getDownloader() == user.getId())) //判断下载
response.failure("删除失败,该本子已被别人收藏或你不是下载人");
response.failure("删除失败,该图片已被别人收藏或你不是下载人");
else {
log.info("删除本子{}", gallery.getName());
galleryMapper.deleteGalleryByGid(gallery.getGid()); //删除本子记录
log.info("删除图片{}", gallery.getName());
galleryMapper.deleteGalleryByGid(gallery.getGid()); //删除图片记录
}
switch (remoteService.deleteGallery(gallery)) {
case ErrorCode.IO_ERROR -> response.failure("本子:" + gallery.getName() + "删除失败IO错误");
case ErrorCode.FILE_NOT_FOUND -> response.failure("本子:" + gallery.getName() + "删除失败,文件不存在");
case ErrorCode.IO_ERROR -> response.failure("图片:" + gallery.getName() + "删除失败IO错误");
case ErrorCode.FILE_NOT_FOUND -> response.failure("图片:" + gallery.getName() + "删除失败,文件不存在");
case 0 -> response.success();
}
if (response.get("result").equals("failure"))
@ -333,7 +333,7 @@ public class GalleryManageService {
gidToKey.setKey(url.split("/")[5].strip());
ArrayList<ImageKeyCache> imageKeyCaches = GalleryUtil.parseImageKeys(url);
if(imageKeyCaches == null)
return response.failure("本子已下架或已被删除").toJSONString();
return response.failure("图片已下架或已被删除").toJSONString();
gidToKey.setPages(imageKeyCaches.size());
imageCacheMapper.insertGidToKey(gidToKey);
for (ImageKeyCache imageKeyCache : imageKeyCaches)
@ -361,7 +361,7 @@ public class GalleryManageService {
}
}
//检查该本子缓存是否存在
//检查该图片缓存是否存在
GidToKey gidToKey = imageCacheMapper.selectKeyByGid(gid);
if(gidToKey == null)
try {
@ -428,12 +428,12 @@ public class GalleryManageService {
Gallery[] galleries = galleryMapper.selectUnDoneGalleries();
if(galleries != null && galleries.length != 0) {
log.info("发送未下载完成本子至节点,{}本", galleries.length);
log.info("发送未下载完成图片至节点,{}本", galleries.length);
for (Gallery gallery : galleries)
remoteService.addGalleryToQueue(gallery);
response.success(String.format("发送未下载完成本子至节点,%s本", galleries.length));
response.success(String.format("发送未下载完成图片至节点,%s本", galleries.length));
}else{
response.failure("当前没有未下载完成的本子");
response.failure("当前没有未下载完成的图片");
}
return response.toJSONString();

View File

@ -93,7 +93,10 @@ public class SubService {
try {
String page = GalleryUtil.requests("https://www.ip138.com/iplookup.php?ip=" + ip, "get", null, null);
Elements tds = Jsoup.parse(page).select("body > div > div.container > div.content > div > div:nth-child(2) > div.group-left > div > div.bd > div.table-outer > div.table-box > table > tbody > tr > td");
location = tds.get(1).text().replace("中国", "") + " " + tds.get(3).text().trim();
if(tds.size() > 3)
location = tds.get(1).text().replace("中国", "") + " " + tds.get(3).text().trim();
else
location = tds.get(1).text();
}catch (IOException e){
log.error("获取ip地址信息失败: {}", e.getMessage());
location = "unknown";

View File

@ -43,11 +43,11 @@ public class GalleryUtil {
/**
* 解析/下载本子
* @param url 本子链接
* 解析/下载图片
* @param url 图片链接
* @param isDownload 是否下载 否则仅解析
* @param targetResolution 目标下载分辨率 不下载时改值为空
* @return 解析/下载的本子对象
* @return 解析/下载的图片对象
* @throws IOException io问题
* @throws ResolutionNotMatchException 没有目标分辨率
*/
@ -58,18 +58,18 @@ public class GalleryUtil {
return null;
}
//初始化本子
//初始化图片
Gallery gallery = new Gallery();
gallery.setLink(url);
gallery.setCreateTime(System.currentTimeMillis()/1000);
gallery.setGid(Integer.parseInt(url.split("/")[4]));
gallery.setProceeding(0);
//访问本子页面
//访问图片页面
String galleryPage = requests(url, GET, null, null);
Document galleryDoc = Jsoup.parse(galleryPage);
//收集本子基本信息
//收集图片基本信息
gallery.setName(galleryDoc.select("#gn").text() + " [" + gallery.getGid() + ']');
gallery.setLanguage(galleryDoc.select("#gdd > table > tbody > tr:nth-child(4) > td.gdt2").text().replace("%nbps", ""));
gallery.setPages(Integer.parseInt(galleryDoc.select("#gdd > table > tbody > tr:nth-child(6) > td.gdt2").text().split(" ")[0]));