代码拉取完成,页面将自动刷新
private static final String EXTM3U="#EXTM3U\n";
private static final String EXTINF="#EXTINF:-1";
private static StringBuilder sb;
/**
* 获取mu3源
* @return
*/
public static String getIptv(){
sb=new StringBuilder();
List<IptvInfo> fileJson = getFileJson();
sb.append(EXTM3U);
for (int i = 0; i < fileJson.size(); i++) {
sb.append(EXTINF);
sb.append(" tvg-id=\"#\"".replace("#", fileJson.get(i).getTvgId()));
sb.append(" tvg-name=\"#\"".replace("#", fileJson.get(i).getTvgName()));
//获取最低延迟的logo
List<String> logoUrls = fileJson.get(i).getLogoUrls();
for (int k = 0; k < logoUrls.size(); k++) {
if(isConnect(logoUrls.get(k))) {
sb.append(" tvg-logo=\"#\"".replace("#", logoUrls.get(k)));
break;
}
}
sb.append(" group-title=\"#\"".replace("#", fileJson.get(i).getGroupTitle()));
sb.append(",");
//获取最低延迟的m3u源
String validUrl="";
String definition="";
List<UrlInfo> urls=fileJson.get(i).getUrls();
for (int j = 0; j < urls.size(); j++) {
if(isConnect(urls.get(j).getUrl())) {
validUrl=urls.get(j).getUrl();
definition=urls.get(j).getDefinition();
break;
}
}
//根据url获取名字
sb.append(fileJson.get(i).getRemarks());
sb.append(definition);
sb.append("\n");
sb.append(validUrl);
sb.append("\n");
}
return sb.toString();
}
/**
* 将json文件转Bean
* @return
*/
private static List<IptvInfo> getFileJson() {
FileReader fileReader = new FileReader("classpath:iptv_source.json");
String jsonArr = fileReader.readString();
JSONArray array = JSONUtil.parseArray(jsonArr);
return JSONUtil.toList(array, IptvInfo.class);
}
/**
* 功能:检测当前URL是否可连接或是否有效,
* 描述:最多连接网络 3 次, 如果 3 次都不成功,视为该地址不可用
* @param urlStr 指定URL网络地址
* @return URL
*/
public static synchronized boolean isConnect(String urlStr) {
int counts = 0;
boolean retu = false;
if (urlStr == null || urlStr.length() <= 0) {
return false;
}
while (counts < 1) {
try {
HttpResponse res = HttpRequest.get(urlStr).execute();
if (200 == res.getStatus()) {
retu = true;
//Console.log("可用:{}--{}",res.getStatus(),urlStr);
}else {
retu = false;
Console.error("不可达:{}--{}",res.getStatus(),urlStr);
}
break;
}catch (Exception ex) {
counts++;
Console.error("连接第{}次,不可用:异常--{}",+counts,urlStr);
continue;
}
}
return retu;
}
public static String sendGet(String url, String param) {
String result = "";
BufferedReader in = null;
try {
String urlNameString = url + "?" + param;
URL realUrl = new URL(urlNameString);
// 打开和URL之间的连接
URLConnection connection = realUrl.openConnection();
// 设置通用的请求属性
connection.setRequestProperty("accept", "*/*");
connection.setRequestProperty("connection", "Keep-Alive");
connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
// 建立实际的连接
connection.connect();
// 获取所有响应头字段
Map<String, List<String>> map = connection.getHeaderFields();
// 遍历所有的响应头字段
for (String key : map.keySet()) {
System.out.println(key + "--->" + map.get(key));
}
// 定义 BufferedReader输入流来读取URL的响应
in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
result += line;
}
} catch (Exception e) {
System.out.println("发送GET请求出现异常!" + e);
e.printStackTrace();
}
// 使用finally块来关闭输入流
finally {
try {
if (in != null) {
in.close();
}
} catch (Exception e2) {
e2.printStackTrace();
}
}
return result;
}
public static void main(String[] args) {
System.out.println(sendGet("https://live.v1.mk/aishang/cctv4hd", null));
//System.out.println(getIptv());
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。