|  | @@ -21,6 +21,8 @@ import static com.tzld.piaoquan.longarticle.common.constants.ProxyConstant.*;
 | 
	
		
			
				|  |  |  @Slf4j
 | 
	
		
			
				|  |  |  public class VideoDownloader {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    private static final long READ_TIMEOUT_SECONDS = 60; // 读取超时时间(秒)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      private static final int MAX_RETRIES = 3;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      public static String downloadCover(String outVideoId, String platform, String coverUrl) {
 | 
	
	
		
			
				|  | @@ -99,16 +101,21 @@ public class VideoDownloader {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              int responseCode = connection.getResponseCode();
 | 
	
		
			
				|  |  |              if (responseCode == HttpURLConnection.HTTP_OK || responseCode == HttpURLConnection.HTTP_PARTIAL) {
 | 
	
		
			
				|  |  | -                // 下载文件
 | 
	
		
			
				|  |  |                  try (InputStream inputStream = connection.getInputStream();
 | 
	
		
			
				|  |  | -                     OutputStream outputStream = Files.newOutputStream(file.toPath())) { // 追加模式
 | 
	
		
			
				|  |  | -                    byte[] buffer = new byte[1024 * 1024]; // 1MB buffer
 | 
	
		
			
				|  |  | +                     OutputStream outputStream = Files.newOutputStream(file.toPath())) {
 | 
	
		
			
				|  |  | +                    byte[] buffer = new byte[1024 * 1024];
 | 
	
		
			
				|  |  | +                    long lastReadTime = System.currentTimeMillis();
 | 
	
		
			
				|  |  |                      int bytesRead;
 | 
	
		
			
				|  |  |                      while ((bytesRead = inputStream.read(buffer)) != -1) {
 | 
	
		
			
				|  |  |                          outputStream.write(buffer, 0, bytesRead);
 | 
	
		
			
				|  |  | +                        lastReadTime = System.currentTimeMillis();
 | 
	
		
			
				|  |  | +                        // 检查是否长时间没有读取到新数据
 | 
	
		
			
				|  |  | +                        if (System.currentTimeMillis() - lastReadTime > READ_TIMEOUT_SECONDS * 1000) {
 | 
	
		
			
				|  |  | +                            log.error("No data read for a long time, aborting download.");
 | 
	
		
			
				|  |  | +                            break;
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  |                      }
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  | -                // 检查文件是否为空
 | 
	
		
			
				|  |  |                  if (file.length() != 0) {
 | 
	
		
			
				|  |  |                      return 0;
 | 
	
		
			
				|  |  |                  }
 |