Commit 758fdb39 by 朽木不可雕也

backup

parent 961a0cab
package com.zhiweidata.automatictest.barragecrawlerserver.config; package com.zhiweidata.automatictest.barragecrawlerserver.config;
import com.mongodb.client.MongoCollection;
import com.zhiweidata.automatictest.barragecrawlerserver.entity.BarrageCollectionTask;
import static com.zhiweidata.automatictest.publics.BeanContainer.MONGO_DATABASE;
/** /**
* 基本配置 * 基本配置
* *
...@@ -9,7 +14,6 @@ package com.zhiweidata.automatictest.barragecrawlerserver.config; ...@@ -9,7 +14,6 @@ package com.zhiweidata.automatictest.barragecrawlerserver.config;
*/ */
@SuppressWarnings("JavaDoc") @SuppressWarnings("JavaDoc")
public class BaseConfig { public class BaseConfig {
public static final String MONGO_LIVE_COLLECTION = "live_url";
/** /**
* 接口的基础url * 接口的基础url
*/ */
...@@ -30,4 +34,12 @@ public class BaseConfig { ...@@ -30,4 +34,12 @@ public class BaseConfig {
* 弹幕的excel导出服务器测试,最多延迟 X 天 * 弹幕的excel导出服务器测试,最多延迟 X 天
*/ */
public static final int EXPORT_START_MAX_DELAY = 7; public static final int EXPORT_START_MAX_DELAY = 7;
/**
* 模块名称
*/
public static final String MODULE_NAME = "barrage_crawler_server";
/**
* 测试采集任务的信息集合
*/
public static final MongoCollection<BarrageCollectionTask> MONGO_TASK_REQUEST_COLLECTION = MONGO_DATABASE.getCollection(MODULE_NAME + "_task_requests", BarrageCollectionTask.class);
} }
...@@ -47,8 +47,6 @@ public class BiliBiliCreateTaskJob extends CreateTaskJob { ...@@ -47,8 +47,6 @@ public class BiliBiliCreateTaskJob extends CreateTaskJob {
}); });
} catch (Exception e) { } catch (Exception e) {
log.error(e.getMessage(), e); log.error(e.getMessage(), e);
} finally {
super.finish();
} }
} }
} }
package com.zhiweidata.automatictest.barragecrawlerserver.createtasks; package com.zhiweidata.automatictest.barragecrawlerserver.createtasks;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.mongodb.client.MongoCollection;
import com.zhiweidata.automatictest.barragecrawlerserver.entity.BarrageCollectionTask; import com.zhiweidata.automatictest.barragecrawlerserver.entity.BarrageCollectionTask;
import com.zhiweidata.automatictest.barragecrawlerserver.exporttasks.BarrageExportTaskJob; import com.zhiweidata.automatictest.barragecrawlerserver.exporttasks.BarrageExportTaskJob;
import com.zhiweidata.automatictest.barragecrawlerserver.util.TimeUtil; import com.zhiweidata.automatictest.barragecrawlerserver.util.TimeUtil;
...@@ -15,7 +14,6 @@ import org.apache.http.HttpResponse; ...@@ -15,7 +14,6 @@ import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPost; import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ByteArrayEntity; import org.apache.http.entity.ByteArrayEntity;
import org.apache.http.entity.ContentType; import org.apache.http.entity.ContentType;
import org.bson.Document;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.quartz.Job; import org.quartz.Job;
import org.quartz.JobBuilder; import org.quartz.JobBuilder;
...@@ -26,12 +24,11 @@ import org.quartz.TriggerBuilder; ...@@ -26,12 +24,11 @@ import org.quartz.TriggerBuilder;
import static com.zhiweidata.automatictest.barragecrawlerserver.config.BaseConfig.BARRAGE_COLLECTION_TASK_JOB_KEY; import static com.zhiweidata.automatictest.barragecrawlerserver.config.BaseConfig.BARRAGE_COLLECTION_TASK_JOB_KEY;
import static com.zhiweidata.automatictest.barragecrawlerserver.config.BaseConfig.EXPORT_START_MAX_DELAY; import static com.zhiweidata.automatictest.barragecrawlerserver.config.BaseConfig.EXPORT_START_MAX_DELAY;
import static com.zhiweidata.automatictest.barragecrawlerserver.config.BaseConfig.MONGO_LIVE_COLLECTION; import static com.zhiweidata.automatictest.barragecrawlerserver.config.BaseConfig.MONGO_TASK_REQUEST_COLLECTION;
import static com.zhiweidata.automatictest.barragecrawlerserver.config.BaseConfig.TASK_URL; import static com.zhiweidata.automatictest.barragecrawlerserver.config.BaseConfig.TASK_URL;
import static com.zhiweidata.automatictest.publics.BeanContainer.HTTP_CLIENT; import static com.zhiweidata.automatictest.publics.BeanContainer.HTTP_CLIENT;
import static com.zhiweidata.automatictest.publics.BeanContainer.MONGO_DATABASE;
import static com.zhiweidata.automatictest.publics.BeanContainer.STANDARD_DATE_FORMAT;
import static com.zhiweidata.automatictest.publics.BeanContainer.SCHEDULER; import static com.zhiweidata.automatictest.publics.BeanContainer.SCHEDULER;
import static com.zhiweidata.automatictest.publics.BeanContainer.STANDARD_DATE_FORMAT;
/** /**
* @author aszswaz * @author aszswaz
...@@ -41,8 +38,6 @@ import static com.zhiweidata.automatictest.publics.BeanContainer.SCHEDULER; ...@@ -41,8 +38,6 @@ import static com.zhiweidata.automatictest.publics.BeanContainer.SCHEDULER;
@Slf4j @Slf4j
@SuppressWarnings({"JavaDoc"}) @SuppressWarnings({"JavaDoc"})
public abstract class CreateTaskJob implements Job { public abstract class CreateTaskJob implements Job {
private final List<Document> liveUrls = new ArrayList<>();
/** /**
* 请求弹幕采集服务器创建采集任务 * 请求弹幕采集服务器创建采集任务
*/ */
...@@ -61,25 +56,18 @@ public abstract class CreateTaskJob implements Job { ...@@ -61,25 +56,18 @@ public abstract class CreateTaskJob implements Job {
HttpResponse response = HTTP_CLIENT.execute(post); HttpResponse response = HTTP_CLIENT.execute(post);
Map<?, ?> jsonMap = objectMapper.readValue(response.getEntity().getContent(), Map.class); Map<?, ?> jsonMap = objectMapper.readValue(response.getEntity().getContent(), Map.class);
Document document = new Document("liveUrl", liveUrl); collectionTask.setCode((Integer) jsonMap.get("code"));
jsonMap.forEach((key, value) -> document.put((String) key, value)); collectionTask.setMessage((String) jsonMap.get("message"));
this.liveUrls.add(document); MONGO_TASK_REQUEST_COLLECTION.insertOne(collectionTask);
return collectionTask; return collectionTask;
} }
protected final void finish() {
if (!this.liveUrls.isEmpty()) {
MongoCollection<Document> liveUrls = MONGO_DATABASE.getCollection(MONGO_LIVE_COLLECTION);
liveUrls.insertMany(this.liveUrls);
}
}
/** /**
* 创建定时导出任务 * 创建定时导出任务
*/ */
protected final <T extends BarrageExportTaskJob> void createExportTask(BarrageCollectionTask collectionTask, Class<T> tClass) throws SchedulerException { protected final <T extends BarrageExportTaskJob> void createExportTask(@NotNull BarrageCollectionTask collectionTask, Class<T> tClass) throws SchedulerException {
JobBuilder jobBuilder = JobBuilder.newJob(tClass); JobBuilder jobBuilder = JobBuilder.newJob(tClass);
String name = tClass.getSimpleName(), group = "export"; String name = collectionTask.getName(), group = tClass.getSimpleName();
jobBuilder.withIdentity(name, group); jobBuilder.withIdentity(name, group);
jobBuilder.withDescription("弹幕导出,以及导出的excel文件的分析"); jobBuilder.withDescription("弹幕导出,以及导出的excel文件的分析");
JobDataMap dataMap = new JobDataMap(); JobDataMap dataMap = new JobDataMap();
......
...@@ -59,8 +59,6 @@ public class DouyuCreateTaskJob extends CreateTaskJob { ...@@ -59,8 +59,6 @@ public class DouyuCreateTaskJob extends CreateTaskJob {
}); });
} catch (Exception e) { } catch (Exception e) {
log.error(e.getMessage(), e); log.error(e.getMessage(), e);
} finally {
super.finish();
} }
} }
......
...@@ -2,7 +2,6 @@ package com.zhiweidata.automatictest.barragecrawlerserver.createtasks; ...@@ -2,7 +2,6 @@ package com.zhiweidata.automatictest.barragecrawlerserver.createtasks;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.mongodb.client.MongoCollection;
import com.zhiweidata.automatictest.barragecrawlerserver.entity.BarrageCollectionTask; import com.zhiweidata.automatictest.barragecrawlerserver.entity.BarrageCollectionTask;
import com.zhiweidata.automatictest.barragecrawlerserver.exception.BarrageHomePageException; import com.zhiweidata.automatictest.barragecrawlerserver.exception.BarrageHomePageException;
import com.zhiweidata.automatictest.barragecrawlerserver.exporttasks.HuyaExportTaskJob; import com.zhiweidata.automatictest.barragecrawlerserver.exporttasks.HuyaExportTaskJob;
...@@ -19,16 +18,13 @@ import org.apache.http.HttpStatus; ...@@ -19,16 +18,13 @@ import org.apache.http.HttpStatus;
import org.apache.http.StatusLine; import org.apache.http.StatusLine;
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.bson.Document;
import org.jsoup.nodes.Element; import org.jsoup.nodes.Element;
import org.quartz.DisallowConcurrentExecution; import org.quartz.DisallowConcurrentExecution;
import org.quartz.JobExecutionContext; import org.quartz.JobExecutionContext;
import org.seimicrawler.xpath.JXDocument; import org.seimicrawler.xpath.JXDocument;
import org.seimicrawler.xpath.JXNode; import org.seimicrawler.xpath.JXNode;
import static com.zhiweidata.automatictest.barragecrawlerserver.config.BaseConfig.MONGO_LIVE_COLLECTION;
import static com.zhiweidata.automatictest.publics.BeanContainer.HTTP_CLIENT; import static com.zhiweidata.automatictest.publics.BeanContainer.HTTP_CLIENT;
import static com.zhiweidata.automatictest.publics.BeanContainer.MONGO_DATABASE;
/** /**
* 从虎牙直播的首页获得直播间的地址,并发送到弹幕采集服务器进行测试 * 从虎牙直播的首页获得直播间的地址,并发送到弹幕采集服务器进行测试
...@@ -39,16 +35,12 @@ import static com.zhiweidata.automatictest.publics.BeanContainer.MONGO_DATABASE; ...@@ -39,16 +35,12 @@ import static com.zhiweidata.automatictest.publics.BeanContainer.MONGO_DATABASE;
*/ */
@Slf4j @Slf4j
@DisallowConcurrentExecution @DisallowConcurrentExecution
@SuppressWarnings({"JavaDoc", "unused", "SpellCheckingInspection", "GrazieInspection"}) @SuppressWarnings({"JavaDoc", "unused", "SpellCheckingInspection"})
public class HuyaCreateTaskJob extends CreateTaskJob { public class HuyaCreateTaskJob extends CreateTaskJob {
/** /**
* 幻灯片中,直播间的url匹配 * 幻灯片中,直播间的url匹配
*/ */
private static final Pattern LIVE_URL = Pattern.compile("var slides= \\[\\{[\\w\\W]+?}];"); private static final Pattern LIVE_URL = Pattern.compile("var slides= \\[\\{[\\w\\W]+?}];");
/**
* 直播间地址集合
*/
private final MongoCollection<Document> liveUrls = MONGO_DATABASE.getCollection(MONGO_LIVE_COLLECTION);
@Override @Override
public void execute(JobExecutionContext jobExecutionContext) { public void execute(JobExecutionContext jobExecutionContext) {
...@@ -64,8 +56,6 @@ public class HuyaCreateTaskJob extends CreateTaskJob { ...@@ -64,8 +56,6 @@ public class HuyaCreateTaskJob extends CreateTaskJob {
this.createTaskByHtml(EntityUtils.toString(response.getEntity())); this.createTaskByHtml(EntityUtils.toString(response.getEntity()));
} catch (Exception e) { } catch (Exception e) {
log.error(e.getMessage(), e); log.error(e.getMessage(), e);
} finally {
super.finish();
} }
} }
......
package com.zhiweidata.automatictest.barragecrawlerserver.entity; package com.zhiweidata.automatictest.barragecrawlerserver.entity;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.Calendar; import java.util.Calendar;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
...@@ -40,6 +41,16 @@ public class BarrageCollectionTask { ...@@ -40,6 +41,16 @@ public class BarrageCollectionTask {
*/ */
@JsonProperty(value = "endTime") @JsonProperty(value = "endTime")
private Integer endTime; private Integer endTime;
/**
* 服务器的响应代码
*/
@JsonIgnore
private int code;
/**
* 响应信息
*/
@JsonIgnore
private String message;
public BarrageCollectionTask(String liveUrl, String liveName, long currentTime) { public BarrageCollectionTask(String liveUrl, String liveName, long currentTime) {
this.url = liveUrl; this.url = liveUrl;
...@@ -47,10 +58,11 @@ public class BarrageCollectionTask { ...@@ -47,10 +58,11 @@ public class BarrageCollectionTask {
Calendar calendar = Calendar.getInstance(); Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(currentTime); calendar.setTimeInMillis(currentTime);
calendar.set(Calendar.MINUTE, 0); // calendar.set(Calendar.MINUTE, 0);
calendar.add(Calendar.MINUTE, 1);
calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0); calendar.set(Calendar.MILLISECOND, 0);
calendar.add(Calendar.HOUR_OF_DAY, 1); // calendar.add(Calendar.HOUR_OF_DAY, 1);
this.startTime = (int) (calendar.getTimeInMillis() / 1000); this.startTime = (int) (calendar.getTimeInMillis() / 1000);
int minute = (int) (Math.random() * (MAX_COLLECTION_TIME + 1)); int minute = (int) (Math.random() * (MAX_COLLECTION_TIME + 1));
......
...@@ -2,6 +2,7 @@ package com.zhiweidata.automatictest.barragecrawlerserver.exporttasks; ...@@ -2,6 +2,7 @@ package com.zhiweidata.automatictest.barragecrawlerserver.exporttasks;
import com.zhiweidata.automatictest.barragecrawlerserver.entity.BarrageCollectionTask; import com.zhiweidata.automatictest.barragecrawlerserver.entity.BarrageCollectionTask;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.quartz.JobDataMap;
import org.quartz.JobExecutionContext; import org.quartz.JobExecutionContext;
import static com.zhiweidata.automatictest.barragecrawlerserver.config.BaseConfig.BARRAGE_COLLECTION_TASK_JOB_KEY; import static com.zhiweidata.automatictest.barragecrawlerserver.config.BaseConfig.BARRAGE_COLLECTION_TASK_JOB_KEY;
...@@ -20,7 +21,8 @@ public class BiliBiliExportTaskJob implements BarrageExportTaskJob { ...@@ -20,7 +21,8 @@ public class BiliBiliExportTaskJob implements BarrageExportTaskJob {
@Override @Override
public void execute(JobExecutionContext context) { public void execute(JobExecutionContext context) {
try { try {
BarrageCollectionTask collectionTask = (BarrageCollectionTask) requireNonNull(context.get(BARRAGE_COLLECTION_TASK_JOB_KEY)); JobDataMap dataMap = requireNonNull(context.getMergedJobDataMap());
BarrageCollectionTask collectionTask = (BarrageCollectionTask) requireNonNull(dataMap.get(BARRAGE_COLLECTION_TASK_JOB_KEY));
} catch (Exception e) { } catch (Exception e) {
log.error(e.getMessage(), e); log.error(e.getMessage(), e);
} }
......
...@@ -2,6 +2,7 @@ package com.zhiweidata.automatictest.barragecrawlerserver.exporttasks; ...@@ -2,6 +2,7 @@ package com.zhiweidata.automatictest.barragecrawlerserver.exporttasks;
import com.zhiweidata.automatictest.barragecrawlerserver.entity.BarrageCollectionTask; import com.zhiweidata.automatictest.barragecrawlerserver.entity.BarrageCollectionTask;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.quartz.JobDataMap;
import org.quartz.JobExecutionContext; import org.quartz.JobExecutionContext;
import static com.zhiweidata.automatictest.barragecrawlerserver.config.BaseConfig.BARRAGE_COLLECTION_TASK_JOB_KEY; import static com.zhiweidata.automatictest.barragecrawlerserver.config.BaseConfig.BARRAGE_COLLECTION_TASK_JOB_KEY;
...@@ -20,7 +21,8 @@ public class DouyuExportTaskJob implements BarrageExportTaskJob { ...@@ -20,7 +21,8 @@ public class DouyuExportTaskJob implements BarrageExportTaskJob {
@Override @Override
public void execute(JobExecutionContext context) { public void execute(JobExecutionContext context) {
try { try {
BarrageCollectionTask collectionTask = (BarrageCollectionTask) requireNonNull(context.get(BARRAGE_COLLECTION_TASK_JOB_KEY)); JobDataMap dataMap = requireNonNull(context.getMergedJobDataMap());
BarrageCollectionTask collectionTask = (BarrageCollectionTask) requireNonNull(dataMap.get(BARRAGE_COLLECTION_TASK_JOB_KEY));
} catch (Exception e) { } catch (Exception e) {
log.error(e.getMessage(), e); log.error(e.getMessage(), e);
} }
......
...@@ -2,6 +2,7 @@ package com.zhiweidata.automatictest.barragecrawlerserver.exporttasks; ...@@ -2,6 +2,7 @@ package com.zhiweidata.automatictest.barragecrawlerserver.exporttasks;
import com.zhiweidata.automatictest.barragecrawlerserver.entity.BarrageCollectionTask; import com.zhiweidata.automatictest.barragecrawlerserver.entity.BarrageCollectionTask;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.quartz.JobDataMap;
import org.quartz.JobExecutionContext; import org.quartz.JobExecutionContext;
import static com.zhiweidata.automatictest.barragecrawlerserver.config.BaseConfig.BARRAGE_COLLECTION_TASK_JOB_KEY; import static com.zhiweidata.automatictest.barragecrawlerserver.config.BaseConfig.BARRAGE_COLLECTION_TASK_JOB_KEY;
...@@ -20,7 +21,8 @@ public class HuyaExportTaskJob implements BarrageExportTaskJob { ...@@ -20,7 +21,8 @@ public class HuyaExportTaskJob implements BarrageExportTaskJob {
@Override @Override
public void execute(JobExecutionContext context) { public void execute(JobExecutionContext context) {
try { try {
BarrageCollectionTask collectionTask = (BarrageCollectionTask) requireNonNull(context.get(BARRAGE_COLLECTION_TASK_JOB_KEY)); JobDataMap dataMap = requireNonNull(context.getMergedJobDataMap());
BarrageCollectionTask collectionTask = (BarrageCollectionTask) requireNonNull(dataMap.get(BARRAGE_COLLECTION_TASK_JOB_KEY));
} catch (Exception e) { } catch (Exception e) {
log.error(e.getMessage(), e); log.error(e.getMessage(), e);
} }
......
...@@ -9,10 +9,17 @@ import org.apache.http.client.HttpClient; ...@@ -9,10 +9,17 @@ import org.apache.http.client.HttpClient;
import org.apache.http.client.config.RequestConfig; import org.apache.http.client.config.RequestConfig;
import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.client.HttpClients; import org.apache.http.impl.client.HttpClients;
import org.bson.codecs.configuration.CodecProvider;
import org.bson.codecs.configuration.CodecRegistry;
import org.bson.codecs.pojo.PojoCodecProvider;
import org.quartz.Scheduler; import org.quartz.Scheduler;
import org.quartz.SchedulerException; import org.quartz.SchedulerException;
import org.quartz.impl.StdSchedulerFactory; import org.quartz.impl.StdSchedulerFactory;
import static com.mongodb.MongoClientSettings.getDefaultCodecRegistry;
import static org.bson.codecs.configuration.CodecRegistries.fromProviders;
import static org.bson.codecs.configuration.CodecRegistries.fromRegistries;
/** /**
* Bean容器 * Bean容器
* *
...@@ -66,6 +73,9 @@ public class BeanContainer { ...@@ -66,6 +73,9 @@ public class BeanContainer {
HTTP_CLIENT = clientBuilder.build(); HTTP_CLIENT = clientBuilder.build();
MONGO_CLIENT = MongoClients.create("mongodb://admin:z199809051593@192.168.0.119"); MONGO_CLIENT = MongoClients.create("mongodb://admin:z199809051593@192.168.0.119");
MONGO_DATABASE = MONGO_CLIENT.getDatabase("automatic_test"); // 启用 POJO 对象映射
CodecProvider pojoCodecProvider = PojoCodecProvider.builder().automatic(true).build();
CodecRegistry pojoCodecRegistry = fromRegistries(getDefaultCodecRegistry(), fromProviders(pojoCodecProvider));
MONGO_DATABASE = MONGO_CLIENT.getDatabase("automatic_test").withCodecRegistry(pojoCodecRegistry);
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment