feat:微博视频保存

This commit is contained in:
yanqs 2024-08-20 10:57:54 +08:00
parent e60b827baa
commit 2cbce1a574
5 changed files with 45 additions and 7 deletions

View File

@ -3,6 +3,8 @@
refresh=5
## 保存微博图片
saveWeiBoImages=true
## 保存微博视频
saveWeiBoVideo=true
## 上传图片到AList
uploadAList=false
## AList Url

View File

@ -23,6 +23,7 @@ public interface AppConstant {
*/
String RSS_CONFIG_PATH = System.getProperty("user.dir") + "/config/data.json";
String IMAGES_PATH = System.getProperty("user.dir") + "/images/";
String VIDEO_PATH = System.getProperty("user.dir") + "/video/";
String SET_SYSTEM = "system";
String SET_MAIL = "mail";
@ -36,6 +37,11 @@ public interface AppConstant {
*/
String SAVE_WEIBO_IMAGES = "saveWeiBoImages";
/**
* 保存微博视频
*/
String SAVE_WEIBO_VIDEO = "saveWeiBoVideo";
/**
* 上传图片到AList
*/

View File

@ -79,6 +79,19 @@ public class HtmlUtils {
}
}
public static HttpResponse getWeiBoVideoHttpRequest(String url) {
try {
HttpRequest request = HttpRequest.get(url)
.header(Header.REFERER, "https://weibo.com/")
.header(Header.USER_AGENT, USER_AGENT)
.timeout(20000);
return request.executeAsync();
} catch (Exception e) {
log.error("获取视频数据异常:", e);
return null;
}
}
/**
* 根据正则获取html中的内容

View File

@ -40,7 +40,9 @@ public class FileMonitor {
"## 配置订阅频率\n" +
"refresh = 5\n" +
"## 保存微博图片\n" +
"saveWeiBoImages=false\n" +
"saveWeiBoImages=false" +
"## 保存微博视频\n" +
"saveWeiBoVideo=true\n" +
"## 上传图片到AList\n" +
"uploadAList=false\n" +
"## AList Url\n" +

View File

@ -114,18 +114,16 @@ public class RssJob {
private void saveWeiBoImagesOrUpdateAList(List<RssEntity> list) {
Setting setting = new Setting(CONFIG_PATH, CharsetUtil.CHARSET_UTF_8, true);
Setting systemSetting = setting.getSetting(SET_SYSTEM);
Boolean saveImages = Boolean.valueOf(systemSetting.get(SAVE_WEIBO_IMAGES));
Boolean uploadAList = Boolean.valueOf(systemSetting.get(UPLOAD_ALIST));
boolean saveImages = Boolean.parseBoolean(systemSetting.get(SAVE_WEIBO_IMAGES));
boolean saveVideo = Boolean.valueOf(systemSetting.get(SAVE_WEIBO_VIDEO));
boolean uploadAList = Boolean.valueOf(systemSetting.get(UPLOAD_ALIST));
if (saveImages) {
// 保存图片
list.forEach(obj -> {
List<String> imgList = HtmlUtils.extractImageUrls(obj.getDescription());
imgList.forEach(imgObj -> {
if (imgObj.contains("sinaimg") && !imgObj.contains("timeline_card") && !imgObj.contains("qixi2018")) {
int lastSlashIndex = imgObj.lastIndexOf('/');
// 如果找到了斜杠就从斜杠后面截取字符串
String fileName = imgObj.substring(lastSlashIndex + 1);
//log.info("微博图片文件名:{}", fileName);
String fileName = HtmlUtils.getFileName(imgObj);
HttpResponse weiBoImagesHttpRequest = HtmlUtils.getWeiBoImagesHttpRequest(fileName);
byte[] bytes = weiBoImagesHttpRequest.bodyBytes();
FileUtil.writeBytes(bytes, new File(IMAGES_PATH + fileName));
@ -136,6 +134,23 @@ public class RssJob {
});
});
}
if(saveVideo){
// 保存视频
list.forEach(obj -> {
List<String> videoList = HtmlUtils.extractVideoUrls(obj.getDescription());
if(CollUtil.isNotEmpty(videoList)){
videoList.forEach(videoObj -> {
String fileName = HtmlUtils.getFileName(videoObj);
HttpResponse weiBoImagesHttpRequest = HtmlUtils.getWeiBoVideoHttpRequest(videoObj);
byte[] bytes = weiBoImagesHttpRequest.bodyBytes();
FileUtil.writeBytes(bytes, new File(VIDEO_PATH + fileName));
if (uploadAList) {
AListUtils.uploadFile(bytes, fileName);
}
});
}
});
}
}
}