From 2b1f542577dd8dfc54d3433dff3615796ceab0af Mon Sep 17 00:00:00 2001
From: shikeying <shikeying@163.com>
Date: 星期二, 11 十月 2022 17:17:50 +0800
Subject: [PATCH] 视频下载,解析分析调度跑通

---
 recommend-video/src/main/java/com/iplatform/recvideo/service/VideoExecutorServiceImpl.java |    4 ++
 recommend-video/src/main/java/com/iplatform/recvideo/support/DefaultSimilarExecutor.java   |    9 ++++
 recommend-video/src/main/java/com/iplatform/recvideo/util/PythonInvokeUtils.java           |   32 ++++++++++++++++
 recommend-video/src/test/java/com/iplatform/recvideo/VideoSimilarTest.java                 |    5 +-
 recommend-video/src/main/java/com/iplatform/recvideo/util/LoadRequest.java                 |   32 ++++++++++++++++
 recommend-video/src/main/java/com/iplatform/recvideo/SimilarExecutor.java                  |   25 +++++++++++-
 6 files changed, 101 insertions(+), 6 deletions(-)

diff --git a/recommend-video/src/main/java/com/iplatform/recvideo/SimilarExecutor.java b/recommend-video/src/main/java/com/iplatform/recvideo/SimilarExecutor.java
index 3e94ddd..61d1450 100644
--- a/recommend-video/src/main/java/com/iplatform/recvideo/SimilarExecutor.java
+++ b/recommend-video/src/main/java/com/iplatform/recvideo/SimilarExecutor.java
@@ -4,6 +4,7 @@
 import com.iplatform.recvideo.util.PythonInvokeUtils;
 import com.iplatform.recvideo.util.TestUtils;
 import com.iplatform.recvideo.util.VideoFileUtils;
+import com.walker.infrastructure.utils.FileUtils;
 import com.walker.infrastructure.utils.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -84,7 +85,14 @@
     public int execute() throws Exception{
         if(!this.pythonLoadVideoDone){
             logger.debug("褰撳墠 pythonLoadVideoDone = false, 闇�瑕佹煡璇㈡暟鎹簱鏄惁宸插姞杞借棰�");
-            this.pythonLoadVideoDone = this.pythonLoadVideoDone(this.batchId, VideoFileUtils.combineBatchPath(videoDataFolder, batchId));
+            String batchPath = VideoFileUtils.combineBatchPath(videoDataFolder, batchId);
+            if(!FileUtils.isExist(batchPath)){
+                // 鏂囦欢澶逛笉瀛樺湪锛屾垨鐣ヨ鐘舵�佽褰曪紝2022-10-11
+                this.ignoreTaskStatus(batchId);
+                logger.warn("鏂囦欢澶逛笉瀛樺湪锛屽拷鐣ヨ鎵规璁板綍锛岃嚜鍔ㄦ洿鏂颁负'宸插畬鎴�', batchPath = " + batchPath);
+                return 1;
+            }
+            this.pythonLoadVideoDone = this.pythonLoadVideoDone(this.batchId, batchPath);
         }
 
         // 1: 濡傛灉瑙嗛杩樻湭鍔犺浇锛屽垯鍏堝姞杞借棰�
@@ -114,9 +122,13 @@
             }
         }
         if(StringUtils.isEmptyList(this.videoFolderInfoList)){
-            logger.warn("瑙嗛鍒嗘瀽鏂囦欢澶瑰唴瀹逛负绌猴紝鏃犳硶缁х画鏌ヨ鐩镐技搴︾粨鏋�! videoFolderInfoList = null");
-            return -1;
+            logger.warn("瑙嗛鍒嗘瀽鏂囦欢澶瑰唴瀹逛负绌猴紝鏃犳硶缁х画鏌ヨ鐩镐技搴︾粨鏋�!蹇界暐璇ユ壒娆°�� videoFolderInfoList = null");
+//            return -1;
+            // 鏂囦欢澶逛笉娌℃湁浠讳綍瑙嗛鏂囦欢锛屾垨鐣ヨ鐘舵�佽褰曪紝2022-10-11
+            this.ignoreTaskStatus(batchId);
+            return 1;
         }
+
         for(VideoFolderInfo v : this.videoFolderInfoList){
             this.videoIdList.add(v.getVideoId());
         }
@@ -246,4 +258,11 @@
      * @param recVideoIdList 鏈壒娆″鐞嗗師濮嬭棰慽d闆嗗悎
      */
     protected abstract void writeRcVideoUser(String batchId, List<String> recVideoIdList);
+
+    /**
+     * 蹇界暐璇ョ姸鎬佹壒娆★紝鐢变簬鏂囦欢澶逛笉瀛樺湪绛夊師鍥狅紝涓嶅甫澶勭悊锛屼笉瑕佸湪杩欓噷鎵撲即銆�
+     * @param batchId
+     * @date 2022-10-11
+     */
+    protected abstract void ignoreTaskStatus(String batchId);
 }
diff --git a/recommend-video/src/main/java/com/iplatform/recvideo/service/VideoExecutorServiceImpl.java b/recommend-video/src/main/java/com/iplatform/recvideo/service/VideoExecutorServiceImpl.java
index 6fe6174..728e739 100644
--- a/recommend-video/src/main/java/com/iplatform/recvideo/service/VideoExecutorServiceImpl.java
+++ b/recommend-video/src/main/java/com/iplatform/recvideo/service/VideoExecutorServiceImpl.java
@@ -21,6 +21,7 @@
     private static final String SQL_GET_BATCH_VIDEO = "select user_id, src_video_id from rc_video_batch where batch_id=?";
 
     private static final String SQL_UPDATE_TASK_STATUS_LOAD = "update rc_task_status set status='1', end_time=? where last_value=? and status='0'";
+    private static final String SQL_IGNORE_TASK_STATUS_LOAD = "update rc_task_status set status='1', msg='ignore' where last_value=? and status='0' and task_type='video_load'";
 
     /**
      * 鍐欏叆瑙嗛鐩镐技搴︾涓�绾т复鏃舵暟鎹紝姣忎釜鍥惧儚鍖呭惈澶氫釜鐩镐技瑙嗛璁板綍銆�
@@ -56,6 +57,9 @@
         this.execute(SQL_UPDATE_TASK_STATUS_LOAD, param);
     }
 
+    public void execIgnoreTaskStatus(String batchId){
+        this.execute(SQL_IGNORE_TASK_STATUS_LOAD, new Object[]{Long.parseLong(batchId)});
+    }
 
     /**
      * 杩斿洖涓�涓壒娆$敤鎴峰搴旇棰戣褰曢泦鍚堬紝鐢ㄤ簬鏈�鍚庢洿鏂扮敤鎴锋帹鑽愯棰戞暟鎹��
diff --git a/recommend-video/src/main/java/com/iplatform/recvideo/support/DefaultSimilarExecutor.java b/recommend-video/src/main/java/com/iplatform/recvideo/support/DefaultSimilarExecutor.java
index ceec831..10876e8 100644
--- a/recommend-video/src/main/java/com/iplatform/recvideo/support/DefaultSimilarExecutor.java
+++ b/recommend-video/src/main/java/com/iplatform/recvideo/support/DefaultSimilarExecutor.java
@@ -52,7 +52,9 @@
     @Override
     protected String requestStartPythonLoadVideo(String batchId) throws Exception {
         logger.info("寮�濮嬭姹俻ython鏈嶅姟:" + Constants.AI_SERVICE_VIDEO_LOAD);
-        return null;
+        String url = this.remoteUrl + Constants.AI_SERVICE_VIDEO_LOAD;
+        boolean success = PythonInvokeUtils.postLoadVideoGather(batchId, url, this.restTemplate);
+        return success? null : "python 鍔犺浇瑙嗛璋冪敤澶辫触";
     }
 
     @Override
@@ -138,6 +140,11 @@
         logger.debug("鎵规浠诲姟鐘舵�佸凡鏇存柊鎴愬姛! " + batchId);
     }
 
+    @Override
+    protected void ignoreTaskStatus(String batchId) {
+        this.videoExecutorService.execIgnoreTaskStatus(batchId);
+    }
+
     private List<Rc_video_user> toRcVideoUserList(List<SimilarVideoUser> similarVideoUserList){
         if(StringUtils.isEmptyList(similarVideoUserList)){
             return null;
diff --git a/recommend-video/src/main/java/com/iplatform/recvideo/util/LoadRequest.java b/recommend-video/src/main/java/com/iplatform/recvideo/util/LoadRequest.java
new file mode 100644
index 0000000..8e69f8d
--- /dev/null
+++ b/recommend-video/src/main/java/com/iplatform/recvideo/util/LoadRequest.java
@@ -0,0 +1,32 @@
+package com.iplatform.recvideo.util;
+
+import java.io.Serializable;
+
+/**
+ * 璇锋眰python鍔犺浇瑙嗛(涓�涓壒娆�)
+ * @date 2022-10-11
+ */
+public class LoadRequest implements Serializable {
+
+    private String date;
+
+    private String frame_rate = "30";
+
+    public String getDate() {
+        return date;
+    }
+
+    public void setDate(String date) {
+        this.date = date;
+    }
+
+    public String getFrame_rate() {
+        return frame_rate;
+    }
+
+    public void setFrame_rate(String frame_rate) {
+        this.frame_rate = frame_rate;
+    }
+
+
+}
diff --git a/recommend-video/src/main/java/com/iplatform/recvideo/util/PythonInvokeUtils.java b/recommend-video/src/main/java/com/iplatform/recvideo/util/PythonInvokeUtils.java
index a315bb2..e53bf0d 100644
--- a/recommend-video/src/main/java/com/iplatform/recvideo/util/PythonInvokeUtils.java
+++ b/recommend-video/src/main/java/com/iplatform/recvideo/util/PythonInvokeUtils.java
@@ -18,6 +18,36 @@
 
     private static final transient Logger logger = LoggerFactory.getLogger(PythonInvokeUtils.class);
 
+    public static boolean postLoadVideoGather(String batchId, String url, RestTemplate restTemplate) throws Exception{
+        LoadRequest request = new LoadRequest();
+        request.setDate(batchId);
+        request.setFrame_rate("30");
+
+        ResponseEntity<String> entity = restTemplate.postForEntity(url, request, String.class);
+        if(entity == null){
+            return false;
+        }
+        String jsonData = entity.getBody();
+        try {
+            Map<String, Object> map = JsonUtils.jsonStringToObject(jsonData, Map.class);
+            if(map == null || !map.containsKey("code")){
+                logger.error("python杩斿洖缁撴灉涓虹┖锛屾垨鑰呮病鏈塩ode鏍囧織锛屾棤娉曞垽鏂皟鐢ㄥ姞杞借棰戞垚鍔�!");
+                return false;
+            }
+            String code = map.get("code").toString();
+            if(code.equals("0")){
+                logger.info("python notify_gather_once() 鍔犺浇瑙嗛澶勭悊鎴愬姛! batchId = " + batchId);
+                return true;
+            }
+            logger.warn("python notify_gather_once() 鍔犺浇瑙嗛澶勭悊澶辫触, batchId = " + batchId);
+            return false;
+
+        } catch (Exception e) {
+            logger.error("瑙f瀽json缁撴灉閿欒:" + jsonData, e);
+            throw e;
+        }
+    }
+
     public static List<Rc_video_t1> acquireImageSearchResult(String videoId, String imgPath
             , String topN, String url, RestTemplate restTemplate) throws Exception{
         SearchRequest request = new SearchRequest();
@@ -55,6 +85,8 @@
      * @return
      */
     public static final String getFileNameWithoutSuffix(String videoPath, String suffix){
+        // 濡傛灉瀛樺湪windows鍙嶆枩鏉狅紝鍏堣浆鎹㈡垚姝f枩鏉犮��2022-10-11
+        videoPath = videoPath.replaceAll("\\\\", StringUtils.FOLDER_SEPARATOR);
         String[] array = videoPath.split("/");
         if(array == null || array.length == 0){
             logger.error("瑙嗛鍚嶇О鎴彇id閿欒:" + videoPath);
diff --git a/recommend-video/src/test/java/com/iplatform/recvideo/VideoSimilarTest.java b/recommend-video/src/test/java/com/iplatform/recvideo/VideoSimilarTest.java
index 3c7e781..4035745 100644
--- a/recommend-video/src/test/java/com/iplatform/recvideo/VideoSimilarTest.java
+++ b/recommend-video/src/test/java/com/iplatform/recvideo/VideoSimilarTest.java
@@ -34,9 +34,10 @@
         }
     }
 
-//    @Test
+    @Test
     public void testGetVideoId(){
-        String id = PythonInvokeUtils.getFileNameWithoutSuffix("/opt/ai/video/20220921/landscape_01.mp4", Constants.VIDEO_SUFFIX);
+//        String id = PythonInvokeUtils.getFileNameWithoutSuffix("/opt/ai/video/20220921/landscape_01.mp4", Constants.VIDEO_SUFFIX);
+        String id = PythonInvokeUtils.getFileNameWithoutSuffix("D:\\dev_tools\\ai\\20220520144630\\1527541255435849728\\1527541255435849728_0.jpg", Constants.IMAGE_SUFFIX);
         System.out.println(id);
     }
 

--
Gitblit v1.9.1