野子电竞数据官网改版https://www.xxe.io/全新登场
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Arrays;
import java.util.List;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
- @API: 14.篮球直播
- @Website: https://www.xxe.io/
*/
public class BasketballTextLive {
public static void main(String[] args) {
String content = getContent();
List<TextLive> lives = Arrays.stream(content.split("\\$"))
.flatMap((Function<String, Stream<String>>) s -> Arrays.stream(s.split("!")))
.map(TextLive::parseFrom)
.collect(Collectors.toList());
lives.forEach(System.out::println);
}
/**
* 获取API返回内容
*
* Note: 这里为了方便测试我使用了一份本地文件,使用时应替换为真实接口返回内容
*/
private static String getContent() {
try {
StringBuilder builder = new StringBuilder();
List<String> lines = Files.readAllLines(Paths.get("./src/main/resources/BasketballTextLive.xml"), StandardCharsets.UTF_8);
lines.forEach(line -> builder.append(line));
return builder.toString();
} catch (Throwable t) {
t.printStackTrace();
return "";
}
}
public static class TextLive {
private String remainTime;
private String flag;
private int homeScore;
private int awayScore;
private String text;
private String recordId;
private int matchStatus;
private String textNum;
public static TextLive parseFrom(String data) {
TextLive textLive = new TextLive();
textLive.pares(data);
return textLive;
}
private void pares(String data) {
String[] values = data.split("\\^");
remainTime = values[0];
flag = values[1];
homeScore = Integer.valueOf(values[2]);
awayScore = Integer.valueOf(values[3]);
text = values[4];
recordId = values[5];
matchStatus = Integer.valueOf(values[6]);
textNum = values[7];
}
@Override
public String toString() {
return "TextLive{" +
"remainTime='" + remainTime + '\'' +
", flag='" + flag + '\'' +
", homeScore=" + homeScore +
", awayScore=" + awayScore +
", text='" + text + '\'' +
", recordId='" + recordId + '\'' +
", matchStatus=" + matchStatus +
", textNum='" + textNum + '\'' +
'}';
}
}
}