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