Jelajahi Sumber

获取视频素材评估标签(新版)

zhaoxian 7 bulan lalu
induk
melakukan
53bf8d5ef1

+ 2 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/constant/BytedanceConstant.java

@@ -26,6 +26,8 @@ public class BytedanceConstant {
 
 
     public static final String BYTEDANCE_V2_FILE_VIDEO_GET = "/2/file/video/get/";
     public static final String BYTEDANCE_V2_FILE_VIDEO_GET = "/2/file/video/get/";
 
 
+    public static final String BYTEDANCE_V2_MATERIAL_ATTRIBUTES = "/2/file/material_attributes/list/";
+
     public static final String BYTEDANCE_V2_REPORT_INTEGRATED_GET = "/2/report/integrated/get/";
     public static final String BYTEDANCE_V2_REPORT_INTEGRATED_GET = "/2/report/integrated/get/";
 
 
     public static final String BYTEDANCE_V3_REPORT_INTEGRATED_GET = "/v3.0/report/custom/get/";
     public static final String BYTEDANCE_V3_REPORT_INTEGRATED_GET = "/v3.0/report/custom/get/";

+ 13 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/entity/BytedanceMaterialAttributes.java

@@ -0,0 +1,13 @@
+package cn.com.ctop.job.bytedance.data.entity;
+
+import lombok.Data;
+
+@Data
+public class BytedanceMaterialAttributes {
+    private Long materialId;
+
+    private String isAdHighQualityMaterial;
+
+    private String isFirstPublishMaterial;
+
+}

+ 2 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/BytedanceFileVideoGetMapper.java

@@ -2,6 +2,7 @@ package cn.com.ctop.job.bytedance.data.mapper;
 
 
 
 
 import cn.com.ctop.job.bytedance.data.entity.BytedanceFileVideoGet;
 import cn.com.ctop.job.bytedance.data.entity.BytedanceFileVideoGet;
+import cn.com.ctop.job.bytedance.data.entity.BytedanceMaterialAttributes;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Param;
 
 
 import java.util.List;
 import java.util.List;
@@ -11,4 +12,5 @@ public interface BytedanceFileVideoGetMapper {
 
 
     int insert(@Param("list") List<BytedanceFileVideoGet> list);
     int insert(@Param("list") List<BytedanceFileVideoGet> list);
 
 
+    void insertMaterialAttributesData(@Param("list") List<BytedanceMaterialAttributes> list);
 }
 }

+ 19 - 2
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/mapper/xml/BytedanceFileVideoGetMapper.xml

@@ -22,9 +22,10 @@
     </resultMap>
     </resultMap>
 
 
     <sql id="Base_Column_List">
     <sql id="Base_Column_List">
-    advertiser_id, id, size, width, height, url, format, signature, poster_url, bit_rate, 
+        advertiser_id
+        , id, size, width, height, url, format, signature, poster_url, bit_rate,
     duration, material_id, source, create_time, filename, labels, video_url
     duration, material_id, source, create_time, filename, labels, video_url
-  </sql>
+    </sql>
 
 
     <insert id="insert" parameterType="cn.com.ctop.job.bytedance.data.entity.BytedanceFileVideoGet">
     <insert id="insert" parameterType="cn.com.ctop.job.bytedance.data.entity.BytedanceFileVideoGet">
         replace into bytedance_file_video_get (advertiser_id, id, size,
         replace into bytedance_file_video_get (advertiser_id, id, size,
@@ -45,4 +46,20 @@
         </foreach>
         </foreach>
     </insert>
     </insert>
 
 
+    <insert id="insertMaterialAttributesData"
+            parameterType="cn.com.ctop.job.bytedance.data.entity.BytedanceMaterialAttributes">
+        replace into media_api.material_attributes_list (
+        material_id,
+        is_ad_high_quality_material,
+        is_first_publish_material
+        )
+        values
+        <foreach collection="list" item="item" separator=",">
+            (
+            #{item.materialId},
+            #{item.isAdHighQualityMaterial},
+            #{item.isFirstPublishMaterial})
+        </foreach>
+    </insert>
+
 </mapper>
 </mapper>

+ 2 - 0
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/IBytedanceFileVideoGetService.java

@@ -18,4 +18,6 @@ public interface IBytedanceFileVideoGetService  {
     void getFileVideoData(OauthToken oauthToken, String startDate,String endDate,int i, int i1);
     void getFileVideoData(OauthToken oauthToken, String startDate,String endDate,int i, int i1);
 
 
     Map<String,String>getBytedanceVideoByAccountId(OauthToken oauthToken, List<Long> materialIds,int i, int j);
     Map<String,String>getBytedanceVideoByAccountId(OauthToken oauthToken, List<Long> materialIds,int i, int j);
+
+    void getMaterialAttributesData(OauthToken oauthToken, String startDate,String endDate,int page);
 }
 }

+ 75 - 26
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/data/service/impl/BytedanceFileVideoGetServiceImpl.java

@@ -2,6 +2,7 @@ package cn.com.ctop.job.bytedance.data.service.impl;
 
 
 import cn.com.ctop.job.bytedance.data.constant.BytedanceConstant;
 import cn.com.ctop.job.bytedance.data.constant.BytedanceConstant;
 import cn.com.ctop.job.bytedance.data.entity.BytedanceFileVideoGet;
 import cn.com.ctop.job.bytedance.data.entity.BytedanceFileVideoGet;
+import cn.com.ctop.job.bytedance.data.entity.BytedanceMaterialAttributes;
 import cn.com.ctop.job.bytedance.data.entity.OauthToken;
 import cn.com.ctop.job.bytedance.data.entity.OauthToken;
 import cn.com.ctop.job.bytedance.data.mapper.BytedanceFileVideoGetMapper;
 import cn.com.ctop.job.bytedance.data.mapper.BytedanceFileVideoGetMapper;
 import cn.com.ctop.job.bytedance.data.service.IBytedanceFileVideoGetService;
 import cn.com.ctop.job.bytedance.data.service.IBytedanceFileVideoGetService;
@@ -35,7 +36,7 @@ public class BytedanceFileVideoGetServiceImpl implements IBytedanceFileVideoGetS
     BytedanceFileVideoGetMapper bytedanceFileVideoGetMapper;
     BytedanceFileVideoGetMapper bytedanceFileVideoGetMapper;
 
 
     @Override
     @Override
-    public void getFileVideoData(OauthToken oauthToken, String startDate,String endDate,int page, int pageSize) {
+    public void getFileVideoData(OauthToken oauthToken, String startDate, String endDate, int page, int pageSize) {
         log.info("开始获取视频素材 accountID:{},page:{}", oauthToken.getAccountId(), page);
         log.info("开始获取视频素材 accountID:{},page:{}", oauthToken.getAccountId(), page);
         // 请求地址
         // 请求地址
         String url = bytedanceApiUrl + BytedanceConstant.BYTEDANCE_V2_FILE_VIDEO_GET;
         String url = bytedanceApiUrl + BytedanceConstant.BYTEDANCE_V2_FILE_VIDEO_GET;
@@ -45,13 +46,13 @@ public class BytedanceFileVideoGetServiceImpl implements IBytedanceFileVideoGetS
         param.put("page", page);
         param.put("page", page);
         param.put("page_size", pageSize);
         param.put("page_size", pageSize);
         JSONObject param2 = new JSONObject();
         JSONObject param2 = new JSONObject();
-        if (!Check.isNull(startDate)){
-            param2.put("start_time",startDate);
+        if (!Check.isNull(startDate)) {
+            param2.put("start_time", startDate);
         }
         }
-        if (!Check.isNull(endDate)){
-            param2.put("end_time",endDate);
+        if (!Check.isNull(endDate)) {
+            param2.put("end_time", endDate);
         }
         }
-        param.put("filtering",param2);
+        param.put("filtering", param2);
         JSONObject resultObject = HttpUtils.bytedanceGetRequest(oauthToken.getAccessToken(), url, param);
         JSONObject resultObject = HttpUtils.bytedanceGetRequest(oauthToken.getAccessToken(), url, param);
 
 
         Integer code = resultObject.getInteger("code");
         Integer code = resultObject.getInteger("code");
@@ -80,26 +81,24 @@ public class BytedanceFileVideoGetServiceImpl implements IBytedanceFileVideoGetS
         page++;
         page++;
         int totalPage = resultObject.getJSONObject("data").getJSONObject("page_info").getInteger("total_page");
         int totalPage = resultObject.getJSONObject("data").getJSONObject("page_info").getInteger("total_page");
         if (page <= totalPage) {
         if (page <= totalPage) {
-            getFileVideoData(oauthToken,startDate, endDate,page, 100);
+            getFileVideoData(oauthToken, startDate, endDate, page, 100);
         }
         }
     }
     }
 
 
 
 
     /**
     /**
-     *
-     * @description: 根据账户获取视频素材-账户/素材id 下全部视频素材
-     *
      * @param oauthToken
      * @param oauthToken
      * @param page
      * @param page
      * @param pageSize
      * @param pageSize
-     * @return: java.util.Map<java.lang.String,java.lang.String>
+     * @description: 根据账户获取视频素材-账户/素材id 下全部视频素材
+     * @return: java.util.Map<java.lang.String, java.lang.String>
      * @author: zianY
      * @author: zianY
      * @time: 2022/2/9
      * @time: 2022/2/9
      */
      */
     @Override
     @Override
-    public Map<String,String> getBytedanceVideoByAccountId(OauthToken oauthToken,List<Long> materialIds,int page, int pageSize) {
-        Map<String,String> resultMap = new HashMap<>();
-        log.info("调用接口------getBytedanceVideoByAccountId----根据账户获取视频素材---账户--{}===第{}页===》》》",oauthToken.getAccountId(),page);
+    public Map<String, String> getBytedanceVideoByAccountId(OauthToken oauthToken, List<Long> materialIds, int page, int pageSize) {
+        Map<String, String> resultMap = new HashMap<>();
+        log.info("调用接口------getBytedanceVideoByAccountId----根据账户获取视频素材---账户--{}===第{}页===》》》", oauthToken.getAccountId(), page);
         // 请求地址
         // 请求地址
         String url = bytedanceApiUrl + BytedanceConstant.BYTEDANCE_V2_FILE_VIDEO_GET;
         String url = bytedanceApiUrl + BytedanceConstant.BYTEDANCE_V2_FILE_VIDEO_GET;
         JSONObject param = new JSONObject();
         JSONObject param = new JSONObject();
@@ -108,8 +107,8 @@ public class BytedanceFileVideoGetServiceImpl implements IBytedanceFileVideoGetS
         param.put("page_size", pageSize);
         param.put("page_size", pageSize);
 
 
         JSONObject param2 = new JSONObject();
         JSONObject param2 = new JSONObject();
-        if (!Check.isNull(materialIds)){
-            param2.put("material_ids",materialIds);
+        if (!Check.isNull(materialIds)) {
+            param2.put("material_ids", materialIds);
         }
         }
      /*  if (!Check.isNull(startDate)){
      /*  if (!Check.isNull(startDate)){
             param2.put("start_time",startDate);
             param2.put("start_time",startDate);
@@ -118,20 +117,20 @@ public class BytedanceFileVideoGetServiceImpl implements IBytedanceFileVideoGetS
             param2.put("end_time",endDate);
             param2.put("end_time",endDate);
         }
         }
         */
         */
-        param.put("filtering",param2);
+        param.put("filtering", param2);
 
 
         JSONObject resultObject = HttpUtils.bytedanceGetRequest(oauthToken.getAccessToken(), url, param);
         JSONObject resultObject = HttpUtils.bytedanceGetRequest(oauthToken.getAccessToken(), url, param);
         Integer code = resultObject.getInteger("code");
         Integer code = resultObject.getInteger("code");
         if (null == code || !code.equals(0)) {
         if (null == code || !code.equals(0)) {
             log.error("获取视频素材接口异常==》accountId:{},message:{}", oauthToken.getAccountId(), resultObject.getString("message"));
             log.error("获取视频素材接口异常==》accountId:{},message:{}", oauthToken.getAccountId(), resultObject.getString("message"));
-            resultMap.put("code","1");
-            resultMap.put("message","获取视频素材接口异常!账户:"+oauthToken.getAccountId()+"-----error:"+resultObject.getString("message"));
+            resultMap.put("code", "1");
+            resultMap.put("message", "获取视频素材接口异常!账户:" + oauthToken.getAccountId() + "-----error:" + resultObject.getString("message"));
             return resultMap;
             return resultMap;
         }
         }
         JSONArray data = resultObject.getJSONObject("data").getJSONArray("list");
         JSONArray data = resultObject.getJSONObject("data").getJSONArray("list");
         if (null == data || data.isEmpty()) {
         if (null == data || data.isEmpty()) {
-            resultMap.put("code","0");
-            resultMap.put("message","获取视频素材数据为空");
+            resultMap.put("code", "0");
+            resultMap.put("message", "获取视频素材数据为空");
             return resultMap;
             return resultMap;
         }
         }
         List<BytedanceFileVideoGet> list = new ArrayList<>();
         List<BytedanceFileVideoGet> list = new ArrayList<>();
@@ -144,8 +143,8 @@ public class BytedanceFileVideoGetServiceImpl implements IBytedanceFileVideoGetS
                 list.add(report);
                 list.add(report);
             } catch (Exception e) {
             } catch (Exception e) {
                 log.info("错误:{}", e.toString());
                 log.info("错误:{}", e.toString());
-                resultMap.put("code","500");
-                resultMap.put("message","哎呀,网络不给力。"+e.toString());
+                resultMap.put("code", "500");
+                resultMap.put("message", "哎呀,网络不给力。" + e.toString());
                 return resultMap;
                 return resultMap;
             }
             }
         }
         }
@@ -153,11 +152,61 @@ public class BytedanceFileVideoGetServiceImpl implements IBytedanceFileVideoGetS
         page++;
         page++;
         int totalPage = resultObject.getJSONObject("data").getJSONObject("page_info").getInteger("total_page");
         int totalPage = resultObject.getJSONObject("data").getJSONObject("page_info").getInteger("total_page");
         if (page <= totalPage) {
         if (page <= totalPage) {
-            getBytedanceVideoByAccountId(oauthToken,materialIds,page, 100);
+            getBytedanceVideoByAccountId(oauthToken, materialIds, page, 100);
         }
         }
-        resultMap.put("code","0");
-        resultMap.put("message","success");
+        resultMap.put("code", "0");
+        resultMap.put("message", "success");
         return resultMap;
         return resultMap;
     }
     }
 
 
+    @Override
+    public void getMaterialAttributesData(OauthToken oauthToken, String startDate, String endDate, int page) {
+        log.info("获取视频素材评估标签(新版) accountID:{},page:{}", oauthToken.getAccountId(), page);
+        // 请求地址
+        String url = bytedanceApiUrl + BytedanceConstant.BYTEDANCE_V2_MATERIAL_ATTRIBUTES;
+        JSONObject param = new JSONObject();
+
+        param.put("account_id", oauthToken.getAccountId());
+        param.put("account_type", "AD");
+        param.put("page", page);
+        param.put("page_size", 100);
+        JSONObject filtering = new JSONObject();
+        if (!Check.isNull(startDate)) {
+            filtering.put("start_time", startDate + " 00:00:00");
+        }
+        if (!Check.isNull(endDate)) {
+            filtering.put("end_time", endDate + " 23:59:59");
+        }
+        List<String> material_properties = new ArrayList<>();
+        material_properties.add("FIRST_PUBLISH_MATERIAL");
+        material_properties.add("AD_HIGH_QUALITY_MATERIAL");
+        filtering.put("material_properties", material_properties);
+        param.put("filtering", filtering);
+        JSONObject resultObject = HttpUtils.bytedanceGetRequest(oauthToken.getAccessToken(), url, param);
+//        System.out.println(resultObject);
+        Integer code = resultObject.getInteger("code");
+        if (null == code || !code.equals(0)) {
+            log.error("获取视频素材评估标签(新版)接口异常==》accountId:{},message:{}", oauthToken.getAccountId(), resultObject);
+            return;
+        }
+        JSONArray materials = resultObject.getJSONObject("data").getJSONArray("materials");
+        if (null == materials || materials.isEmpty()) {
+            return;
+        }
+        List<BytedanceMaterialAttributes> list = new ArrayList<>();
+        for (int i = 0; i < materials.size(); i++) {
+            JSONObject dataObject = materials.getJSONObject(i);
+            BytedanceMaterialAttributes report = JSONObject.parseObject(dataObject.toJSONString(), BytedanceMaterialAttributes.class);
+            list.add(report);
+        }
+        bytedanceFileVideoGetMapper.insertMaterialAttributesData(list);
+        page++;
+        int totalPage = resultObject.getJSONObject("data").getJSONObject("page").getInteger("total_page");
+        if (page <= totalPage) {
+            getMaterialAttributesData(oauthToken, startDate, endDate, page);
+        }
+
+
+    }
+
 }
 }

+ 24 - 2
job-bytedance/src/main/java/cn/com/ctop/job/bytedance/handler/BytedanceFileGetLoadJob.java

@@ -90,7 +90,6 @@ public class BytedanceFileGetLoadJob {
     }
     }
 
 
 
 
-
     /**
     /**
      * 获取头条视频素材 全部
      * 获取头条视频素材 全部
      *
      *
@@ -107,10 +106,33 @@ public class BytedanceFileGetLoadJob {
         OauthToken oauthToken = new OauthToken();
         OauthToken oauthToken = new OauthToken();
         oauthToken.setAccessToken(token);
         oauthToken.setAccessToken(token);
         oauthToken.setAccountId(Long.parseLong(param));
         oauthToken.setAccountId(Long.parseLong(param));
-        log.info("获取头条视频全量素材---账户--{}======》》》",oauthToken.getAccountId());
+        log.info("获取头条视频全量素材---账户--{}======》》》", oauthToken.getAccountId());
         fileVideoService.getFileVideoData(oauthToken, null, null, 1, 100);
         fileVideoService.getFileVideoData(oauthToken, null, null, 1, 100);
     }
     }
 
 
 
 
+    /**
+     * 获取视频素材评估标签(新版)
+     */
+    @XxlJob("bytedanceMaterialAttributesData")
+    public void bytedanceMaterialAttributesData() throws Exception {
+        String param = XxlJobHelper.getJobParam(); // 执行参数
+        if (Check.isNull(param)) {
+            log.error("入参为空");
+            return;
+        }
+        String token = tokenService.getByAccountId(Long.valueOf(param));
+        String nowDate = DateUtils.getNowDate("yyyy-MM-dd");
+//        String yesterda = DateUtils.getAnotherDay("yyyy-MM-dd", nowDate, -1);
+        String yesterda2 = DateUtils.getAnotherDay("yyyy-MM-dd", nowDate, -2);
+        if (Check.isNull(token)) {
+            log.error("--此账户未获取到相关token,accountId:{}", param);
+            return;
+        }
+        OauthToken oauthToken = new OauthToken();
+        oauthToken.setAccessToken(token);
+        oauthToken.setAccountId(Long.parseLong(param));
+        fileVideoService.getMaterialAttributesData(oauthToken, null, null, 1);
+    }
 
 
 }
 }