获取视频文件的大小
This commit is contained in:
parent
edb308a495
commit
112110946d
@ -20,4 +20,6 @@ public class MadouVideoInfo {
|
||||
|
||||
private Boolean m3u8;
|
||||
|
||||
private Long size;
|
||||
|
||||
}
|
||||
|
||||
@ -134,7 +134,6 @@ public class MadouVideoService extends ServiceImpl<MadouVideoMapper, MadouVideoI
|
||||
}
|
||||
}
|
||||
|
||||
@PostConstruct
|
||||
public void download() throws IOException {
|
||||
QueryWrapper<MadouVideoInfo> wrapper = new QueryWrapper<>();
|
||||
wrapper.eq("m3u8", true);
|
||||
@ -176,4 +175,31 @@ public class MadouVideoService extends ServiceImpl<MadouVideoMapper, MadouVideoI
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@PostConstruct
|
||||
public void getVideoSize() {
|
||||
QueryWrapper<MadouVideoInfo> wrapper = new QueryWrapper<>();
|
||||
wrapper.isNull("size");
|
||||
List<MadouVideoInfo> madouVideoInfos = list(wrapper);
|
||||
for (MadouVideoInfo videoInfo : madouVideoInfos) {
|
||||
scheduledThreadPool.submit(() -> {
|
||||
try {
|
||||
String result = httpRequestComponent.get(videoInfo.getM3u8Url());
|
||||
List<String> tss = Arrays.stream(result.split("\n")).filter(t -> t.contains(".ts")).toList();
|
||||
long size = 0;
|
||||
for (int i = 0; i < tss.size(); i++) {
|
||||
String ts = tss.get(i);
|
||||
log.info("正在处理ts文件,已下载:{},共:{},当前进度:{}%", i, tss.size(), String.format("%.2f", (i * 100.0 / tss.size())));
|
||||
size += httpRequestComponent.getFileSize(videoInfo.getM3u8Url().replace("index.m3u8", ts));
|
||||
}
|
||||
videoInfo.setSize(size);
|
||||
updateById(videoInfo);
|
||||
} catch (IOException e) {
|
||||
log.error("处理失败,标题:{}, 失败原因:{}", videoInfo.getTitle(), e.getMessage(), e);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -110,4 +110,18 @@ public class HttpRequestComponent {
|
||||
Files.copy(entity.getContent(), path);
|
||||
}
|
||||
|
||||
public long getFileSize(String url) throws IOException {
|
||||
HttpGet httpGet = new HttpGet(url);
|
||||
httpGet.setConfig(requestConfig);
|
||||
CloseableHttpResponse response = closeableHttpClient.execute(httpGet);
|
||||
int statusCode = response.getStatusLine().getStatusCode();
|
||||
if (HttpStatus.SC_OK != statusCode) {
|
||||
log.error("文件下载失败,状态码:{}", statusCode);
|
||||
throw new RuntimeException("文件下载失败");
|
||||
}
|
||||
HttpEntity entity = response.getEntity();
|
||||
long contentLength = entity.getContentLength();
|
||||
response.close();
|
||||
return contentLength;
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user