package com.newvideo.controller.parser; import java.io.IOException; import java.io.PrintWriter; import java.util.ArrayList; import java.util.List; import java.util.Map; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import com.newvideo.vo.AcceptData; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.HttpException; import org.apache.commons.httpclient.methods.GetMethod; import org.springframework.stereotype.Controller; import com.newvideo.domain.DetailSystem; import com.newvideo.domain.HomeAd; import com.newvideo.domain.HomeType; import com.newvideo.domain.HomeVideo; import com.newvideo.domain.RecommendAd; import com.newvideo.domain.UserInfo; import com.newvideo.domain.VideoDetailInfo; import com.newvideo.domain.VideoInfo; import com.newvideo.domain.VideoType; import com.newvideo.domain.entity.PlayUrl; import com.newvideo.service.imp.AdService; import com.newvideo.service.imp.AttentionService; import com.newvideo.service.imp.ClassService; import com.newvideo.service.imp.CollectionService; import com.newvideo.service.imp.CommentService; import com.newvideo.service.imp.ConfigService; import com.newvideo.service.imp.HomeAdService; import com.newvideo.service.imp.HomeTypeService; import com.newvideo.service.imp.StatisticsService; import com.newvideo.service.imp.SystemService; import com.newvideo.service.imp.UserService; import com.newvideo.service.imp.VideoManager; import com.newvideo.util.CacheUtil; import com.newvideo.util.Constant; import com.newvideo.util.JsonUtil; import com.newvideo.util.JuheVideoUtil; import com.newvideo.util.StringUtil; import com.newvideo.util.TimeUtil; import com.newvideo.util.Utils; import com.newvideo.util.VideoPictureUtil; import com.newvideo.util.JuHe.VideoResouceUtil; import com.newvideo.util.video.VideoDetailUtil; import com.newvideo.util.zhibo.MeiNvZhiBoUtil; import net.sf.json.JSONArray; import net.sf.json.JSONObject; @Controller public class HomeParser { @Resource private SystemService systemService; @Resource private HomeAdService homeAdService; @Resource private HomeTypeService homeTypeService; @Resource private ConfigService configService; @Resource private AdService adService; @Resource private VideoDetailUtil videoDeailUtil; @Resource private StatisticsService statisticsService; @Resource private CommentService commentService; @Resource private CollectionService collectionService; @Resource private UserService userService; @Resource private VideoResouceUtil videoResouceUtil; @Resource private MeiNvZhiBoUtil meiNvZhiBoUtil; @Resource private AttentionService attentionService; @Resource private ClassService classService; @Resource private VideoManager videoManager; public void getHomeAd(String uid, HttpServletRequest request, PrintWriter out) { String method = request.getParameter("Method"); String system = request.getParameter("System"); String sign = request.getParameter("Sign"); String platform = request.getParameter("Platform"); String version = request.getParameter("Version"); String packageName = request.getParameter("Package"); if (StringUtil.isNullOrEmpty(method)) { out.print(JsonUtil.loadFalseJson("请上传Method")); return; } if (StringUtil.isNullOrEmpty(uid)) { out.print(JsonUtil.loadFalseJson("请上传Uid")); return; } if (StringUtil.isNullOrEmpty(system)) { out.print(JsonUtil.loadFalseJson("请上传System")); return; } if (StringUtil.isNullOrEmpty(sign)) { out.print(JsonUtil.loadFalseJson("请上传Sign")); return; } if (StringUtil.isNullOrEmpty(platform)) { out.print(JsonUtil.loadFalseJson("请上传Platform")); return; } JSONObject object = new JSONObject(); DetailSystem detailSystem = systemService.getDetailSystemByPackage(packageName); List list = homeAdService.getHomeAdList(detailSystem); if (platform.equalsIgnoreCase("ios"))// IOS测试 { if (Integer.parseInt(version) > 1)// 高版本 { for (HomeAd ad : list) { if (!StringUtil.isNullOrEmpty(ad.getParams())) { ad.setParams(ad.getParams().replace("\"", "\\" + "\"")); } } } else// 低版本 { for (int i = 0; i < list.size() && i > -1; i++) if (list.get(i).getLinkType() != 1) { list.remove(i); i--; } } object.put("count", (new StringBuilder(String.valueOf(list.size()))).toString()); JSONArray array = new JSONArray(); for (int i = 0; i < list.size(); i++) array.add(StringUtil.outPutResultJson(list.get(i))); object.put("data", array); } else { for (HomeAd ad : list) { if (ad.getVideo() != null) { ad.getVideo().setIntroduction(""); ad.getVideo().setMainActor(""); } if (!StringUtil.isNullOrEmpty(ad.getParams())) { ad.setParams(ad.getParams().replace("\"", "\\" + "\"")); } } object.put("count", (new StringBuilder(String.valueOf(list.size()))).toString()); JSONArray array = new JSONArray(); for (int i = 0; i < list.size(); i++) array.add(StringUtil.outPutResultJson(list.get(i))); object.put("data", array); } out.print(JsonUtil.loadTrueJson(object.toString())); } // 首页类型获取 public void getHomeType(String uid, HttpServletRequest request, PrintWriter out) { System.out.println("getHomeType开始请求"); String method = request.getParameter("Method"); String system = request.getParameter("System"); String sign = request.getParameter("Sign"); String platform = request.getParameter("Platform"); // 软件版本 String version = request.getParameter("Version"); String packageName = request.getParameter("Package"); if (StringUtil.isNullOrEmpty(method)) { out.print(JsonUtil.loadFalseJson("请上传Method")); return; } if (StringUtil.isNullOrEmpty(uid)) { out.print(JsonUtil.loadFalseJson("请上传Uid")); return; } if (StringUtil.isNullOrEmpty(system)) { out.print(JsonUtil.loadFalseJson("请上传System")); return; } if (StringUtil.isNullOrEmpty(sign)) { out.print(JsonUtil.loadFalseJson("请上传Sign")); return; } if (StringUtil.isNullOrEmpty(platform)) { out.print(JsonUtil.loadFalseJson("请上传Platform")); return; } DetailSystem detailSystem = systemService.getDetailSystemByPackage(packageName); JSONObject object = new JSONObject(); List resourceList = videoResouceUtil.getAvailableResourceIds(platform, Integer.parseInt(version)); List list1 = homeTypeService.getHomeType(detailSystem.getId(), resourceList, CacheUtil.getMD5Long(resourceList),-1); List list = new ArrayList(); for (HomeType ht : list1) list.add(ht); if (!"ios".equalsIgnoreCase(platform)) { Map confMap = configService.getConfigAsMap(); String mm = confMap.get("meinv_mm_count"); int count = Integer.parseInt(mm); if(count > 0 ){ try { HomeType zhibo = new HomeType(); zhibo.setId("1111"); zhibo.setName("美女"); zhibo.setHasMore(true); zhibo.setColumns(2); zhibo.setHomeVideoList(meiNvZhiBoUtil.getMeiNvZhiBo(MeiNvZhiBoUtil.MEINV_KK)); List zhiboVideo = new ArrayList(); for (HomeVideo v : zhibo.getHomeVideoList()) zhiboVideo.add(v.getVideo()); zhibo.setVideoList(zhiboVideo); if (zhibo.getHomeVideoList() != null && zhibo.getHomeVideoList().size() > 0) { int po = Integer.parseInt(confMap.get("zhibo_position"));// 直播数量 if (po < 0) po = 0; if (po > list.size()) po = list.size(); list.add(po, zhibo); } } catch (Exception e) { e.printStackTrace(); } } } if (platform.equalsIgnoreCase("ios")) { for (HomeType ht : list) { if (ht.getName().contains("福利")) { ht.setActivity("MoreAndMoreViewController"); } else { ht.setActivity("ClassDetailsViewController"); } } JSONArray array = new JSONArray(); for (int i = 0; i < list.size(); i++) array.add(StringUtil.outPutResultJson(list.get(i))); object.put("data", array); object.put("count", list.size() + ""); } object.put("count", (new StringBuilder(String.valueOf(list.size()))).toString()); JSONArray array = new JSONArray(); for (HomeType ht : list) { for (int i = 0; i < ht.getHomeVideoList().size(); i++) { if (JuheVideoUtil.isNeedDelete(ht.getHomeVideoList().get(i).getVideo(), detailSystem.getId())) { ht.getHomeVideoList().remove(i); i--; } } } // if ("ios".equalsIgnoreCase(platform)) {// ios屏蔽搜狐资源 // for (int i = 0; i < list.size(); i++) { // if (list.get(i).getHomeVideoList() != null) // for (int j = 0; j < list.get(i).getHomeVideoList().size(); j++) // if // (list.get(i).getHomeVideoList().get(j).getVideo().getPicture().contains("sohu")) // { // list.get(i).getHomeVideoList().remove(j); // j--; // } // } // } for (int i = 0; i < list.size(); i++) array.add(StringUtil.outPutResultJson(list.get(i))); object.put("data", array); out.print(JsonUtil.loadTrueJson(object.toString())); } public HomeType convertHomeVideoList(HomeType type) { List vlist = new ArrayList(); List list = type.getHomeVideoList(); if (list != null) for (HomeVideo hv : list) { vlist.add(hv.getVideo()); } type.setVideoList(vlist); return type; } public void getMoreVideo(String uid, HttpServletRequest request, PrintWriter out) { String method = request.getParameter("Method"); String type = request.getParameter("Type"); String system = request.getParameter("System"); String sign = request.getParameter("Sign"); String page = request.getParameter("Page"); String platform = request.getParameter("Platform"); String version = request.getParameter("Version"); String packageName = request.getParameter("Package"); if (StringUtil.isNullOrEmpty(method)) { out.print(JsonUtil.loadFalseJson("请上传Method")); return; } if (StringUtil.isNullOrEmpty(uid)) { out.print(JsonUtil.loadFalseJson("请上传Uid")); return; } if (StringUtil.isNullOrEmpty(system)) { out.print(JsonUtil.loadFalseJson("请上传System")); return; } if (StringUtil.isNullOrEmpty(sign)) { out.print(JsonUtil.loadFalseJson("请上传Sign")); return; } if (StringUtil.isNullOrEmpty(page)) { out.print(JsonUtil.loadFalseJson("请上传Page")); return; } if (StringUtil.isNullOrEmpty(platform)) { out.print(JsonUtil.loadFalseJson("请上传Platform")); return; } int pageIndex = 0; try { pageIndex = Integer.parseInt(page); } catch (Exception e) { out.print(JsonUtil.loadFalseJson("Page\u683C\u5F0F\u6709\u8BEF")); return; } DetailSystem detailSystem = systemService.getDetailSystemByPackage(packageName); UserInfo user = userService.getUserInfo(uid); if (Utils.isTest(request, user, detailSystem.getId())) detailSystem = systemService.getDetailSystemById(40 + ""); List homeVideoList = homeTypeService.getVideoByTypes(type, pageIndex, detailSystem); List list = new ArrayList(); for (int i = 0; i < homeVideoList.size(); i++) { HomeVideo hv = (HomeVideo) homeVideoList.get(i); if (detailSystem.getPackageName().contains("doudou")) { if (!StringUtil.isNullOrEmpty(hv.getPicture())) hv.getVideo().setPicture(hv.getPicture()); } list.add(hv.getVideo()); } JSONObject object = new JSONObject(); object.put("count", (new StringBuilder(String.valueOf(list.size()))).toString()); JSONArray array = new JSONArray(); for (int i = 0; i < list.size(); i++) array.add(StringUtil.outPutResultJson(list.get(i))); object.put("data", array); object.put("Column", 2); out.print(JsonUtil.loadTrueJson(object.toString())); } public void getAdList(String uid, HttpServletRequest request, PrintWriter out) { String method = request.getParameter("Method"); String system = request.getParameter("System"); String sign = request.getParameter("Sign"); String platform = request.getParameter("Platform"); String packageName = request.getParameter("Package"); if (StringUtil.isNullOrEmpty(method)) { out.print(JsonUtil.loadFalseJson("请上传Method")); return; } if (StringUtil.isNullOrEmpty(uid)) { out.print(JsonUtil.loadFalseJson("请上传Uid")); return; } if (StringUtil.isNullOrEmpty(system)) { out.print(JsonUtil.loadFalseJson("请上传System")); return; } if (StringUtil.isNullOrEmpty(sign)) { out.print(JsonUtil.loadFalseJson("请上传Sign")); return; } if (StringUtil.isNullOrEmpty(platform)) { out.print(JsonUtil.loadFalseJson("请上传Platform")); return; } DetailSystem detailSystem = systemService.getDetailSystemByPackage(packageName); List list = adService.getRecommendAdList(detailSystem.getId()); if (list == null) list = new ArrayList(); JSONObject object = new JSONObject(); JSONArray array = new JSONArray(); object.put("count", (new StringBuilder(String.valueOf(list.size()))).toString()); for (int i = 0; i < list.size(); i++) array.add(StringUtil.outPutResultJson(list.get(i))); object.put("data", array); out.print(JsonUtil.loadTrueJson(object.toString())); } public void getVideoDetail(String uid, HttpServletRequest request, PrintWriter out) { String method = request.getParameter("Method"); String system = request.getParameter("System"); String sign = request.getParameter("Sign"); String videoId = request.getParameter("VideoId"); String resourceId = request.getParameter("ResourceId"); String thirdType = request.getParameter("Type"); String platform = request.getParameter("Platform"); String version = request.getParameter("Version"); String packageName = request.getParameter("Package"); String loginUid = request.getParameter("LoginUid"); if (StringUtil.isNullOrEmpty(method)) { out.print(JsonUtil.loadFalseJson("请上传Method")); return; } if (StringUtil.isNullOrEmpty(uid)) { out.print(JsonUtil.loadFalseJson("请上传Uid")); return; } if (StringUtil.isNullOrEmpty(system)) { out.print(JsonUtil.loadFalseJson("请上传System")); return; } if (StringUtil.isNullOrEmpty(sign)) { out.print(JsonUtil.loadFalseJson("请上传Sign")); return; } if (StringUtil.isNullOrEmpty(videoId)) { out.print(JsonUtil.loadFalseJson("请上传VideoId")); return; } if (StringUtil.isNullOrEmpty(platform)) { out.print(JsonUtil.loadFalseJson("请上传Platform")); return; } if (StringUtil.isNullOrEmpty(thirdType)) { out.print(JsonUtil.loadFalseJson("请上传Type")); return; } List resourceList = videoResouceUtil.getAvailableResourceIds(platform, Integer.parseInt(version)); VideoInfo info = (videoDeailUtil.getVideoInfo(videoId, resourceId, resourceList, CacheUtil.getMD5Long(resourceList))); List typeList = classService.getVideoTypeList(info.getId()); if (typeList != null && typeList.size() > 0) { VideoType type = typeList.get(0); while (type.getParent() != null) type = type.getParent(); info.setVideoType(type); } info.setPlayPicture(VideoPictureUtil.getShowPicture(info, platform, version)); List videoDetailList = info.getVideoDetailList(); String introduction = info.getIntroduction(); if(videoDetailList.size() > 0 || !StringUtil.isNullOrEmpty(introduction)){ info.setvType(0); }else{ info.setvType(1); } for (VideoDetailInfo vd : info.getVideoDetailList()) { if (StringUtil.isNullOrEmpty(vd.getExtraId())) vd.setExtraId(vd.getId() + ""); } // info.setPicture(VideoPictureUtil.getShowPicture(info, platform, // version)); // 过滤版权视频关键字 DetailSystem detailSystem = systemService.getDetailSystemByPackage(packageName); // 统计添加 // statisticsService.addStatistics(detailSystem.getId(), videoId); JSONArray array = new JSONArray(); array.add("http://cloud.letv.com"); if ((platform.equalsIgnoreCase("android") && !StringUtil.isNullOrEmpty(version) && Integer.parseInt(version) > 12) || platform.equalsIgnoreCase("ios")) { for (String st : Constant.POJIE_LIST) array.add(st); } long count = commentService.getComment2ListCount(videoId, thirdType); if (info != null) info.setCommentCount((int) count); JSONObject obj = new JSONObject(); if (info.getVideoDetailList().size() > 1) {// 多集,可关注 boolean isAttention = false; if (!StringUtil.isNullOrEmpty(loginUid)) { isAttention = attentionService.isAddAttention(loginUid, info.getId()); } JSONObject attentionInfo = new JSONObject(); attentionInfo.put("Name", info.getName()); attentionInfo.put("Picture", info.getPicture()); attentionInfo.put("UpdateInfo", "更新:" + TimeUtil.getCommentTime(Long.parseLong(info.getUpdatetime()))); attentionInfo.put("IsAttention", isAttention); obj.put("Attention", attentionInfo); } UserInfo user = userService.getUserInfo(uid); if (Utils.isTest(request, user, detailSystem.getId())) out.print(JsonUtil.loadTrueJson("")); else out.print(JsonUtil.loadTrueJson(StringUtil.outPutResultJson(Utils.convertVideo(info)), array.toString(), obj.toString())); } public void getNewVideoDetail(String uid, HttpServletRequest request, PrintWriter out) { getVideoDetail(uid, request, out); } public void isCollected(String uid, HttpServletRequest request, PrintWriter out) { String method = request.getParameter("Method"); String system = request.getParameter("System"); String sign = request.getParameter("Sign"); String detailId = request.getParameter("Id"); String platform = request.getParameter("Platform"); String thirdType = request.getParameter("ThirdType"); if (StringUtil.isNullOrEmpty(method)) { out.print(JsonUtil.loadFalseJson("请上传Method")); return; } if (StringUtil.isNullOrEmpty(uid)) { out.print(JsonUtil.loadFalseJson("请上传Uid")); return; } if (StringUtil.isNullOrEmpty(system)) { out.print(JsonUtil.loadFalseJson("请上传System")); return; } if (StringUtil.isNullOrEmpty(sign)) { out.print(JsonUtil.loadFalseJson("请上传Sign")); return; } if (StringUtil.isNullOrEmpty(detailId)) { out.print(JsonUtil.loadFalseJson("请上传Id")); return; } if (StringUtil.isNullOrEmpty(platform)) { out.print(JsonUtil.loadFalseJson("请上传Platform")); return; } boolean collect = collectionService.isCollect(uid, detailId, thirdType); if (collect) out.print(JsonUtil.loadTrueJson("")); else out.print(JsonUtil.loadFalseJson("")); } public void getPlayUrl(String uid, HttpServletRequest request, PrintWriter out) { String method = request.getParameter("Method"); String system = request.getParameter("System"); String sign = request.getParameter("Sign"); String platform = request.getParameter("Platform"); String version = request.getParameter("Version"); String resourceId = request.getParameter("ResourceId"); String id = request.getParameter("Id"); String eid = request.getParameter("EId"); String type = request.getParameter("Type"); String packageName = request.getParameter("Package"); String videoId = request.getParameter("VideoId"); String channel= request.getParameter("Channel"); AcceptData acceptData=new AcceptData(); acceptData.setChannel(channel); acceptData.setMethod(method); acceptData.setPackage(packageName); acceptData.setPlatform(platform); acceptData.setSystem(system); acceptData.setVersion(Integer.parseInt(version)); if (StringUtil.isNullOrEmpty(method)) { out.print(JsonUtil.loadFalseJson("请上传Method")); return; } if (StringUtil.isNullOrEmpty(uid)) { out.print(JsonUtil.loadFalseJson("请上传Uid")); return; } if (StringUtil.isNullOrEmpty(system)) { out.print(JsonUtil.loadFalseJson("请上传System")); return; } if (StringUtil.isNullOrEmpty(sign)) { out.print(JsonUtil.loadFalseJson("请上传Sign")); return; } if (StringUtil.isNullOrEmpty(platform)) { out.print(JsonUtil.loadFalseJson("请上传Platform")); return; } if (StringUtil.isNullOrEmpty(id) && StringUtil.isNullOrEmpty(eid)) { out.print(JsonUtil.loadFalseJson("请上传id")); return; } if (StringUtil.isNullOrEmpty(type)) { out.print(JsonUtil.loadFalseJson("请上传type")); return; } if (StringUtil.isNullOrEmpty(id)) id = eid; DetailSystem detailSystem = systemService.getDetailSystemByPackage(packageName); PlayUrl pu = videoDeailUtil.getPlayUrl(acceptData,detailSystem.getId(), id, type, Integer.parseInt(resourceId), videoId); if (pu != null) { if (!StringUtil.isNullOrEmpty(pu.getUrl())) pu.setUrl(pu.getUrl()); // pu.getResource().setId(""); JSONObject object = JSONObject.fromObject(StringUtil.outPutResultJson(pu)); out.print(JsonUtil.loadTrueJson(object.toString())); } else { out.print(JsonUtil.loadFalseJson("找不到该视频")); } } public List getZhiBoVideoList() throws Exception { List list = new ArrayList(); String result = get("http://www.kktv1.com/CDN/output/M/3/I/10002002/P/start-0_offset-6_platform-2/json.js"); JSONObject object = JSONObject.fromObject(result); JSONArray array = object.optJSONArray("roomList"); for (int i = 0; i < array.size(); i++) { VideoInfo info = new VideoInfo(); JSONObject obj = array.optJSONObject(i); info.setId(obj.optString("roomId")); info.setName(obj.optString("nickname")); info.setTag("在线:" + obj.optString("onlineCount")); info.setPicture(obj.optString("poster_path_272")); HomeVideo hv = new HomeVideo(); hv.setPicture(info.getPicture()); hv.setVideo(info); list.add(hv); } return list; } public String get(String url) { HttpClient client = new HttpClient(); GetMethod method = new GetMethod(url); method.getParams().setContentCharset("UTF-8"); try { client.executeMethod(method); String responseBodyAsString = method.getResponseBodyAsString(); // LogUtil.i(responseBodyAsString); return responseBodyAsString; } catch (HttpException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return ""; } }