嗶哩嗶哩視頻下載,嗶哩嗶哩動畫下載,blibli視頻下載到電腦
嗶哩嗶哩視頻重命名
bilibili UWP客戶端下載的視頻重命名
================================
©Copyright 蕃薯耀 2021-02-26
https://www.cnblogs.com/fanshuyao/
嗶哩嗶哩視頻下載需要使用電腦軟件:嗶哩嗶哩動畫
一、嗶哩嗶哩動畫,當前版本是:v2.13.10,微軟官網下載地址:
https://www.microsoft.com/zh-cn/p/%e5%93%94%e5%93%a9%e5%93%94%e5%93%a9%e5%8a%a8%e7%94%bb/9nblggh5q5fv?activetab=pivot:overviewtab

二、通過軟件下載的視頻不規范,需要重命名嗶哩嗶哩視頻的名稱
每個視頻都生成一個目錄,太雜亂

文件夾下的視頻名稱很不明確

三、通過軟件重命名blibli的視頻文件
整理后的效果:

軟件下載地址:
鏈接: https://pan.baidu.com/s/1PB6C5AczNEF9kPw7FnetuQ 提取碼: vdvw
軟件基於Jdk8運行使用:

軟件運行截圖:
四、核心代碼
import java.io.File; import java.util.Date; import java.util.LinkedList; import java.util.Map; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.stereotype.Service; import com.lqy.blibli.video.VideoComparator; import com.lqy.blibli.video.service.VideoService; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.io.FileUtil; import cn.hutool.json.JSONUtil; @Service public class VideoServiceImpl implements VideoService{ private Log log = LogFactory.getLog(getClass()); @Override public void saveVideos(String sourcePath, String destinationPath) { log.info("sourcePath=" + sourcePath); log.info("destinationPath=" + destinationPath); if(StringUtils.isBlank(sourcePath)) { throw new RuntimeException("源路徑不能為空"); } File sourceDir = new File(sourcePath); if(!sourceDir.exists()) { throw new RuntimeException("源路徑不存在"); } if(!sourceDir.isDirectory()) { throw new RuntimeException("源路徑不是文件夾"); } File[] files = sourceDir.listFiles(); if(files == null || files.length < 1) { log.warn("源路徑無文件"); throw new RuntimeException("源路徑無文件"); } String destinationPathDirName = ""; LinkedList<File> dirFiles = new LinkedList<File>(); //獲取文件和主目錄名 for (File file : files) { if(file.isFile()) {//文件 String fileName = file.getName(); if(fileName.endsWith(".dvi")) { String dviFileString = FileUtil.readUtf8String(file); if(!StringUtils.isBlank(dviFileString)) { @SuppressWarnings("unchecked") Map<String, Object> dviMap = JSONUtil.toBean(dviFileString, Map.class); destinationPathDirName = (String) dviMap.get("Title"); } }else { continue; } }else { dirFiles.add(file); } } if(StringUtils.isBlank(destinationPathDirName)) { destinationPathDirName = new Date().getTime() + ""; } if(StringUtils.isBlank(destinationPath)) { destinationPath = sourceDir.getParent() + File.separator + destinationPathDirName; } //創建目標文件夾 if(!StringUtils.isBlank(destinationPath)) { File destinationPathDir = new File(destinationPath); if(!destinationPathDir.exists()) { destinationPathDir.mkdirs(); } } //對dirFiles排序 CollectionUtil.sort(dirFiles, new VideoComparator()); //復制文件 for (File dirFile : dirFiles) {//循環目錄 log.warn("dirFile=" + dirFile.getAbsolutePath()); String dirFileName = dirFile.getName(); log.warn("dirFileName=" + dirFileName); File videoFile = null; String videoName = ""; File[] videoFiles = dirFile.listFiles(); for (File file : videoFiles) { String fileName = file.getName(); log.warn("fileName=" + fileName); if(fileName.endsWith(".mp4")) { videoFile = file; continue; } if(StringUtils.isBlank(videoName)) { if(fileName.endsWith(".info")) { String infoFileString = FileUtil.readUtf8String(file); if(!StringUtils.isBlank(infoFileString)) { @SuppressWarnings("unchecked") Map<String, Object> dviMap = JSONUtil.toBean(infoFileString, Map.class); String PartName = (String) dviMap.get("PartName"); log.warn("PartName=" + PartName); String prefix = this.getNamePrefix(dirFileName); log.warn("prefix=" + prefix); if(StringUtils.isNotBlank(PartName)) { videoName = prefix + PartName; }else { videoName = prefix + fileName; } } } } } if(videoFile != null) { String destinationFile = destinationPath + File.separator + videoName + ".mp4"; log.info("destinationFile=" + destinationFile); FileUtil.copy(videoFile, new File(destinationFile), true); log.info("++++++++++++++++++++++++++++++++++++++++++++++"); } } log.info("================結束================"); } private synchronized String getNamePrefix(String number) { Integer num = Integer.parseInt(number); String numString = ""; if(num < 10) { numString = "00"; } if(num >= 10 && num < 100) { numString = "0"; } String name = numString + num + "-"; //log.info("number=" +number); //log.info("name=" +name); return name; } }

(如果文章對您有所幫助,歡迎捐贈,^_^)
================================
©Copyright 蕃薯耀 2021-02-26
https://www.cnblogs.com/fanshuyao/
