From 351b317c56487676b4f5a60b5bc3710a383d7a7b Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期五, 26 三月 2021 17:33:33 +0800
Subject: [PATCH] 全网搜腾讯完善

---
 src/main/java/com/yeshi/buwan/tencent/TencentVideoUtil.java |  261 +++++++++++++++++++++-------------------------------
 1 files changed, 106 insertions(+), 155 deletions(-)

diff --git a/src/main/java/com/yeshi/buwan/tencent/TencentVideoUtil.java b/src/main/java/com/yeshi/buwan/tencent/TencentVideoUtil.java
index 58afa37..295b8aa 100644
--- a/src/main/java/com/yeshi/buwan/tencent/TencentVideoUtil.java
+++ b/src/main/java/com/yeshi/buwan/tencent/TencentVideoUtil.java
@@ -1,186 +1,137 @@
 package com.yeshi.buwan.tencent;
 
-import com.google.gson.Gson;
-import com.google.gson.reflect.TypeToken;
+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.InternetSearchVideoService;
+import com.yeshi.buwan.service.inter.juhe.TencentVideoService;
 import com.yeshi.buwan.tencent.entity.TencentCoverInfo;
-import net.sf.json.JSONObject;
-import org.jsoup.Jsoup;
-import org.jsoup.nodes.Document;
-import org.jsoup.nodes.Element;
-import org.jsoup.select.Elements;
-import org.yeshi.utils.HttpUtil;
+import com.yeshi.buwan.tencent.entity.TencentCoverVideo;
+import com.yeshi.buwan.tencent.entity.TencentSearchVideoMap;
+import com.yeshi.buwan.util.factory.VideoInfoFactory;
+import com.yeshi.buwan.util.video.VideoConstant;
+import com.yeshi.buwan.youku.YouKuUtil;
+import org.springframework.stereotype.Component;
 
-import javax.script.Invocable;
-import javax.script.ScriptEngine;
-import javax.script.ScriptEngineManager;
-import javax.script.ScriptException;
-import java.io.IOException;
-import java.lang.reflect.Type;
-import java.util.*;
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
 
+@Component
 public class TencentVideoUtil {
 
-    static ScriptEngine jsEngine = null;
 
-//    static {
-//        if (jdGoodsJs == null)
-//            jdGoodsJs = getJDGoodsJS();
-//        ScriptEngineManager manager = new ScriptEngineManager();
-//        jsEngine = manager.getEngineByName("javascript");
-//        try {
-//            jsEngine.eval(jdGoodsJs);
-//        } catch (ScriptException e) {
-//            e.printStackTrace();
-//        }
-//
-//        if (jsEngine instanceof Invocable) {
-//            Invocable in = (Invocable) jsEngine;
-//            Object goodsId = in.invokeFunction("getGoodsId", link);
-//            if (goodsId != null)
-//                return goodsId.toString().trim();
-//        }
-//
-//    }
+    @Resource
+    private InternetSearchVideoService internetSearchVideoService;
 
+    @Resource
+    private TencentVideoService tencentVideoService;
 
-    private static List<String> objToArray(JSONObject root, String key) {
+    @Resource
+    private VideoResourceService videoResourceService;
 
-        if (root.optJSONObject(key) == null) {
-            return null;
-        }
+    @Resource
+    private VideoTypeService videoTypeService;
 
-        Gson gson = new Gson();
+    public final static int RESOURCE_ID = 17;
 
-        List<String> directors = new ArrayList<>();
-        if (root.optJSONObject(key).isArray()) {
-            Type type = new TypeToken<List<String>>() {
-            }.getType();
-            directors = gson.fromJson(root.optJSONArray(key).toString(), type);
-        } else {
-            JSONObject director = root.optJSONObject(key);
-            for (Iterator<String> its = director.keys(); its.hasNext(); ) {
-                String p = its.next();
-                directors.add(director.optString(p));
-            }
-        }
-
-        root.remove(key);
-        return directors;
-    }
-
-    public static TencentCoverInfo getCoverInfo(String url) throws Exception {
-        String script = null;
-        Document doc = Jsoup.connect(url).timeout(10000).userAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36").get();
-        Elements els = doc.getElementsByTag("script");
-        for (int i = 0; i < els.size(); i++) {
-            if (els.get(i).html().indexOf("var COVER_INFO") > -1) {
-                script = els.get(i).html();
+    public static VideoDetailInfo convertToDetail(TencentCoverVideo tencentCoverVideo, TencentCoverInfo coverInfo) {
+        VideoDetailInfo detail = new VideoDetailInfo();
+        switch (coverInfo.getType_name()) {
+            case "鐢靛奖":
+                detail.setTag(coverInfo.getTitle());
                 break;
-            }
+            case "鐢佃鍓�":
+            case "鍔ㄦ极":
+                detail.setTag(tencentCoverVideo.getStage() + "");
+                break;
+            case "缁艰壓":
+                detail.setTag(tencentCoverVideo.getDate());
+                break;
+        }
+        detail.setName(coverInfo.getTitle());
+        detail.setExtraId(tencentCoverVideo.getVideoId());
+        detail.setType("url");
+        return detail;
+    }
+
+    public VideoInfo getVideoInfo(InternetSearchVideo internetSearchVideo) throws Exception {
+        TencentSearchVideoMap map = tencentVideoService.selectMapByVideoId(internetSearchVideo.getId());
+        if (map == null) {
+            throw new Exception("瑙嗛婧愪笉瀛樺湪");
         }
 
-        script = script.replace("window.", "_window.");
-        script = " var _window={};" + "var document={getElementsByTagName:function(tag){return [''];}};" + script;
-        script += "\n function getCoverInfo(){return COVER_INFO }; function getVideoInfo(){return VIDEO_INFO}";
-
-        ScriptEngineManager manager = new ScriptEngineManager();
-        jsEngine = manager.getEngineByName("javascript");
-        try {
-            jsEngine.eval(script);
-        } catch (ScriptException e) {
-            e.printStackTrace();
+        TencentCoverInfo showDetail = tencentVideoService.getSimpleCoverDetail(map.getCoverId());
+        showDetail.setVideoList(tencentVideoService.getVideoList(showDetail.getId(), 1, 100));
+        VideoInfo info = VideoInfoFactory.create(internetSearchVideo);
+        info.setIntroduction(showDetail.getDescription());
+        info.setVideoDetailList(convertToDetail(showDetail.getVideoList(), showDetail));
+        info.setPlayPicture(info.getHpicture());
+        //鑾峰彇璧勬簮鍒楄〃
+        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);
         }
+        info.setResourceList(resourceList);
+        info.setShowType(YouKuUtil.getShowType(internetSearchVideo));
+        info.setScore(new BigDecimal(showDetail.getScore().getScore()).setScale(1).toString());
 
-        Gson gson = new Gson();
-        if (jsEngine instanceof Invocable) {
-            Invocable in = (Invocable) jsEngine;
-            Object coverInfo = in.invokeFunction("getCoverInfo");
-            JSONObject root = JSONObject.fromObject(gson.toJson(coverInfo));
-            System.out.println(root.toString());
-            List<TencentCoverInfo.VipIdsBean> vipIdsBeans = new ArrayList<>();
+        //鑾峰彇鍒嗙被璇︽儏
+        info.setVideoType(videoTypeService.getVideoType(info.getVideoType().getId()));
+        info.setCommentCount(0);
+        info.setVideocount((int) (Math.random() * 1000));
 
-            if (root.optJSONObject("vip_ids").isArray()) {
-                Type type = new TypeToken<List<TencentCoverInfo.VipIdsBean>>() {
-                }.getType();
-                vipIdsBeans = gson.fromJson(root.optJSONArray("vip_ids").toString(), type);
-            } else {
-                JSONObject vipIds = root.optJSONObject("vip_ids");
-                for (Iterator<String> its = vipIds.keys(); its.hasNext(); ) {
-                    String p = its.next();
-                    TencentCoverInfo.VipIdsBean idsBean = gson.fromJson(vipIds.optJSONObject(p).toString(), TencentCoverInfo.VipIdsBean.class);
-                    idsBean.setP(Integer.parseInt(p));
-                    vipIdsBeans.add(idsBean);
-                }
-            }
-            root.remove("vip_ids");
-
-            try {
-                List<String> subTypes = objToArray(root, "subtype");
-                List<String> directors = objToArray(root, "director");
-                List<String> leadingActor = objToArray(root, "leading_actor");
-                List<String> subGenre = objToArray(root, "sub_genre");
-
-
-                TencentCoverInfo coverInfoBean = gson.fromJson(root.toString(), TencentCoverInfo.class);
-                coverInfoBean.setVip_ids(vipIdsBeans);
-                coverInfoBean.setSubtype(subTypes);
-                coverInfoBean.setDirector(directors);
-                coverInfoBean.setLeading_actor(leadingActor);
-                coverInfoBean.setSub_genre(subGenre);
-                return coverInfoBean;
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
-//            System.out.println(coverInfoBean);
-        }
-        return null;
+        return info;
     }
 
 
-    private static void parseList(String url) {
-        try {
-            Document document = Jsoup.connect(url).timeout(5000).get();
-            Elements els = document.getElementsByAttributeValue("class", "list_item");
-            for (int i = 0; i < els.size(); i++) {
-                String href = els.get(i).getElementsByTag("a").get(0).attr("href");
-                String img = els.get(i).getElementsByTag("img").get(0).attr("src");
-                img = img.startsWith("http") ? img : "http:" + img;
-                try {
-                    TencentCoverInfo coverInfo = getCoverInfo(href);
-                    coverInfo.setVertical_pic_url(img);
-                    System.out.println(coverInfo);
-                } catch (Exception e) {
-                    e.printStackTrace();
-                }
-            }
-
-
-        } catch (IOException e) {
-            e.printStackTrace();
+    public static List<VideoDetailInfo> convertToDetail(List<TencentCoverVideo> tencentCoverVideoList, TencentCoverInfo coverInfo) {
+        List<VideoDetailInfo> detailList = new ArrayList<>();
+        for (TencentCoverVideo video : tencentCoverVideoList) {
+            detailList.add(convertToDetail(video, coverInfo));
         }
-
-
+        return detailList;
     }
 
 
-    public static void main(String[] args) {
-//        try {
-//            TencentCoverInfo info = getCoverInfo("https://v.qq.com/x/cover/mzc00200fw94jce.html");
-//
-//            info = getCoverInfo("https://v.qq.com/x/cover/mzc00200s0ii272/r0036xibgw2.html");
-//            info = getCoverInfo("https://v.qq.com/x/cover/ylgl3m6wo0sypou/w0036x9c5c7.html");
-//            info = getCoverInfo("https://v.qq.com/x/cover/ylgl3m6wo0sypou/w0036x9c5c7.html");
-//            //
-//            info = getCoverInfo("https://v.qq.com/x/cover/mzc00200tlv15ub.html");
-//            System.out.println(info);
-//        } catch (Exception e) {
-//            e.printStackTrace();
+    public static int getShowType(InternetSearchVideo video) {
+        if (video == null)
+            return 2;
 
-//        }
-        int page = 1;
-        parseList(String.format("https://v.qq.com/x/bu/pagesheet/list?_all=1&append=1&channel=cartoon&ipay=2&listpage=%s&offset=%s&pagesize=30&sort=18", page, (page - 1) * 30));
-
+        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);
+        TencentCoverVideo tencentCoverVideo = tencentVideoService.getVideoDetail(id);
+        playUrl.setUrl(tencentCoverVideo.getLink());
+        playUrl.setPlayType(1);
+        playUrl.setParams("");
+        return playUrl;
+    }
+
 }

--
Gitblit v1.8.0