shikeying
2022-09-30 a78b76b664830a1ac691396d5cb64166c6919ff1
视频相似度分析5
1个文件已添加
4个文件已修改
109 ■■■■■ 已修改文件
recommend-video/src/main/java/com/iplatform/recvideo/VideoLoader.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
recommend-video/src/main/java/com/iplatform/recvideo/scheduler/VideoLoadScheduler.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
recommend-video/src/main/java/com/iplatform/recvideo/scheduler/VideoLoadTask.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
recommend-video/src/main/java/com/iplatform/recvideo/support/DefaultVideoLoader.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
recommend-video/src/test/java/com/iplatform/recvideo/VideoSimilarTest.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
recommend-video/src/main/java/com/iplatform/recvideo/VideoLoader.java
@@ -10,8 +10,10 @@
    protected final transient Logger logger = LoggerFactory.getLogger(this.getClass());
    public void startup(String videoDataFolder, String batchId, boolean testMode){
//    protected String videoDataFolder = null;
    public void startup(boolean testMode){
//        this.videoDataFolder = videoDataFolder;
    }
    public void destroy(){
recommend-video/src/main/java/com/iplatform/recvideo/scheduler/VideoLoadScheduler.java
@@ -1,17 +1,74 @@
package com.iplatform.recvideo.scheduler;
import com.iplatform.core.BeanContextAware;
import com.iplatform.recvideo.VideoLoader;
import com.iplatform.recvideo.VideoScheduler;
import com.iplatform.recvideo.service.VideoLoaderServiceImpl;
import com.iplatform.recvideo.support.DefaultVideoLoader;
import com.walker.connector.Address;
import com.walker.connector.support.DatabaseConnector;
import com.walker.connector.util.ConnectorUtils;
import com.walker.store.AbstractStore;
import com.walker.store.task.GatherTask;
/**
 * 短视频采集(加载拷贝)调度任务实现。
 * @author 时克英
 * @date 2022-09-30
 */
public class VideoLoadScheduler extends VideoScheduler {
    private VideoLoader videoLoader= null;
    private int failedCount = 0;
    private Address srcAddress; // 从业务系统数据库加载视频集合记录
    public VideoLoadScheduler(int id, String name){
        super(id, name);
        srcAddress = new Address();
        srcAddress.setUrl("127.0.0.1");
        srcAddress.setPort(3306);
        srcAddress.setAuthentication("root");
        srcAddress.setCertification("123456");
    }
    @Override
    protected GatherTask providerTask(AbstractStore store) {
        return null;
    }
    @Override
    protected Object onProcess(Object[] inputParams) throws Exception {
        if(this.videoLoader == null){
            DefaultVideoLoader defaultVideoLoader = new DefaultVideoLoader();
            defaultVideoLoader.setVideoLoaderService(BeanContextAware.getBeanByType(VideoLoaderServiceImpl.class));
            defaultVideoLoader.setDatabaseConnector(this.createMySqlConnector(this.srcAddress));
            defaultVideoLoader.startup(false);
            this.videoLoader = defaultVideoLoader;
            logger.debug("创建'DefaultVideoLoader': " + defaultVideoLoader.getClass());
        }
        try{
            int result = this.videoLoader.execute();
            if(result == 1){
                logger.info("成功执行一次短视频采集");
                return SUCCESS;
            }
            logger.debug("videoLoader.execute() = -1,线程准备休眠");
            return null;
        }catch (Exception ex){
            logger.error("VideoLoader.execute()报错: " + ex.getMessage(), ex);
            this.failedCount ++;
            if(this.failedCount > 3){
                // 如果报错超过多次,返回空,让线程休眠一下
                this.failedCount = 0;
            }
            return null;
        }
    }
    private DatabaseConnector createMySqlConnector(Address address){
        DatabaseConnector connector = ConnectorUtils.createMySQLConnector(address);
        return connector;
    }
}
recommend-video/src/main/java/com/iplatform/recvideo/scheduler/VideoLoadTask.java
New file
@@ -0,0 +1,25 @@
package com.iplatform.recvideo.scheduler;
import com.walker.connector.Address;
import com.walker.store.task.GenericGatherTask;
import java.util.List;
@Deprecated
public class VideoLoadTask extends GenericGatherTask {
    public VideoLoadTask(String name, Address address){
        super(name, address);
    }
    @Override
    protected Object execute(String srcName, String createTableSQL, Object parameter, List<Object> data) {
        return null;
    }
    @Override
    protected List<Object> transferResultData(List<Object> resultList) {
        return resultList;
    }
}
recommend-video/src/main/java/com/iplatform/recvideo/support/DefaultVideoLoader.java
@@ -6,6 +6,7 @@
import com.iplatform.recvideo.VideoLoadInfo;
import com.iplatform.recvideo.VideoLoader;
import com.iplatform.recvideo.service.VideoLoaderServiceImpl;
import com.walker.connector.support.DatabaseConnector;
import com.walker.infrastructure.utils.DateUtils;
import com.walker.infrastructure.utils.NumberGenerator;
@@ -15,6 +16,12 @@
public class DefaultVideoLoader extends VideoLoader {
    private VideoLoaderServiceImpl videoLoaderService;
    private DatabaseConnector databaseConnector = null;
    public void setDatabaseConnector(DatabaseConnector databaseConnector) {
        this.databaseConnector = databaseConnector;
    }
    public void setVideoLoaderService(VideoLoaderServiceImpl videoLoaderService) {
        this.videoLoaderService = videoLoaderService;
@@ -27,11 +34,12 @@
    @Override
    protected long acquireInitBatchId() {
        return 0;
        return 20210101;
    }
    @Override
    protected List<VideoLoadInfo> acquireLoadVideoFromDatabase(long nextBatchId) {
        this.databaseConnector.queryForList("", new Object[]{nextBatchId});
        return null;
    }
recommend-video/src/test/java/com/iplatform/recvideo/VideoSimilarTest.java
@@ -3,14 +3,25 @@
import com.iplatform.model.po.Rc_video_t1;
import com.iplatform.recvideo.util.PythonInvokeUtils;
import com.iplatform.recvideo.util.VideoFileUtils;
import com.walker.infrastructure.utils.ClassUtils;
import com.walker.scheduler.impl.TimedScheduler;
import org.junit.Test;
import org.springframework.web.client.RestTemplate;
import java.lang.reflect.Constructor;
import java.util.List;
public class VideoSimilarTest {
    @Test
//    @Test
    public void testSchedulerClass() throws Exception{
        Class<?> schedulerClass = ClassUtils.forName("com.iplatform.recvideo.scheduler.VideoSearchScheduler", VideoSimilarTest.class.getClassLoader());
        Constructor<TimedScheduler> constructor = (Constructor<TimedScheduler>)schedulerClass.getConstructor(int.class, String.class);
        TimedScheduler listeningScheduler = constructor.newInstance(100, "test_scheduler");
    }
//    @Test
    public void testPythonSearch() throws Exception{
        String url = "http://121.36.40.27:12345/ai/video/search_img";
        RestTemplate restTemplate = new RestTemplate();