EtlServerApplicationTests.java 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. package com.tzld.crawler.etl;
  2. //import com.aliyun.mq.http.MQClient;
  3. //import com.aliyun.mq.http.MQProducer;
  4. //import com.aliyun.mq.http.model.TopicMessage;
  5. import com.google.common.collect.Lists;
  6. import com.huaban.analysis.jieba.JiebaSegmenter;
  7. import com.huaban.analysis.jieba.SegToken;
  8. //import com.tzld.crawler.etl.mq.EtlMQConsumer;
  9. import net.bramp.ffmpeg.FFprobe;
  10. import net.bramp.ffmpeg.probe.FFmpegFormat;
  11. import net.bramp.ffmpeg.probe.FFmpegProbeResult;
  12. import net.bramp.ffmpeg.probe.FFmpegStream;
  13. import org.junit.jupiter.api.Test;
  14. import org.springframework.beans.factory.annotation.Value;
  15. import org.springframework.boot.test.context.SpringBootTest;
  16. import org.springframework.boot.test.mock.mockito.MockBean;
  17. import java.io.IOException;
  18. import java.util.ArrayList;
  19. import java.util.List;
  20. import java.util.stream.IntStream;
  21. @SpringBootTest
  22. class EtlServerApplicationTests {
  23. @Value("${rocketmq.accessKey}")
  24. private String accessKey;
  25. @Value("${rocketmq.secretKey}")
  26. private String secretKey;
  27. @Value("${rocketmq.httpEndpoint}")
  28. private String httpEndpoint;
  29. @Value("${rocketmq.instanceId}")
  30. private String instanceId;
  31. /**
  32. * 排除 EtlMQConsumer 的加载
  33. */
  34. // @MockBean
  35. // private EtlMQConsumer etlMQConsumer;
  36. @Test
  37. void produceMsgTest() {
  38. // MQClient mqClient = new MQClient(httpEndpoint, accessKey, secretKey);
  39. // MQProducer producer = mqClient.getProducer(instanceId, "topic_crawler_etl_test");
  40. // ArrayList<String> platforms = Lists.newArrayList("benshanzhufu", "kuaishou", "douyin", "xigua", "gongzhonghao", "xiaoniangao");
  41. //
  42. // IntStream.range(0, 20).forEach(x -> {
  43. // try {
  44. // String s = "{\"user_id\": 6281907,\"out_user_id\": \"53322270\",\"platform\": \"" + platforms.get(x % 6) + "\",\"strategy\": \"author\"," +
  45. // "\"out_video_id\": \"" + System.currentTimeMillis() + "\"," +
  46. // "\"video_title\": \"" + x + "世界上最强百米对决\",\"cover_url\": \"https://cdn-xphoto2.xiaoniangao.cn/5200474225?Expires=1704038400&OSSAccessKeyId=LTAI4G2W1FsgwzAWYpPoB3v6&Signature=ncvtSP8FSrwuU8unZMtxdXIuWBE%3D&x-oss-process=image%2Fresize%2Cw_690%2Ch_385%2Climit_0%2Finterlace%2C1%2Fformat%2Cjpg%2Fauto-orient%2C0\"," +
  47. // "\"video_url\": \"https://cdn-xalbum2.xiaoniangao.cn/6506ec4500000104bd7c0623?Expires=1704038400&OSSAccessKeyId=LTAI5tB7cRkYiqHcTdkVprwb&Signature=CxJEEcwUR87is9X3li5xP5ZiDvQ%3D\"" +
  48. // ",\"duration\": 40,\"publish_time\": \"2023-06-08 23:01:47\",\"play_cnt\": 602,\"like_cnt\": 0,\"share_cnt\": 0,\"collection_cnt\": 0,\"comment_cnt\": 0,\"crawler_rule\": {\"period\": { \"max\": 3, \"min\": 3 },\"duration\": { \"max\": 999999999999999, \"min\": 40 },\"play_cnt\": { \"max\": 999999999999999, \"min\": 500 }},\"width\": 450,\"height\": 254}";
  49. //
  50. // TopicMessage pubMsg = new TopicMessage(s.getBytes());
  51. // producer.publishMessage(pubMsg);
  52. // } catch (Exception e) {
  53. // System.out.println(e);
  54. // }
  55. // });
  56. }
  57. @Test
  58. public void testDemo() {
  59. JiebaSegmenter segmenter = new JiebaSegmenter();
  60. List<SegToken> process = segmenter.process("这是一个伸手不见五指的黑夜。我叫孙悟空,我爱北京,我爱Java和Rust还有Golang。", JiebaSegmenter.SegMode.SEARCH);
  61. for (SegToken segToken : process) {
  62. System.out.println(segToken.word);
  63. }
  64. }
  65. public static void main(String[] args) throws IOException {
  66. // getVideoSize("/Users/ehlxr/logs/crawler/videos/longvideo/crawler_local/video/dev/20230614/9778d5d219c5080b9a6a17bef029331c.mp4");
  67. getVideoSize("http://cdn-xalbum-baishan.xiaoniangao.cn/4607211824?Expires=1704038400&OSSAccessKeyId=LTAI5tB7cRkYiqHcTdkVprwb&Signature=oFnKr5ObYT2xqNTadYEPHfzMdIM%3D");
  68. }
  69. public static void getVideoSize(String videoPath) throws IOException {
  70. FFprobe ffprobe = new FFprobe("ffprobe");
  71. FFmpegProbeResult probeResult = ffprobe.probe(videoPath);
  72. FFmpegFormat format = probeResult.getFormat();
  73. FFmpegStream stream = probeResult.getStreams().get(0);
  74. System.out.format("Duration: %f Width: %d ; Height: %d", format.duration,
  75. stream.width,
  76. stream.height
  77. );
  78. }
  79. }