Explorar o código

抓取一点通解释视频

小么熊🐻 %!s(int64=2) %!d(string=hai) anos
pai
achega
384a88ee5b

+ 98 - 0
zzjs-admin/src/test/java/com/miaxis/test/YdtTest.java

@@ -17,6 +17,9 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.junit4.SpringRunner;
 
+import java.io.*;
+import java.net.HttpURLConnection;
+import java.net.URL;
 import java.util.List;
 
 @SpringBootTest(classes = ZzjsApplication.class)
@@ -189,4 +192,99 @@ public class YdtTest {
     }
 
 
+
+    @Test
+    public void getShortVideo() throws IOException {
+
+        String savePath = "G:\\中正\\一点通\\题库短视频";
+        List<QuestionYdtJs> list = questionYdtJsService.selectQuestionYdtJsList2(null);
+
+        for (int i = 0; i < list.size(); i++) {
+            QuestionYdtJs questionYdtJs = list.get(i);
+            Long id = questionYdtJs.getId();
+            String shortUrl= questionYdtJs.getShortVideoUrl();
+            int index2 = shortUrl.lastIndexOf(".");
+            String lastName = shortUrl.substring(index2);
+            String fileName = id+lastName;
+            System.out.println(fileName);
+            downLoadFromUrl(shortUrl,fileName,savePath);
+
+        }
+
+
+    }
+
+    public static void downLoadFromUrl(String urlStr, String fileName, String savePath) throws IOException {
+        URL url = new URL(urlStr);
+        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
+        //设置超时间为3秒
+        conn.setConnectTimeout(3 * 1000);
+        //防止屏蔽程序抓取而返回403错误
+        conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
+        //得到输入流
+        InputStream inputStream = conn.getInputStream();
+
+        //获取自己数组
+        byte[] getData = readInputStream(inputStream);
+
+        //文件保存位置
+        File saveDir = new File(savePath);
+        if (!saveDir.exists()) {
+            saveDir.mkdir();
+        }
+
+        File file = new File(saveDir + File.separator + fileName);
+
+        FileOutputStream fos = new FileOutputStream(file);
+
+        fos.write(getData);
+
+        if (fos != null) {
+            fos.close();
+        }
+        if (inputStream != null) {
+
+            inputStream.close();
+        }
+        System.out.println("info:" + url + " download success");
+    }
+
+    /**
+     * 从输入流中获取字节数组
+     *
+     * @param inputStream
+     * @return
+     * @throws IOException
+     */
+    public static byte[] readInputStream(InputStream inputStream) throws IOException {
+
+        byte[] buffer = new byte[1024];
+
+        int len = 0;
+
+        ByteArrayOutputStream bos = new ByteArrayOutputStream();
+        while ((len = inputStream.read(buffer)) != -1) {
+            bos.write(buffer, 0, len);
+        }
+        bos.close();
+
+        return bos.toByteArray();
+
+    }
+
+    public static void main(String[] args) {
+        String mediaUrl = "https://wos.58cdn.com.cn/XyVuTsRqXyf/videos/c3307880da594dffa1603c6820ca802a.mp4";
+        int index = mediaUrl.lastIndexOf("/");
+        String fileName = mediaUrl.substring(index + 1);
+        int index2 = mediaUrl.lastIndexOf(".");
+        String lastName = mediaUrl.substring(index2);
+
+
+        System.out.println(fileName);
+        System.out.println(lastName);
+
+
+
+    }
+
 }

+ 2 - 0
zzjs-service/src/main/java/com/miaxis/question/mapper/QuestionYdtJsMapper.java

@@ -19,4 +19,6 @@ public interface QuestionYdtJsMapper extends BaseMapper<QuestionYdtJs> {
      */
     public List<QuestionYdtJs> selectQuestionYdtJsList(QuestionYdtJs questionYdtJs);
 
+
+    public List<QuestionYdtJs> selectQuestionYdtJsList2(QuestionYdtJs questionYdtJs);
 }

+ 2 - 0
zzjs-service/src/main/java/com/miaxis/question/service/IQuestionYdtJsService.java

@@ -18,4 +18,6 @@ public interface IQuestionYdtJsService extends IService<QuestionYdtJs>{
      * @return 驾校一点通解释集合
      */
     public List<QuestionYdtJs> selectQuestionYdtJsList(QuestionYdtJs questionYdtJs);
+
+    public List<QuestionYdtJs> selectQuestionYdtJsList2(QuestionYdtJs questionYdtJs);
 }

+ 5 - 0
zzjs-service/src/main/java/com/miaxis/question/service/impl/QuestionYdtJsServiceImpl.java

@@ -32,4 +32,9 @@ public class QuestionYdtJsServiceImpl extends ServiceImpl<QuestionYdtJsMapper, Q
     public List<QuestionYdtJs> selectQuestionYdtJsList(QuestionYdtJs questionYdtJs){
         return questionYdtJsMapper.selectQuestionYdtJsList(questionYdtJs);
     }
+
+    @Override
+    public List<QuestionYdtJs> selectQuestionYdtJsList2(QuestionYdtJs questionYdtJs){
+        return questionYdtJsMapper.selectQuestionYdtJsList2(questionYdtJs);
+    }
 }

+ 5 - 0
zzjs-service/src/main/resources/mapper/ydt/QuestionYdtJsMapper.xml

@@ -52,4 +52,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </where>
     </select>
 
+    <select id="selectQuestionYdtJsList2" parameterType="QuestionYdtJs" resultMap="QuestionYdtJsResult">
+        select * from question_ydt_js where short_video_url is not null and short_video_url !=''
+    </select>
+
+
 </mapper>