@Autowired(required = false)
private
MovieService movieService;
@Autowired(required = false)
private
MovieEpisodeService movieEpisodeService;
/**
* [url=home.php
?
mod
=space&uid=952169]@Param[/url] @throws Exception
*/
public
void refreshTvFromTx() throws Exception {
Map<String,Object> movieMap=new HashMap<String,Object>();
movieMap.put(
"movieType"
,
"2"
);//电视剧
movieMap.put(
"source"
,source);//腾讯视频
movieMap.put(
"isOver"
,
"0"
);//未完成
List<Movie> movies = movieService
.list
(movieMap);
for
(Movie movie:movies){
getTvFromTx(TxUrl,movie);
}
}
/**
* 从腾讯获取电视剧
* @param TxUrl 电视剧ID
* @param movie
*/
public
int
getTvFromTx(String TxUrl,Movie movie){
int
count = 0;
HttpRequest httpRequest=new HttpRequest();
String webPageContent=httpRequest.getHTMLContentByHttpGetMethod(TxUrl.replaceAll(
"TVID"
,movie.getTvId()),
"UTF-8"
);
if
(
""
.equals(webPageContent)){
logger.info(
"腾讯电视剧网页获取失败!"
);
}
else
{
Movie currentMovie = new Movie();
Map<String,Object> movieMap=new HashMap<String,Object>();
movieMap.put(
"tvId"
,movie.getTvId());
if
(movieService.getTotal(movieMap)>0){//已经存在
currentMovie = movieService
.list
(movieMap).get(0);
}
else
{
currentMovie = movie;
currentMovie.setUuId(UUID.randomUUID().toString());
currentMovie.setClick(0);
currentMovie.setOrderNo(movieService.getMaxOrderNo());
currentMovie.setEnabled(
"1"
);
currentMovie.setMovieType(
"2"
);
currentMovie.setIsTop(
"0"
);
currentMovie.setIsOver(
"0"
);
count += movieService.
add
(currentMovie);//添加进电影主表
}
if
(currentMovie.getIsOver().equals(
"0"
)){//未更新完
Document document= Jsoup.
parse
(webPageContent);
Element titleTV = document.getElementsByClass(
"mod_figure_detail mod_figure_detail_en cf"
).get(0);//标题部分
currentMovie.setMoviePicPath(titleTV.getElementsByClass(
"figure_pic"
).get(0).attr(
"src"
));
currentMovie.setMovieName(titleTV.getElementsByAttributeValue(
"_stat"
,
"info:title"
).text());
currentMovie.setMovieScore(titleTV.getElementsByClass(
"score_v"
).get(0).getElementsByClass(
"score"
).text());
if
(titleTV.getElementsByClass(
"mark_pic"
).
size
() > 0){
currentMovie.setMovieTag(titleTV.getElementsByClass(
"mark_pic"
).get(0).attr(
"src"
));
}
currentMovie.setMovieDesc(titleTV.getElementsByClass(
"txt _desc_txt_lineHight"
).get(0).text());
currentMovie.setTvDesc(titleTV.getElementsByClass(
"txt _desc_txt_lineHight"
).get(0).text());
currentMovie.setEpisodeCount(Integer.parseInt(titleTV.getElementsMatchingOwnText(
"总集数:"
).get(0).nextElementSibling().text()));
//-----------------------每集内容---------------------------//
Element episodes = document.getElementsByClass(
"mod_episode"
).get(0);
Elements episode = episodes.getElementsByClass(
"item"
);
for
(
int
i = 0; i<episode.
size
();i++){
if
(episode.get(i).getElementsByClass(
"mark_v"
).
size
()==0){//没有vip标志,直接写进数据库
int
episodeNo = Integer.parseInt(episode.get(i).getElementsByTag(
"a"
).get(0).getElementsByTag(
"span"
).get(0).text());
Map<String,Object> movieEpisodeMap=new HashMap<String,Object>();
movieEpisodeMap.put(
"movieId"
,currentMovie.getUuId());
movieEpisodeMap.put(
"episodeNo"
,episodeNo);
if
(movieEpisodeService.getTotal(movieEpisodeMap)<1){
MovieEpisode movieEpisode =new MovieEpisode();
movieEpisode.setUuId(UUID.randomUUID().toString());
movieEpisode.setMovieId(currentMovie.getUuId());
movieEpisode.setEpisodeUrl(episode.get(i).getElementsByTag(
"a"
).get(0).attr(
"href"
));
movieEpisode.setEpisodeNo(episodeNo);
count += movieEpisodeService.
add
(movieEpisode);
if
(movieEpisode.getEpisodeNo()==1){//第一集放到主页
currentMovie.setMovieUrlPath(movieEpisode.getEpisodeUrl());
}
}
}
else
{
if
(episode.get(i).getElementsByClass(
"mark_v"
).get(0).getElementsByClass(
"mark_pic"
).get(0).attr(
"alt"
).contains(
"预"
)){
}
else
{
int
episodeNo = Integer.parseInt(episode.get(i).getElementsByTag(
"a"
).get(0).getElementsByTag(
"span"
).get(0).text());
Map<String,Object> movieEpisodeMap=new HashMap<String,Object>();
movieEpisodeMap.put(
"movieId"
,currentMovie.getUuId());
movieEpisodeMap.put(
"episodeNo"
,episodeNo);
if
(movieEpisodeService.getTotal(movieEpisodeMap)<1){
MovieEpisode movieEpisode =new MovieEpisode();
movieEpisode.setUuId(UUID.randomUUID().toString());
movieEpisode.setMovieId(currentMovie.getUuId());
movieEpisode.setEpisodeUrl(episode.get(i).getElementsByTag(
"a"
).get(0).attr(
"href"
));
movieEpisode.setEpisodeNo(episodeNo);
count += movieEpisodeService.
add
(movieEpisode);
if
(movieEpisode.getEpisodeNo()==1){//第一集放到主页
currentMovie.setMovieUrlPath(movieEpisode.getEpisodeUrl());
}
}
}
}
}
//-----------------------每集完毕之后更新主记录---------------------------//
Map<String,Object> map=new HashMap<String,Object>();
map.put(
"movieId"
,currentMovie.getUuId());
if
(currentMovie.getEpisodeCount().intValue()==movieEpisodeService.getMaxNo(map).intValue()){
currentMovie.setMovieTime(movieEpisodeService.getMaxNo(map)+
"集(全)"
);
currentMovie.setIsOver(
"1"
);
}
else
{
currentMovie.setMovieTime(movieEpisodeService.getMaxNo(map)+
"/"
+currentMovie.getEpisodeCount()+
"集(更新中)"
);
currentMovie.setIsOver(
"0"
);
}
movieService.updateByClass(currentMovie);
}
}
return count;
}