后端
·2023-04-23 项目 聚合搜索平台项目扩展
聚合搜索平台扩展增加 了视频搜索功能。具体代码是参照鱼皮的图片搜索功能进行修改的。
视频功能需要获取的几个参数:1.视频名,2.视频缩略图(方便前端展示)3. 视频原本地址
前端的话就是在页面上显示视频名和视频缩略图,在点击缩略图后则可以跳转到相应的视频网址上。
代码如下:
@Override
public Page<Video> doSearch(String searchText, long pageNum, long pageSize) {
long current=(pageNum-1) * pageSize;
String url=String.format("https://cn.bing.com/videos/search?q=%s&first=%s",searchText,current);
Document doc = null;
try {
doc = Jsoup.connect(url).get();
} catch (IOException e) {
throw new BusinessException(ErrorCode.SYSTEM_ERROR,"数据获取异常!");
}
Elements newsHeadlines = doc.select(".mc_vtvc.b_canvas.isv ");
List<Video> videos =new ArrayList<>();
for (Element element : newsHeadlines) {
// 取视频地址
String vUrl=element.select(".mc_vtvc.b_canvas.isv").select("a").attr("href");
String title=element.select(".rms_iac").attr("data-alt");
String imageUrl= element.select(".rms_iac").attr("data-src");
Video video=new Video();
video.setTitle(title);
video.setUrl(imageUrl);
video.setVUrl(vUrl);
videos.add(video);
// 检查视频URL是否可访问
if(isUrlAccessible(vUrl)){
video.setVUrl(vUrl);
videos.add(video);
if(videos.size()>=pageSize){
break;
}
}
}
Page<Video> videoPage=new Page<>(pageNum,pageSize);
videoPage.setRecords(videos);
return videoPage;
}
// 检查视频URL是否可访问
private boolean isUrlAccessible(String urlStr) {
try {
URL url = new URL(urlStr);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("HEAD");
int responseCode = connection.getResponseCode();
return (responseCode == HttpURLConnection.HTTP_OK);
} catch (Exception e) {
return false;
}
}
}
建议:看完皮哥第三期视频在来看本贴。图片搜索功能在第二期52分钟30秒的时候介绍的。
在前端展示图片的时候发现图片不能正常显示,但直接访问图片网址确实正常的,可以在前端展示图片的标签上增加referrerPolicy="no-referrer"属性就可以正常展示了。
同时像过滤掉404图片可以参展上述代码的过滤实现,这里就不详细描述了。
22
0
分享
操作
评论
问答助学
相关内容
0个评论
全部评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
