1 Star 0 Fork 0

luckbin/source

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
test01 4.47 KB
一键复制 编辑 原始数据 按行查看 历史
luckbin 提交于 2023-01-15 22:02 +08:00 . add test01.
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());
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/luckbin/source.git
[email protected]:luckbin/source.git
luckbin
source
source
master

搜索帮助