哔哩哔哩视频下载,哔哩哔哩动画下载,blibli视频下载电脑
哔哩哔哩视频重命名
================================
©Copyright 蕃薯耀 2021-02-26
http://fanshuyao.iteye.com/
没图片,请移步:
https://www.cnblogs.com/fanshuyao/p/14451413.html
哔哩哔哩视频下载需要使用电脑软件:哔哩哔哩动画
一、哔哩哔哩动画,当前版本是: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
二、通过软件下载的视频不规范,需要重命名哔哩哔哩视频的名称
每个视频都生成一个目录,太杂乱
文件夹下的视频名称很不明确
三、通过软件整理视频的名称
整理后的效果:
软件下载地址:
链接: 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
http://fanshuyao.iteye.com/
相关推荐
哔哩哔哩(简称B站)是中国知名的年轻人文化社区,以ACG(动画、漫画、游戏)文化为核心,逐步发展成为一个综合性的视频分享平台。本分析报告将深入探讨B站的发展历程、社区框架、业务拓展、竞争优势、商业变现能力...
在当今互联网时代,视频内容的消费已经成为了日常生活的一部分,而B站(哔哩哔哩)作为年轻人喜爱的视频分享平台,集聚了大量的用户和丰富多样的内容。随着用户对平台内容的喜爱和需求,一款能够下载B站视频的工具...
在IT行业中,动态横幅广告是网页设计中的一个重要元素,尤其在像Bilibili这样的视频分享网站上,吸引用户注意力的动态横幅可以提升用户体验,增加互动性。本项目是针对Bilibili首页动态横幅广告的一个个人实现,旨在...
内容概要:本文详细介绍了LabVIEW控件的设计与实现,尤其是一些由经验丰富的老工程师精心打造的控件。LabVIEW是一款图形化编程语言,广泛应用于数据采集、仪器控制和工业自动化领域。文中通过具体实例展示了如何利用LabVIEW创建美观且功能强大的控件,如滑动条、波形图、金属质感旋钮、动态波形图表以及智能选项卡等。作者强调了LabVIEW控件在灵活性和美观度方面的优势,并分享了许多实用的技术细节和优化方法。 适合人群:具有一定编程基础并希望深入了解LabVIEW控件设计的开发者和技术爱好者。 使用场景及目标:适用于需要进行高效的数据展示和交互设计的应用场景,如工业控制系统、实验室设备操作界面等。目标是帮助用户掌握LabVIEW控件的高级特性,提高开发效率和用户体验。 其他说明:文章不仅提供了具体的代码示例,还探讨了控件美学背后的设计理念和技术实现,鼓励读者探索更多可能性。
Delphi 12.3控件之unidac_10.4.0_d27pro.exe
11.盛趣自闭面(还是自己太菜).txt
58面经面试过程和题目.txt
电大操作系统课后习题解答
人工智能技术与应用演讲【61页PPT】
chromedriver-mac-arm64-135.0.7049.41.zip
内容概要:本文详细介绍了QPSK(四相移键控)调制方法及其在瑞利信道和高斯白噪声信道下的误码率(BER)性能分析。首先展示了QPSK星座图的绘制方法,接着构建了一个简化的QPSK发射机模型,用于将二进制比特流映射到相应的星座点。随后,分别实现了两种信道模型:高斯白噪声信道(AWGN)和瑞利信道,并解释了它们的工作原理以及如何向传输信号添加噪声。文中还提供了详细的误码率测试脚本,通过大量随机比特进行仿真,最终得到了不同信噪比条件下的误码率曲线。此外,作者还讨论了QPSK与其他调制方式如BPSK、16QAM之间的性能差异,强调了频谱效率与抗噪能力之间的权衡关系。 适合人群:对无线通信系统感兴趣的科研人员、研究生以及从事通信工程领域的工程师。 使用场景及目标:①帮助读者理解QPSK的基本原理及其在不同信道环境中的行为特性;②提供实用的Python代码片段,便于快速搭建仿真环境并验证理论结果;③探讨各种调制方式的选择依据,指导实际应用中的优化决策。 其他说明:文中多次提到‘骚操作’,意指一些巧妙但非传统的编程技巧,有助于提高代码执行效率或简化复杂度。同时提醒读者注意仿真过程中可能出现的问题,如
新建 Microsoft Word 文档 (9).docx
计算机科学与技术- 软件开发工具 培训资料
bitcount统计每个元素中设置的位数 B = bitcount(A) Counts the number '1' bits in each element B = bitcount(A, bitValue) "bitValue" = 1 = default = counts the occurance of '1' if bitValue = 0; counts the number '0' The total bits to verify is [8,16,32,or 64] based on the maximal value of A B = bitcount(A, bitValue, maxBits) the total # of bits to examine
MOM生产运营管理平台解决方案【35页PPT】
deli-数码录音电话机-HCD6238(28)P-TSD-使用说明书
Java项目基于ssm框架的课程设计,包含LW+ppt
Delphi 12.3控件之Tsilang 7.5.0.0 D12.7z
ios+UIButton分类+UIButton+UIButton图片文字位置
项目已获导师指导并通过的高分毕业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行!可以放心下载