package com.yeshi.buwan.videos.bilibili;
|
|
import com.yeshi.buwan.domain.VideoDetailInfo;
|
import com.yeshi.buwan.domain.VideoInfo;
|
import com.yeshi.buwan.domain.VideoResource;
|
import com.yeshi.buwan.domain.entity.PlayUrl;
|
import com.yeshi.buwan.domain.video.InternetSearchVideo;
|
import com.yeshi.buwan.service.imp.VideoResourceService;
|
import com.yeshi.buwan.service.imp.VideoTypeService;
|
import com.yeshi.buwan.service.inter.juhe.BilibiliVideoService;
|
import com.yeshi.buwan.service.inter.juhe.InternetSearchVideoService;
|
import com.yeshi.buwan.util.factory.VideoInfoFactory;
|
import com.yeshi.buwan.util.video.VideoConstant;
|
import com.yeshi.buwan.videos.bilibili.entity.BilibiliEpInfo;
|
import com.yeshi.buwan.videos.bilibili.entity.BilibiliMediaInfo;
|
import com.yeshi.buwan.videos.bilibili.entity.BilibiliSearchVideoMap;
|
import com.yeshi.buwan.videos.bilibili.entity.BilibiliVideo;
|
import com.yeshi.buwan.youku.YouKuUtil;
|
import org.springframework.stereotype.Component;
|
|
import javax.annotation.Resource;
|
import java.util.ArrayList;
|
import java.util.Arrays;
|
import java.util.List;
|
|
@Component
|
public class BilibiliUtil {
|
|
|
@Resource
|
private InternetSearchVideoService internetSearchVideoService;
|
|
@Resource
|
private BilibiliVideoService bilibiliVideoService;
|
|
@Resource
|
private VideoResourceService videoResourceService;
|
|
@Resource
|
private VideoTypeService videoTypeService;
|
|
public final static int RESOURCE_ID = 17;
|
|
public static VideoDetailInfo convertToDetail(BilibiliEpInfo epInfo) {
|
VideoDetailInfo detail = new VideoDetailInfo();
|
detail.setTag(epInfo.getTitle());
|
detail.setName(epInfo.getTitle());
|
detail.setExtraId(epInfo.getId() + "");
|
detail.setType("ep");
|
return detail;
|
}
|
|
|
public static VideoDetailInfo convertToDetail(BilibiliVideo bilibiliVideo) {
|
VideoDetailInfo detail = new VideoDetailInfo();
|
detail.setTag(bilibiliVideo.getTitle());
|
detail.setName(bilibiliVideo.getTitle());
|
detail.setExtraId(bilibiliVideo.getAid() + "");
|
detail.setType("video");
|
return detail;
|
}
|
|
public VideoInfo getVideoInfo(InternetSearchVideo internetSearchVideo, Integer pageSize) throws Exception {
|
BilibiliSearchVideoMap map = bilibiliVideoService.selectMapByVideoId(internetSearchVideo.getId());
|
if (map == null) {
|
throw new Exception("视频源不存在");
|
}
|
|
//获取资源列表
|
List<String> rids = Arrays.asList(internetSearchVideo.getResourceIds().split(","));
|
List<VideoResource> resourceList = videoResourceService.getResource(rids);
|
for (VideoResource vr : resourceList) {
|
if (vr.getId().equalsIgnoreCase(RESOURCE_ID + ""))
|
vr.setChecked(true);
|
}
|
VideoInfo info = VideoInfoFactory.create(internetSearchVideo);
|
info.setResourceList(resourceList);
|
info.setShowType(YouKuUtil.getShowType(internetSearchVideo));
|
info.setPlayPicture(info.getHpicture());
|
//获取分类详情
|
info.setVideoType(videoTypeService.getVideoType(info.getVideoType().getId()));
|
info.setCommentCount(0);
|
info.setVideocount((int) (Math.random() * 1000));
|
|
|
if (map.getMediaId() != null) {
|
BilibiliMediaInfo showDetail = bilibiliVideoService.getSimpleMediaDetail(map.getMediaId());
|
showDetail.setEpList(bilibiliVideoService.getEPVideoList(showDetail.getMedia_id(), 1, pageSize));
|
info.setIntroduction(showDetail.getEvaluate());
|
info.setVideoDetailList(convertToDetail(showDetail.getEpList(), showDetail));
|
info.setScore(showDetail.getMediaRating().getScore());
|
} else {
|
BilibiliVideo video = bilibiliVideoService.selectVideoByPrimaryKey(Long.parseLong(map.getVid()));
|
List<VideoDetailInfo> detailList = new ArrayList<>();
|
detailList.add(convertToDetail(video));
|
info.setVideoDetailList(detailList);
|
info.setIntroduction(video.getDesc());
|
info.setScore("0.0");
|
}
|
|
|
return info;
|
}
|
|
|
public static List<VideoDetailInfo> convertToDetail(List<BilibiliEpInfo> epList, BilibiliMediaInfo coverInfo) {
|
List<VideoDetailInfo> detailList = new ArrayList<>();
|
for (BilibiliEpInfo video : epList) {
|
detailList.add(convertToDetail(video));
|
}
|
return detailList;
|
}
|
|
|
public static int getShowType(InternetSearchVideo video) {
|
if (video == null)
|
return 2;
|
|
switch (video.getRootType()) {
|
case VideoConstant
|
.VIDEO_CATEGORY_DIANYING:
|
return 1;
|
case VideoConstant
|
.VIDEO_CATEGORY_DIANSHIJU:
|
case VideoConstant
|
.VIDEO_CATEGORY_DONGMAN:
|
return 2;
|
case VideoConstant
|
.VIDEO_CATEGORY_ZONGYI:
|
return 1;
|
}
|
return 2;
|
}
|
|
|
public PlayUrl getPlayUrl(String detailSystemId, String id, String type, int resourceid, String videoid) {
|
PlayUrl playUrl = new PlayUrl();
|
VideoResource videoResource = videoResourceService.getResource(resourceid + "");
|
playUrl.setResource(videoResource);
|
playUrl.setPlayType(1);
|
playUrl.setParams("");
|
if ("ep".equalsIgnoreCase(type)) {
|
BilibiliEpInfo epInfo = bilibiliVideoService.selectEPInfoByPrimaryKey(Long.parseLong(id));
|
if (epInfo != null) {
|
playUrl.setUrl(epInfo.getLink());
|
}
|
} else {
|
BilibiliVideo bilibiliVideo = bilibiliVideoService.selectVideoByPrimaryKey(Long.parseLong(id));
|
playUrl.setUrl("https://www.bilibili.com/video/" + bilibiliVideo.getBvid());
|
}
|
|
return playUrl;
|
}
|
|
}
|