Commit a986d607 by 朽木不可雕也

backup

parent 94af376c
package com.zhiweidata.automatictest.barragecrawlerserver.createtasks; package com.zhiweidata.automatictest.barragecrawlerserver.createtasks;
import org.apache.poi.ss.usermodel.CellRange;
import org.quartz.Job; import org.quartz.Job;
import org.quartz.JobExecutionContext; import org.quartz.JobExecutionContext;
...@@ -11,8 +12,13 @@ import org.quartz.JobExecutionContext; ...@@ -11,8 +12,13 @@ import org.quartz.JobExecutionContext;
* @ide IntelliJ IDEA * @ide IntelliJ IDEA
*/ */
@SuppressWarnings("JavaDoc") @SuppressWarnings("JavaDoc")
public class BiliBiliCreateTaskJob implements Job { public class BiliBiliCreateTaskJob extends CreateTaskJob {
@Override @Override
public void execute(JobExecutionContext jobExecutionContext) { public void execute(JobExecutionContext jobExecutionContext) {
} }
@Override
public String getLiveName(String liveUrl) {
return null;
}
} }
package com.zhiweidata.automatictest.barragecrawlerserver.createtasks;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.mongodb.client.MongoCollection;
import com.zhiweidata.automatictest.barragecrawlerserver.entity.BarrageCollectionTask;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import lombok.extern.slf4j.Slf4j;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ByteArrayEntity;
import org.apache.http.entity.ContentType;
import org.bson.Document;
import org.quartz.Job;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import static com.zhiweidata.automatictest.barragecrawlerserver.config.BaseConfig.MONGO_LIVE_COLLECTION;
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.MONGO_DATABASE;
import static com.zhiweidata.automatictest.publics.BeanContainer.STANDARD_DATE_FORMAT;
/**
* @author aszswaz
* @createTime 2021-08-24 18:02:35
* @ide IntelliJ IDEA
*/
@Slf4j
@SuppressWarnings({"JavaDoc", "GrazieInspection"})
public abstract class CreateTaskJob implements Job {
private final List<Document> liveUrls = new ArrayList<>();
/**
* 获取直播间名称
*/
protected abstract String getLiveName(String liveUrl) throws IOException;
/**
* 请求弹幕采集服务器创建采集任务
*/
protected final void createCollectionTask(String liveUrl) {
try {
BarrageCollectionTask collectionTask = new BarrageCollectionTask(liveUrl, this.getLiveName(liveUrl));
if (log.isDebugEnabled()) {
String startTime = STANDARD_DATE_FORMAT.format(collectionTask.getStartTime() * 1000L);
String endTime = STANDARD_DATE_FORMAT.format(collectionTask.getEndTime() * 1000L);
log.info("collection start time: {}, collection end time: {}", startTime, endTime);
}
HttpPost post = new HttpPost(TASK_URL);
ObjectMapper objectMapper = new ObjectMapper();
post.setEntity(new ByteArrayEntity(objectMapper.writeValueAsBytes(collectionTask), ContentType.APPLICATION_JSON));
HttpResponse response = HTTP_CLIENT.execute(post);
Map<?, ?> jsonMap = objectMapper.readValue(response.getEntity().getContent(), Map.class);
int code = (Integer) jsonMap.get("code");
Document document = new Document("liveUrl", liveUrl);
jsonMap.forEach((key, value) -> document.put((String) key, value));
this.liveUrls.add(document);
} catch (Exception e) {
log.error(e.getMessage(), e);
}
}
protected final void finish() {
MongoCollection<Document> liveUrls = MONGO_DATABASE.getCollection(MONGO_LIVE_COLLECTION);
liveUrls.insertMany(this.liveUrls);
}
}
...@@ -11,8 +11,13 @@ import org.quartz.JobExecutionContext; ...@@ -11,8 +11,13 @@ import org.quartz.JobExecutionContext;
* @ide IntelliJ IDEA * @ide IntelliJ IDEA
*/ */
@SuppressWarnings({"JavaDoc", "unused", "SpellCheckingInspection"}) @SuppressWarnings({"JavaDoc", "unused", "SpellCheckingInspection"})
public class DouyuCreateTaskJob implements Job { public class DouyuCreateTaskJob extends CreateTaskJob {
@Override @Override
public void execute(JobExecutionContext jobExecutionContext) { public void execute(JobExecutionContext jobExecutionContext) {
} }
@Override
public String getLiveName(String liveUrl) {
return null;
}
} }
...@@ -3,7 +3,6 @@ package com.zhiweidata.automatictest.barragecrawlerserver.createtasks; ...@@ -3,7 +3,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.mongodb.client.MongoCollection;
import com.zhiweidata.automatictest.barragecrawlerserver.entity.BarrageCollectionTask;
import com.zhiweidata.automatictest.barragecrawlerserver.exception.BarrageHomePageException; import com.zhiweidata.automatictest.barragecrawlerserver.exception.BarrageHomePageException;
import java.io.IOException; import java.io.IOException;
import java.util.HashSet; import java.util.HashSet;
...@@ -18,23 +17,17 @@ import org.apache.http.HttpResponse; ...@@ -18,23 +17,17 @@ import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus; 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.client.methods.HttpPost;
import org.apache.http.entity.ByteArrayEntity;
import org.apache.http.entity.ContentType;
import org.apache.http.util.EntityUtils; import org.apache.http.util.EntityUtils;
import org.bson.Document; import org.bson.Document;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jsoup.nodes.Element; import org.jsoup.nodes.Element;
import org.quartz.Job;
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.barragecrawlerserver.config.BaseConfig.MONGO_LIVE_COLLECTION;
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.MONGO_DATABASE;
import static com.zhiweidata.automatictest.publics.BeanContainer.STANDARD_DATE_FORMAT;
/** /**
* 从虎牙直播的首页获得直播间的地址,并发送到弹幕采集服务器进行测试 * 从虎牙直播的首页获得直播间的地址,并发送到弹幕采集服务器进行测试
...@@ -45,7 +38,7 @@ import static com.zhiweidata.automatictest.publics.BeanContainer.STANDARD_DATE_F ...@@ -45,7 +38,7 @@ import static com.zhiweidata.automatictest.publics.BeanContainer.STANDARD_DATE_F
*/ */
@Slf4j @Slf4j
@SuppressWarnings({"JavaDoc", "unused", "SpellCheckingInspection", "GrazieInspection"}) @SuppressWarnings({"JavaDoc", "unused", "SpellCheckingInspection", "GrazieInspection"})
public class HuyaCreateTaskJob implements Job { public class HuyaCreateTaskJob extends CreateTaskJob {
/** /**
* 幻灯片中,直播间的url匹配 * 幻灯片中,直播间的url匹配
*/ */
...@@ -106,36 +99,12 @@ public class HuyaCreateTaskJob implements Job { ...@@ -106,36 +99,12 @@ public class HuyaCreateTaskJob implements Job {
} else { } else {
log.warn("虎牙直播间地址数量:{}", size); log.warn("虎牙直播间地址数量:{}", size);
} }
liveUrls.forEach(this::createCollectionTask); liveUrls.forEach(super::createCollectionTask);
} super.finish();
/**
* 请求弹幕采集服务器创建采集任务
*/
private void createCollectionTask(String liveUrl) {
try {
BarrageCollectionTask collectionTask = new BarrageCollectionTask(liveUrl, this.getLiveName(liveUrl));
if (log.isDebugEnabled()) {
String startTime = STANDARD_DATE_FORMAT.format(collectionTask.getStartTime() * 1000L);
String endTime = STANDARD_DATE_FORMAT.format(collectionTask.getEndTime() * 1000L);
log.info("collection start time: {}, collection end time: {}", startTime, endTime);
}
HttpPost post = new HttpPost(TASK_URL);
ObjectMapper objectMapper = new ObjectMapper();
post.setEntity(new ByteArrayEntity(objectMapper.writeValueAsBytes(collectionTask), ContentType.APPLICATION_JSON));
HttpResponse response = HTTP_CLIENT.execute(post);
Map<?, ?> jsonMap = objectMapper.readValue(response.getEntity().getContent(), Map.class);
int code = (Integer) jsonMap.get("code");
Document document = new Document("liveUrl", liveUrl);
jsonMap.forEach((key, value) -> document.put((String) key, value));
this.liveUrls.insertOne(document);
} catch (Exception e) {
log.error(e.getMessage(), e);
}
} }
@NotNull @NotNull
private String getLiveName(String liveUrl) throws IOException { public String getLiveName(String liveUrl) throws IOException {
HttpResponse response = HTTP_CLIENT.execute(new HttpGet(liveUrl)); HttpResponse response = HTTP_CLIENT.execute(new HttpGet(liveUrl));
String html = EntityUtils.toString(response.getEntity()); String html = EntityUtils.toString(response.getEntity());
JXDocument document = JXDocument.create(html); JXDocument document = JXDocument.create(html);
......
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