package com.yeshi.buwan.job.video;
|
|
import com.xxl.job.core.biz.model.ReturnT;
|
import com.xxl.job.core.handler.annotation.XxlJob;
|
import com.yeshi.buwan.mogotv.MogoTVApiUtil;
|
import com.yeshi.buwan.mogotv.entity.MogoTVClipInfo;
|
import com.yeshi.buwan.mogotv.entity.MogoTVVideo;
|
import com.yeshi.buwan.service.inter.juhe.MogoTVService;
|
import com.yeshi.buwan.util.StringUtil;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.stereotype.Component;
|
|
import javax.annotation.Resource;
|
import java.util.List;
|
|
@Component
|
public class MogoTVVideoUpdate {
|
|
private final static Logger logger = LoggerFactory.getLogger(MogoTVVideoUpdate.class);
|
|
@Resource
|
private MogoTVService mogoTVService;
|
|
|
private MogoTVClipInfo getClipDetail(MogoTVClipInfo clipInfo) {
|
MogoTVClipInfo detail = MogoTVApiUtil.getClipDetail(clipInfo);
|
List<MogoTVVideo> videoList = MogoTVApiUtil.getVideoList(clipInfo.getPlayPartId());
|
detail.setVideoList(videoList);
|
detail.setVideoCount(videoList.size());
|
return detail;
|
}
|
|
private void updateCategory(int channelId) {
|
int pageSize = 80;
|
MogoTVApiUtil.ListResultDTO dto = MogoTVApiUtil.getClipList(channelId, 1, 20);
|
if (dto != null) {
|
int totalPage = dto.getTotal() % pageSize == 0 ? dto.getTotal() / pageSize : dto.getTotal() / pageSize + 1;
|
for (int i = 0; i < totalPage; i++) {
|
dto = MogoTVApiUtil.getClipList(channelId, i + 1, pageSize);
|
for (MogoTVClipInfo clipInfo : (List<MogoTVClipInfo>) dto.getList()) {
|
System.out.println(clipInfo.getTitle() + ":" + clipInfo.getClipId());
|
try {
|
MogoTVClipInfo detail = getClipDetail(clipInfo);
|
mogoTVService.save(detail);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
}
|
}
|
}
|
|
private int getChannelId(String cate) throws Exception {
|
switch (cate) {
|
case "综艺":
|
return 1;
|
case "电影":
|
return 3;
|
case "电视剧":
|
return 2;
|
case "动漫":
|
return 50;
|
}
|
|
throw new Exception("类型不匹配");
|
|
}
|
|
/**
|
* 更新最近几天的视频
|
*
|
* @param param
|
* @return
|
* @throws Exception
|
*/
|
@XxlJob("video-update-mogotv-updateVideo")
|
public ReturnT<String> updateLatestVideo(String param) throws Exception {
|
String[] types = new String[]{
|
"电影", "电视剧", "动漫", "综艺"
|
};
|
|
if (!StringUtil.isNullOrEmpty(param)) {
|
updateCategory(getChannelId(param));
|
} else {
|
for (String type : types) {
|
updateCategory(getChannelId(type));
|
}
|
}
|
return ReturnT.SUCCESS;
|
}
|
|
|
/**
|
* 更新单个视频
|
*
|
* @param param
|
* @return
|
* @throws Exception
|
*/
|
@XxlJob("video-update-mogotv-updateSingleVideo")
|
public ReturnT<String> updateSingleVideo(String param) throws Exception {
|
String[] cids = param.split(",");
|
for (String cid : cids) {
|
MogoTVClipInfo clipInfo = mogoTVService.getSimpleClipDetail(cid);
|
if (clipInfo != null) {
|
MogoTVClipInfo info = getClipDetail(clipInfo);
|
mogoTVService.save(info);
|
}
|
}
|
return ReturnT.SUCCESS;
|
}
|
}
|