mirror of
https://github.com/LamGC/ContentGrabbingJi.git
synced 2025-07-03 13:57:26 +00:00
Compare commits
12 Commits
v2.5.2-202
...
v2.5.2-202
Author | SHA1 | Date | |
---|---|---|---|
04724168aa | |||
89ded96336 | |||
af0346e952 | |||
4ccf2fafbc | |||
f1e58d72ac | |||
9242a1d474 | |||
065d21c4e4 | |||
5eab94c429 | |||
2dd62bb6c8 | |||
21613fe3c0 | |||
ca56b2c9ba | |||
e0f773639f |
19
pom.xml
19
pom.xml
@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
<groupId>net.lamgc</groupId>
|
<groupId>net.lamgc</groupId>
|
||||||
<artifactId>ContentGrabbingJi</artifactId>
|
<artifactId>ContentGrabbingJi</artifactId>
|
||||||
<version>2.5.2-20200609.1-SNAPSHOT</version>
|
<version>2.5.2-20200610.2-SNAPSHOT</version>
|
||||||
|
|
||||||
<repositories>
|
<repositories>
|
||||||
<repository>
|
<repository>
|
||||||
@ -19,7 +19,7 @@
|
|||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
|
||||||
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
|
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
|
||||||
<mirai.CoreVersion>1.0-RC2-1</mirai.CoreVersion>
|
<mirai.CoreVersion>1.0.2</mirai.CoreVersion>
|
||||||
<mirai.JaptVersion>1.1.1</mirai.JaptVersion>
|
<mirai.JaptVersion>1.1.1</mirai.JaptVersion>
|
||||||
<kotlin.version>1.3.71</kotlin.version>
|
<kotlin.version>1.3.71</kotlin.version>
|
||||||
<ktor.version>1.3.2</ktor.version>
|
<ktor.version>1.3.2</ktor.version>
|
||||||
@ -110,21 +110,6 @@
|
|||||||
<artifactId>gson</artifactId>
|
<artifactId>gson</artifactId>
|
||||||
<version>2.8.5</version>
|
<version>2.8.5</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>net.sourceforge.htmlunit</groupId>
|
|
||||||
<artifactId>htmlunit</artifactId>
|
|
||||||
<version>2.29</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>com.github.rholder</groupId>
|
|
||||||
<artifactId>guava-retrying</artifactId>
|
|
||||||
<version>2.0.0</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>mysql</groupId>
|
|
||||||
<artifactId>mysql-connector-java</artifactId>
|
|
||||||
<version>8.0.19</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>net.lz1998</groupId>
|
<groupId>net.lz1998</groupId>
|
||||||
<artifactId>spring-cq</artifactId>
|
<artifactId>spring-cq</artifactId>
|
||||||
|
@ -19,12 +19,12 @@ import net.lamgc.plps.PixivLoginProxyServer;
|
|||||||
import net.lamgc.utils.base.runner.Argument;
|
import net.lamgc.utils.base.runner.Argument;
|
||||||
import net.lamgc.utils.base.runner.ArgumentsRunner;
|
import net.lamgc.utils.base.runner.ArgumentsRunner;
|
||||||
import net.lamgc.utils.base.runner.Command;
|
import net.lamgc.utils.base.runner.Command;
|
||||||
import org.apache.commons.io.IOUtils;
|
|
||||||
import org.apache.http.HttpHost;
|
import org.apache.http.HttpHost;
|
||||||
import org.apache.http.HttpResponse;
|
import org.apache.http.HttpResponse;
|
||||||
import org.apache.http.client.CookieStore;
|
import org.apache.http.client.CookieStore;
|
||||||
import org.apache.http.client.methods.HttpGet;
|
import org.apache.http.client.methods.HttpGet;
|
||||||
import org.apache.http.util.EntityUtils;
|
import org.apache.http.util.EntityUtils;
|
||||||
|
import org.apache.tomcat.util.http.fileupload.util.Streams;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.boot.SpringApplication;
|
import org.springframework.boot.SpringApplication;
|
||||||
@ -127,7 +127,7 @@ public class Main {
|
|||||||
ZipEntry entry = new ZipEntry(link.substring(link.lastIndexOf("/") + 1));
|
ZipEntry entry = new ZipEntry(link.substring(link.lastIndexOf("/") + 1));
|
||||||
log.info("正在写入: " + entry.getName());
|
log.info("正在写入: " + entry.getName());
|
||||||
zos.putNextEntry(entry);
|
zos.putNextEntry(entry);
|
||||||
IOUtils.copy(inputStream, zos);
|
Streams.copy(inputStream, zos, false);
|
||||||
zos.flush();
|
zos.flush();
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
log.error("写入文件项时发生异常", e);
|
log.error("写入文件项时发生异常", e);
|
||||||
@ -159,7 +159,7 @@ public class Main {
|
|||||||
ZipEntry entry = new ZipEntry(link.substring(link.lastIndexOf("/") + 1));
|
ZipEntry entry = new ZipEntry(link.substring(link.lastIndexOf("/") + 1));
|
||||||
log.info("正在写入: " + entry.getName());
|
log.info("正在写入: " + entry.getName());
|
||||||
zos.putNextEntry(entry);
|
zos.putNextEntry(entry);
|
||||||
IOUtils.copy(inputStream, zos);
|
Streams.copy(inputStream, zos, false);
|
||||||
zos.flush();
|
zos.flush();
|
||||||
log.info("已成功写入 {}", entry.getName());
|
log.info("已成功写入 {}", entry.getName());
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
@ -230,7 +230,7 @@ public class Main {
|
|||||||
entry.setComment(rankInfo.toString());
|
entry.setComment(rankInfo.toString());
|
||||||
log.info("正在写入: " + entry.getName());
|
log.info("正在写入: " + entry.getName());
|
||||||
zos.putNextEntry(entry);
|
zos.putNextEntry(entry);
|
||||||
IOUtils.copy(inputStream, zos);
|
Streams.copy(inputStream, zos, false);
|
||||||
zos.flush();
|
zos.flush();
|
||||||
log.info("已成功写入 {}", entry.getName());
|
log.info("已成功写入 {}", entry.getName());
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
|
@ -5,11 +5,11 @@ import net.lamgc.cgj.bot.cache.exception.HttpRequestException;
|
|||||||
import net.lamgc.cgj.pixiv.PixivURL;
|
import net.lamgc.cgj.pixiv.PixivURL;
|
||||||
import net.lamgc.cgj.util.URLs;
|
import net.lamgc.cgj.util.URLs;
|
||||||
import net.lamgc.utils.event.EventHandler;
|
import net.lamgc.utils.event.EventHandler;
|
||||||
import org.apache.commons.io.IOUtils;
|
|
||||||
import org.apache.http.HttpResponse;
|
import org.apache.http.HttpResponse;
|
||||||
import org.apache.http.client.HttpClient;
|
import org.apache.http.client.HttpClient;
|
||||||
import org.apache.http.client.methods.HttpGet;
|
import org.apache.http.client.methods.HttpGet;
|
||||||
import org.apache.http.impl.client.HttpClientBuilder;
|
import org.apache.http.impl.client.HttpClientBuilder;
|
||||||
|
import org.apache.tomcat.util.http.fileupload.util.Streams;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
@ -69,7 +69,7 @@ public class ImageCacheHandler implements EventHandler {
|
|||||||
log.debug("正在下载...(Content-Length: {}KB)", response.getEntity().getContentLength() / 1024);
|
log.debug("正在下载...(Content-Length: {}KB)", response.getEntity().getContentLength() / 1024);
|
||||||
ByteArrayOutputStream bufferOutputStream = new ByteArrayOutputStream();
|
ByteArrayOutputStream bufferOutputStream = new ByteArrayOutputStream();
|
||||||
try(FileOutputStream fileOutputStream = new FileOutputStream(storeFile)) {
|
try(FileOutputStream fileOutputStream = new FileOutputStream(storeFile)) {
|
||||||
IOUtils.copy(response.getEntity().getContent(), bufferOutputStream);
|
Streams.copy(response.getEntity().getContent(), bufferOutputStream, false);
|
||||||
ByteArrayInputStream bufferInputStream = new ByteArrayInputStream(bufferOutputStream.toByteArray());
|
ByteArrayInputStream bufferInputStream = new ByteArrayInputStream(bufferOutputStream.toByteArray());
|
||||||
CacheStoreCentral.ImageChecksum imageChecksum = CacheStoreCentral.ImageChecksum
|
CacheStoreCentral.ImageChecksum imageChecksum = CacheStoreCentral.ImageChecksum
|
||||||
.buildImageChecksumFromStream(
|
.buildImageChecksumFromStream(
|
||||||
@ -79,7 +79,7 @@ public class ImageCacheHandler implements EventHandler {
|
|||||||
bufferInputStream
|
bufferInputStream
|
||||||
);
|
);
|
||||||
bufferInputStream.reset();
|
bufferInputStream.reset();
|
||||||
IOUtils.copy(bufferInputStream, fileOutputStream);
|
Streams.copy(bufferInputStream, fileOutputStream, false);
|
||||||
CacheStoreCentral.setImageChecksum(imageChecksum);
|
CacheStoreCentral.setImageChecksum(imageChecksum);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
log.error("下载图片时发生异常", e);
|
log.error("下载图片时发生异常", e);
|
||||||
|
@ -64,14 +64,13 @@ public class BotEventHandler implements EventHandler {
|
|||||||
*/
|
*/
|
||||||
public synchronized static void initial() {
|
public synchronized static void initial() {
|
||||||
if(initialled) {
|
if(initialled) {
|
||||||
Logger logger = LoggerFactory.getLogger("BotEventHandler@<init>");
|
log.warn("BotEventHandler已经执行过初始化方法, 可能存在多次执行的问题, 堆栈信息: \n {}",
|
||||||
logger.warn("BotEventHandler已经执行过初始化方法, 可能存在多次执行的问题, 堆栈信息: \n {}",
|
|
||||||
Throwables.getStackTraceAsString(new Exception()));
|
Throwables.getStackTraceAsString(new Exception()));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
executor.setEventUncaughtExceptionHandler(new EventUncaughtExceptionHandler() {
|
executor.setEventUncaughtExceptionHandler(new EventUncaughtExceptionHandler() {
|
||||||
private final Logger log = LoggerFactory.getLogger("EventUncaughtExceptionHandler");
|
private final Logger log = LoggerFactory.getLogger(this.getClass());
|
||||||
@Override
|
@Override
|
||||||
public void exceptionHandler(Thread executeThread, EventHandler handler, Method handlerMethod, EventObject event, Throwable cause) {
|
public void exceptionHandler(Thread executeThread, EventHandler handler, Method handlerMethod, EventObject event, Throwable cause) {
|
||||||
log.error("发生未捕获异常:\nThread:{}, EventHandler: {}, HandlerMethod: {}, EventObject: {}\n{}",
|
log.error("发生未捕获异常:\nThread:{}, EventHandler: {}, HandlerMethod: {}, EventObject: {}\n{}",
|
||||||
@ -88,7 +87,7 @@ public class BotEventHandler implements EventHandler {
|
|||||||
shutdownThread.setName("Thread-EventHandlerShutdown");
|
shutdownThread.setName("Thread-EventHandlerShutdown");
|
||||||
Runtime.getRuntime().addShutdownHook(shutdownThread);
|
Runtime.getRuntime().addShutdownHook(shutdownThread);
|
||||||
} catch (IllegalAccessException e) {
|
} catch (IllegalAccessException e) {
|
||||||
LoggerFactory.getLogger("BotEventHandler@Static").error("添加Handler时发生异常", e);
|
log.error("添加Handler时发生异常", e);
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
@ -2,6 +2,8 @@ package net.lamgc.cgj.bot.framework.cli;
|
|||||||
|
|
||||||
import net.lamgc.cgj.bot.boot.ApplicationBoot;
|
import net.lamgc.cgj.bot.boot.ApplicationBoot;
|
||||||
import net.lamgc.cgj.bot.event.BotEventHandler;
|
import net.lamgc.cgj.bot.event.BotEventHandler;
|
||||||
|
import net.lamgc.cgj.bot.framework.cli.message.ConsoleMessageEvent;
|
||||||
|
import net.lamgc.cgj.bot.framework.cli.message.ConsoleMessageSenderFactory;
|
||||||
import net.lamgc.cgj.bot.message.MessageSenderBuilder;
|
import net.lamgc.cgj.bot.message.MessageSenderBuilder;
|
||||||
import org.jline.reader.LineReader;
|
import org.jline.reader.LineReader;
|
||||||
import org.jline.reader.LineReaderBuilder;
|
import org.jline.reader.LineReaderBuilder;
|
||||||
@ -17,15 +19,12 @@ public class ConsoleMain {
|
|||||||
private final static Logger log = LoggerFactory.getLogger(ConsoleMain.class);
|
private final static Logger log = LoggerFactory.getLogger(ConsoleMain.class);
|
||||||
|
|
||||||
public static void start() throws IOException {
|
public static void start() throws IOException {
|
||||||
ConsoleMessageSenderFactory senderFactory = new ConsoleMessageSenderFactory();
|
MessageSenderBuilder.setCurrentMessageSenderFactory(new ConsoleMessageSenderFactory());
|
||||||
MessageSenderBuilder.setCurrentMessageSenderFactory(senderFactory);
|
|
||||||
ApplicationBoot.initialBot();
|
ApplicationBoot.initialBot();
|
||||||
LineReader lineReader = LineReaderBuilder.builder()
|
LineReader lineReader = LineReaderBuilder.builder()
|
||||||
.appName("CGJ")
|
.appName("CGJ")
|
||||||
.history(new DefaultHistory())
|
.history(new DefaultHistory())
|
||||||
.terminal(TerminalBuilder.builder()
|
.terminal(TerminalBuilder.terminal())
|
||||||
.dumb(true)
|
|
||||||
.build())
|
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
long qqId = Long.parseLong(lineReader.readLine("会话QQ: "));
|
long qqId = Long.parseLong(lineReader.readLine("会话QQ: "));
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package net.lamgc.cgj.bot.framework.cli;
|
package net.lamgc.cgj.bot.framework.cli.message;
|
||||||
|
|
||||||
import net.lamgc.cgj.bot.event.MessageEvent;
|
import net.lamgc.cgj.bot.event.MessageEvent;
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
package net.lamgc.cgj.bot.framework.cli;
|
package net.lamgc.cgj.bot.framework.cli.message;
|
||||||
|
|
||||||
import net.lamgc.cgj.bot.message.MessageSender;
|
import net.lamgc.cgj.bot.message.MessageSender;
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
package net.lamgc.cgj.bot.framework.cli;
|
package net.lamgc.cgj.bot.framework.cli.message;
|
||||||
|
|
||||||
import net.lamgc.cgj.bot.message.MessageSender;
|
import net.lamgc.cgj.bot.message.MessageSender;
|
||||||
import net.lamgc.cgj.bot.message.MessageSenderFactory;
|
import net.lamgc.cgj.bot.message.MessageSenderFactory;
|
@ -4,20 +4,24 @@ import net.lamgc.cgj.bot.boot.ApplicationBoot;
|
|||||||
import net.lamgc.cgj.bot.boot.BotGlobal;
|
import net.lamgc.cgj.bot.boot.BotGlobal;
|
||||||
import net.lamgc.cgj.bot.event.BotEventHandler;
|
import net.lamgc.cgj.bot.event.BotEventHandler;
|
||||||
import net.lamgc.cgj.bot.framework.mirai.message.MiraiMessageEvent;
|
import net.lamgc.cgj.bot.framework.mirai.message.MiraiMessageEvent;
|
||||||
import net.lamgc.cgj.bot.message.MessageSenderBuilder;
|
|
||||||
import net.lamgc.cgj.bot.framework.mirai.message.MiraiMessageSenderFactory;
|
import net.lamgc.cgj.bot.framework.mirai.message.MiraiMessageSenderFactory;
|
||||||
|
import net.lamgc.cgj.bot.message.MessageSenderBuilder;
|
||||||
import net.mamoe.mirai.Bot;
|
import net.mamoe.mirai.Bot;
|
||||||
import net.mamoe.mirai.BotFactoryJvm;
|
import net.mamoe.mirai.BotFactoryJvm;
|
||||||
import net.mamoe.mirai.event.events.BotMuteEvent;
|
import net.mamoe.mirai.event.events.BotMuteEvent;
|
||||||
import net.mamoe.mirai.event.events.BotUnmuteEvent;
|
import net.mamoe.mirai.event.events.BotUnmuteEvent;
|
||||||
import net.mamoe.mirai.japt.Events;
|
import net.mamoe.mirai.japt.Events;
|
||||||
import net.mamoe.mirai.message.*;
|
import net.mamoe.mirai.message.FriendMessageEvent;
|
||||||
|
import net.mamoe.mirai.message.GroupMessageEvent;
|
||||||
|
import net.mamoe.mirai.message.MessageEvent;
|
||||||
|
import net.mamoe.mirai.message.TempMessageEvent;
|
||||||
import net.mamoe.mirai.utils.BotConfiguration;
|
import net.mamoe.mirai.utils.BotConfiguration;
|
||||||
import org.apache.commons.net.util.Base64;
|
import net.mamoe.mirai.utils.Utils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
|
import java.util.Base64;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
|
|
||||||
public class MiraiMain implements Closeable {
|
public class MiraiMain implements Closeable {
|
||||||
@ -45,9 +49,11 @@ public class MiraiMain implements Closeable {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Utils.setDefaultLogger(MiraiToSlf4jLoggerAdapter::new);
|
||||||
BotConfiguration configuration = new BotConfiguration();
|
BotConfiguration configuration = new BotConfiguration();
|
||||||
configuration.setProtocol(BotConfiguration.MiraiProtocol.ANDROID_PAD);
|
configuration.setProtocol(BotConfiguration.MiraiProtocol.ANDROID_PAD);
|
||||||
bot = BotFactoryJvm.newBot(Long.parseLong(botProperties.getProperty("bot.qq", "0")), Base64.decodeBase64(botProperties.getProperty("bot.password", "")), configuration);
|
bot = BotFactoryJvm.newBot(Long.parseLong(botProperties.getProperty("bot.qq", "0")),
|
||||||
|
Base64.getDecoder().decode(botProperties.getProperty("bot.password", "")), configuration);
|
||||||
Events.subscribeAlways(GroupMessageEvent.class, this::executeMessageEvent);
|
Events.subscribeAlways(GroupMessageEvent.class, this::executeMessageEvent);
|
||||||
Events.subscribeAlways(FriendMessageEvent.class, this::executeMessageEvent);
|
Events.subscribeAlways(FriendMessageEvent.class, this::executeMessageEvent);
|
||||||
Events.subscribeAlways(TempMessageEvent.class, this::executeMessageEvent);
|
Events.subscribeAlways(TempMessageEvent.class, this::executeMessageEvent);
|
||||||
|
@ -0,0 +1,89 @@
|
|||||||
|
package net.lamgc.cgj.bot.framework.mirai;
|
||||||
|
|
||||||
|
import net.mamoe.mirai.utils.MiraiLogger;
|
||||||
|
import net.mamoe.mirai.utils.MiraiLoggerPlatformBase;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.slf4j.Marker;
|
||||||
|
import org.slf4j.MarkerFactory;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* MiraiLoggerToSlf4jLogger适配器
|
||||||
|
* <p>该Logger通过Slf4j的Marker进行标识, loggerName为{@code mirai.[identity]}</p>
|
||||||
|
* <p>由于适配器适配方式的原因, 日志输出的调用信息将不可用(调用指向了适配器内的方法);</p>
|
||||||
|
*/
|
||||||
|
public class MiraiToSlf4jLoggerAdapter extends MiraiLoggerPlatformBase {
|
||||||
|
|
||||||
|
private final static Marker marker = MarkerFactory.getMarker("mirai");
|
||||||
|
|
||||||
|
private final Logger logger;
|
||||||
|
|
||||||
|
private final String identity;
|
||||||
|
|
||||||
|
public MiraiToSlf4jLoggerAdapter(String identity) {
|
||||||
|
this.identity = identity;
|
||||||
|
this.logger = LoggerFactory.getLogger("mirai." + identity);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void debug0(@Nullable String s) {
|
||||||
|
logger.debug(marker, s);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void debug0(@Nullable String s, @Nullable Throwable throwable) {
|
||||||
|
logger.debug(marker, s, throwable);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void error0(@Nullable String s) {
|
||||||
|
logger.error(marker, s);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void error0(@Nullable String s, @Nullable Throwable throwable) {
|
||||||
|
logger.error(marker, s, throwable);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void info0(@Nullable String s) {
|
||||||
|
logger.info(marker, s);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void info0(@Nullable String s, @Nullable Throwable throwable) {
|
||||||
|
logger.info(marker, s, throwable);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void verbose0(@Nullable String s) {
|
||||||
|
logger.trace(marker, s);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void verbose0(@Nullable String s, @Nullable Throwable throwable) {
|
||||||
|
logger.trace(marker, s, throwable);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void warning0(@Nullable String s) {
|
||||||
|
logger.warn(marker, s);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void warning0(@Nullable String s, @Nullable Throwable throwable) {
|
||||||
|
logger.warn(marker, s, throwable);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
@Override
|
||||||
|
public String getIdentity() {
|
||||||
|
if(identity == null) {
|
||||||
|
MiraiLogger followerLogger = getFollower();
|
||||||
|
return followerLogger == null ? null : followerLogger.getIdentity();
|
||||||
|
} else {
|
||||||
|
return identity;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -7,11 +7,11 @@ import com.squareup.gifencoder.GifEncoder;
|
|||||||
import com.squareup.gifencoder.Image;
|
import com.squareup.gifencoder.Image;
|
||||||
import com.squareup.gifencoder.ImageOptions;
|
import com.squareup.gifencoder.ImageOptions;
|
||||||
import io.netty.handler.codec.http.HttpHeaderNames;
|
import io.netty.handler.codec.http.HttpHeaderNames;
|
||||||
import org.apache.commons.io.IOUtils;
|
|
||||||
import org.apache.http.HttpResponse;
|
import org.apache.http.HttpResponse;
|
||||||
import org.apache.http.client.HttpClient;
|
import org.apache.http.client.HttpClient;
|
||||||
import org.apache.http.client.methods.HttpGet;
|
import org.apache.http.client.methods.HttpGet;
|
||||||
import org.apache.http.util.EntityUtils;
|
import org.apache.http.util.EntityUtils;
|
||||||
|
import org.apache.tomcat.util.http.fileupload.util.Streams;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
@ -126,7 +126,7 @@ public final class PixivUgoiraBuilder {
|
|||||||
HashMap<String, InputStream> frameMap = new HashMap<>(frames.size());
|
HashMap<String, InputStream> frameMap = new HashMap<>(frames.size());
|
||||||
while((entry = zipInputStream.getNextEntry()) != null) {
|
while((entry = zipInputStream.getNextEntry()) != null) {
|
||||||
log.trace("ZipEntry {} 正在接收...", entry);
|
log.trace("ZipEntry {} 正在接收...", entry);
|
||||||
IOUtils.copy(zipInputStream, cacheOutputStream);
|
Streams.copy(zipInputStream, cacheOutputStream, false);
|
||||||
frameMap.put(entry.getName(), new ByteArrayInputStream(cacheOutputStream.toByteArray()));
|
frameMap.put(entry.getName(), new ByteArrayInputStream(cacheOutputStream.toByteArray()));
|
||||||
log.trace("ZipEntry {} 已接收完成.", entry);
|
log.trace("ZipEntry {} 已接收完成.", entry);
|
||||||
cacheOutputStream.reset();
|
cacheOutputStream.reset();
|
||||||
|
@ -3,26 +3,39 @@
|
|||||||
<properties>
|
<properties>
|
||||||
<property name="logStorePath">./logs</property>
|
<property name="logStorePath">./logs</property>
|
||||||
<property name="charset">UTF-8</property>
|
<property name="charset">UTF-8</property>
|
||||||
<property name="pattern">[%-d{HH:mm:ss.SSS} %5level][%logger.%method():%-3L][%thread]: %msg%n</property>
|
<property name="standard_pattern">[%-d{HH:mm:ss.SSS} %5level][%logger.%method():%-3L][%thread]: %msg%n</property>
|
||||||
|
<property name="mirai_pattern">[%-d{HH:mm:ss.SSS} %5level][%logger]: %msg%n</property>
|
||||||
<property name="logsDir">${sys:cgj.logsPath:-logs}</property>
|
<property name="logsDir">${sys:cgj.logsPath:-logs}</property>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
<Appenders>
|
<Appenders>
|
||||||
<Console name="CONSOLE_STDOUT" target="SYSTEM_OUT">
|
<Console name="STANDARD_STDOUT" target="SYSTEM_OUT">
|
||||||
<PatternLayout pattern="${pattern}" charset="${charset}"/>
|
<PatternLayout charset="${charset}">
|
||||||
|
<MarkerPatternSelector defaultPattern="${standard_pattern}">
|
||||||
|
<PatternMatch key="mirai" pattern="${mirai_pattern}" />
|
||||||
|
</MarkerPatternSelector>
|
||||||
|
</PatternLayout>
|
||||||
<Filters>
|
<Filters>
|
||||||
<ThresholdFilter level="WARN" onMatch="DENY" onMismatch="ACCEPT"/>
|
<ThresholdFilter level="WARN" onMatch="DENY" onMismatch="ACCEPT"/>
|
||||||
</Filters>
|
</Filters>
|
||||||
</Console>
|
</Console>
|
||||||
<Console name="CONSOLE_STDERR" target="SYSTEM_ERR">
|
<Console name="STANDARD_STDERR" target="SYSTEM_ERR">
|
||||||
<PatternLayout pattern="${pattern}" charset="${charset}"/>
|
<PatternLayout charset="${charset}">
|
||||||
|
<MarkerPatternSelector defaultPattern="${standard_pattern}">
|
||||||
|
<PatternMatch key="mirai" pattern="${mirai_pattern}" />
|
||||||
|
</MarkerPatternSelector>
|
||||||
|
</PatternLayout>
|
||||||
<Filters>
|
<Filters>
|
||||||
<ThresholdFilter level="WARN" onMatch="ACCEPT" onMismatch="DENY"/>
|
<ThresholdFilter level="WARN" onMatch="ACCEPT" onMismatch="DENY"/>
|
||||||
</Filters>
|
</Filters>
|
||||||
</Console>
|
</Console>
|
||||||
|
|
||||||
<RollingFile name="rollingFile" fileName="${logsDir}/latest.log" filePattern="${logsDir}/running.%-d{yyyy-MM-dd_HH-mm-ss}.log.gz">
|
<RollingFile name="rollingFile" fileName="${logsDir}/latest.log" filePattern="${logsDir}/running.%-d{yyyy-MM-dd_HH-mm-ss}.log.gz">
|
||||||
<PatternLayout pattern="${pattern}" charset="${charset}"/>
|
<PatternLayout charset="${charset}">
|
||||||
|
<MarkerPatternSelector defaultPattern="${standard_pattern}">
|
||||||
|
<PatternMatch key="mirai" pattern="${mirai_pattern}" />
|
||||||
|
</MarkerPatternSelector>
|
||||||
|
</PatternLayout>
|
||||||
<Policies>
|
<Policies>
|
||||||
<OnStartupTriggeringPolicy />
|
<OnStartupTriggeringPolicy />
|
||||||
</Policies>
|
</Policies>
|
||||||
@ -32,8 +45,8 @@
|
|||||||
<Loggers>
|
<Loggers>
|
||||||
<Logger level="INFO" name="org.apache.http"/>
|
<Logger level="INFO" name="org.apache.http"/>
|
||||||
<Root level="TRACE">
|
<Root level="TRACE">
|
||||||
<AppenderRef ref="CONSOLE_STDOUT"/>
|
<AppenderRef ref="STANDARD_STDOUT"/>
|
||||||
<AppenderRef ref="CONSOLE_STDERR"/>
|
<AppenderRef ref="STANDARD_STDERR"/>
|
||||||
<AppenderRef ref="rollingFile"/>
|
<AppenderRef ref="rollingFile"/>
|
||||||
</Root>
|
</Root>
|
||||||
</Loggers>
|
</Loggers>
|
||||||
|
@ -1,29 +1,44 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<configuration status="WARN">
|
<configuration status="WARN">
|
||||||
|
<!--
|
||||||
|
测试版跟发布版在日志配置文件上的区别仅仅只有'Loggers'的不同, 'properties'和'Appenders'是一致的.
|
||||||
|
-->
|
||||||
<properties>
|
<properties>
|
||||||
<property name="logStorePath">./logs</property>
|
<property name="logStorePath">./logs</property>
|
||||||
<property name="charset">UTF-8</property>
|
<property name="charset">UTF-8</property>
|
||||||
<property name="pattern">[%-d{HH:mm:ss.SSS} %5level][%logger.%method():%-3L][%thread]: %msg%n</property>
|
<property name="standard_pattern">[%-d{HH:mm:ss.SSS} %5level][%logger.%method():%-3L][%thread]: %msg%n</property>
|
||||||
|
<property name="mirai_pattern">[%-d{HH:mm:ss.SSS} %5level][%logger]: %msg%n</property>
|
||||||
<property name="logsDir">${sys:cgj.logsPath:-logs}</property>
|
<property name="logsDir">${sys:cgj.logsPath:-logs}</property>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
<Appenders>
|
<Appenders>
|
||||||
<Console name="CONSOLE_STDOUT" target="SYSTEM_OUT">
|
<Console name="STANDARD_STDOUT" target="SYSTEM_OUT">
|
||||||
<PatternLayout pattern="${pattern}" charset="${charset}"/>
|
<PatternLayout charset="${charset}">
|
||||||
|
<MarkerPatternSelector defaultPattern="${standard_pattern}">
|
||||||
|
<PatternMatch key="mirai" pattern="${mirai_pattern}" />
|
||||||
|
</MarkerPatternSelector>
|
||||||
|
</PatternLayout>
|
||||||
<Filters>
|
<Filters>
|
||||||
<ThresholdFilter level="warn" onMatch="DENY" onMismatch="NEUTRAL"/>
|
<ThresholdFilter level="WARN" onMatch="DENY" onMismatch="ACCEPT"/>
|
||||||
<ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
|
|
||||||
</Filters>
|
</Filters>
|
||||||
</Console>
|
</Console>
|
||||||
<Console name="CONSOLE_STDERR" target="SYSTEM_ERR">
|
<Console name="STANDARD_STDERR" target="SYSTEM_ERR">
|
||||||
<PatternLayout pattern="${pattern}" charset="${charset}"/>
|
<PatternLayout charset="${charset}">
|
||||||
|
<MarkerPatternSelector defaultPattern="${standard_pattern}">
|
||||||
|
<PatternMatch key="mirai" pattern="${mirai_pattern}" />
|
||||||
|
</MarkerPatternSelector>
|
||||||
|
</PatternLayout>
|
||||||
<Filters>
|
<Filters>
|
||||||
<ThresholdFilter level="WARN" onMatch="ACCEPT" onMismatch="DENY"/>
|
<ThresholdFilter level="WARN" onMatch="ACCEPT" onMismatch="DENY"/>
|
||||||
</Filters>
|
</Filters>
|
||||||
</Console>
|
</Console>
|
||||||
|
|
||||||
<RollingFile name="rollingFile" fileName="${logsDir}/latest.log" filePattern="${logsDir}/running.%-d{yyyy-MM-dd_HH-mm-ss}.log.gz">
|
<RollingFile name="rollingFile" fileName="${logsDir}/latest.log" filePattern="${logsDir}/running.%-d{yyyy-MM-dd_HH-mm-ss}.log.gz">
|
||||||
<PatternLayout pattern="${pattern}" charset="${charset}"/>
|
<PatternLayout charset="${charset}">
|
||||||
|
<MarkerPatternSelector defaultPattern="${standard_pattern}">
|
||||||
|
<PatternMatch key="mirai" pattern="${mirai_pattern}" />
|
||||||
|
</MarkerPatternSelector>
|
||||||
|
</PatternLayout>
|
||||||
<Policies>
|
<Policies>
|
||||||
<OnStartupTriggeringPolicy />
|
<OnStartupTriggeringPolicy />
|
||||||
</Policies>
|
</Policies>
|
||||||
@ -31,10 +46,19 @@
|
|||||||
</Appenders>
|
</Appenders>
|
||||||
|
|
||||||
<Loggers>
|
<Loggers>
|
||||||
<Logger level="INFO" name="org.apache.http"/>
|
<Logger level="INFO" name="org.apache.http">
|
||||||
<Root level="INFO">
|
<AppenderRef ref="STANDARD_STDOUT"/>
|
||||||
<AppenderRef ref="CONSOLE_STDOUT"/>
|
<AppenderRef ref="STANDARD_STDERR"/>
|
||||||
<AppenderRef ref="CONSOLE_STDERR"/>
|
</Logger>
|
||||||
|
<Logger level="INFO" name="mirai">
|
||||||
|
<AppenderRef ref="STANDARD_STDOUT"/>
|
||||||
|
<AppenderRef ref="STANDARD_STDERR"/>
|
||||||
|
</Logger>
|
||||||
|
<Logger level="INFO" name="net.lamgc.cgj">
|
||||||
|
<AppenderRef ref="STANDARD_STDOUT"/>
|
||||||
|
<AppenderRef ref="STANDARD_STDERR"/>
|
||||||
|
</Logger>
|
||||||
|
<Root level="TRACE">
|
||||||
<AppenderRef ref="rollingFile"/>
|
<AppenderRef ref="rollingFile"/>
|
||||||
</Root>
|
</Root>
|
||||||
</Loggers>
|
</Loggers>
|
||||||
|
@ -2,7 +2,6 @@ package net.lamgc.cgj.pixiv;
|
|||||||
|
|
||||||
import com.google.gson.Gson;
|
import com.google.gson.Gson;
|
||||||
import com.google.gson.JsonObject;
|
import com.google.gson.JsonObject;
|
||||||
import org.apache.commons.io.IOUtils;
|
|
||||||
import org.apache.http.HttpHost;
|
import org.apache.http.HttpHost;
|
||||||
import org.apache.http.client.CookieStore;
|
import org.apache.http.client.CookieStore;
|
||||||
import org.apache.http.client.methods.CloseableHttpResponse;
|
import org.apache.http.client.methods.CloseableHttpResponse;
|
||||||
@ -10,6 +9,7 @@ import org.apache.http.client.methods.HttpGet;
|
|||||||
import org.apache.http.impl.client.CloseableHttpClient;
|
import org.apache.http.impl.client.CloseableHttpClient;
|
||||||
import org.apache.http.impl.client.HttpClientBuilder;
|
import org.apache.http.impl.client.HttpClientBuilder;
|
||||||
import org.apache.http.util.EntityUtils;
|
import org.apache.http.util.EntityUtils;
|
||||||
|
import org.apache.tomcat.util.http.fileupload.util.Streams;
|
||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
import org.junit.BeforeClass;
|
import org.junit.BeforeClass;
|
||||||
import org.junit.Ignore;
|
import org.junit.Ignore;
|
||||||
@ -64,7 +64,7 @@ public class PixivDownloadTest {
|
|||||||
ZipEntry entry = new ZipEntry(link.substring(link.lastIndexOf("/") + 1));
|
ZipEntry entry = new ZipEntry(link.substring(link.lastIndexOf("/") + 1));
|
||||||
log.info("正在写入: " + entry.getName());
|
log.info("正在写入: " + entry.getName());
|
||||||
zos.putNextEntry(entry);
|
zos.putNextEntry(entry);
|
||||||
IOUtils.copy(inputStream, zos);
|
Streams.copy(inputStream, zos, false);
|
||||||
zos.flush();
|
zos.flush();
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
log.error("写入文件项时发生异常", e);
|
log.error("写入文件项时发生异常", e);
|
||||||
@ -96,7 +96,7 @@ public class PixivDownloadTest {
|
|||||||
ZipEntry entry = new ZipEntry(link.substring(link.lastIndexOf("/") + 1));
|
ZipEntry entry = new ZipEntry(link.substring(link.lastIndexOf("/") + 1));
|
||||||
log.info("正在写入: " + entry.getName());
|
log.info("正在写入: " + entry.getName());
|
||||||
zos.putNextEntry(entry);
|
zos.putNextEntry(entry);
|
||||||
IOUtils.copy(inputStream, zos);
|
Streams.copy(inputStream, zos, false);
|
||||||
zos.flush();
|
zos.flush();
|
||||||
log.info("已成功写入 {}", entry.getName());
|
log.info("已成功写入 {}", entry.getName());
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
@ -139,7 +139,7 @@ public class PixivDownloadTest {
|
|||||||
entry.setComment(rankInfo.toString());
|
entry.setComment(rankInfo.toString());
|
||||||
log.info("正在写入: " + entry.getName());
|
log.info("正在写入: " + entry.getName());
|
||||||
zos.putNextEntry(entry);
|
zos.putNextEntry(entry);
|
||||||
IOUtils.copy(inputStream, zos);
|
Streams.copy(inputStream, zos, false);
|
||||||
zos.flush();
|
zos.flush();
|
||||||
log.info("已成功写入 {}", entry.getName());
|
log.info("已成功写入 {}", entry.getName());
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
|
Reference in New Issue
Block a user