批量修改bilibili下载视频的文件名
批量修改bilibili下载视频的文件名
<font size=4>
[TOC]
需求
在bilibili上下载了学习视频,bili的客户端看视频非常不方便,习惯用potplayer看视频;但是bili上下载视频的文件名都是类似50200264_1_0.flv
这样格式,所以就修改成bili上对应的详细介绍的文件名,类似01 介绍及快速搭建 Spring Boot 项目
这个格式的。
分析
查看下载视频的目录,发现在视频全集下面分了两层目录
文件目录最底层有三个文件,其中
flv
文件,是视频文件,也是需要重命名的文件;xml
文件记录的是弹幕;info
文件记录的是文件信息,查看info
文件可知,有个 "PartName" 字段记录的是文件名,获取这个字段信息即可。PartName
- 思路
- 遍历视频全集文件夹
- 读取
info
文件,截取"PartName"
字段信息即文件名,排序后将文件名保存到临时文件demo.txt
- 手动修改
demo.txt
文件内容,修改成整齐的格式 - 遍历文件夹,获取
flv
文件的文件名,并截取其中的序号,比如50200264_1_0.flv
,获取中间的序号1
,作为index
- 按行顺序读取
demo.txt
文件,将读取的文件名保存到ArrayList
中,通过步骤4中的index-1
获取 - 重命名
实现
将
info
结尾的文件保存到fileList
中/*** 遍历文件夹,将info结尾的文件保存到fileList中* @param filePath* @return*/ public static List<File> getFileList(String filePath) {File dir = new File(filePath);// 该文件目录下文件全部放入数组File[] files = dir.listFiles();if (files != null) {for (int i = 0; i < files.length; i++) {String fileName = files[i].getName();// 判断是文件还是文件夹if (files[i].isDirectory()) {// 获取文件绝对路径getFileList(files[i].getAbsolutePath());} else if (fileName.endsWith("info")) {// 判断文件名是否是以info结尾String strFileName = files[i].getAbsolutePath();fileList.add(files[i]);} else {continue;}}}return fileList; }
获取“PartName”字段信息,将字符串添加到list列表,并进行排序
/*** 获取“PartName”字段信息,将字符串添加到list列表,并进行排序* @param fileListNew 新的文件列表* @return*/ public static List<String> sortString(List<File> fileListNew) {List<String> strList = new ArrayList<>(16);for (int i = 0; i < fileListNew.size(); i++) {File file = fileListNew.get(i);try {BufferedReader br = new BufferedReader(new FileReader(file));String str;while ((str = br.readLine()) != null) {// 获取“PartName”字段对应的文件名String partName = str.split(",")[18].split(":")[1];// 字文件名添加到ListstrList.add(partName);}} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}// 排序获取到的文件名Collections.sort(strList);return strList; }
将排序后的字符串写入到文件中
/*** 将排序后的字符串写入到文件中* @param newFileName 新文件路径* @param stringList 字符串列表* @throws IOException*/ public static void writeFile(String newFileName, List<String> stringList) throws IOException {FileWriter fw = new FileWriter(newFileName);BufferedWriter bw = new BufferedWriter(fw);for (int i = 0; i < stringList.size(); i++) {String str = stringList.get(i);bw.append(str + "\r\n");}bw.close(); }
将
flv
文件名,保存到fileList
中/*** 遍历文件夹,将flv结尾的文件名,添加到fileList中** @param filePath* @return*/ public List<File> getFileList(String filePath) {File dir = new File(filePath);// 该文件目录下文件全部放入数组File[] files = dir.listFiles();if (files != null) {for (int i = 0; i < files.length; i++) {String fileName = files[i].getName();// 判断是文件还是文件夹if (files[i].isDirectory()) {// 获取文件绝对路径getFileList(files[i].getAbsolutePath());} else if (fileName.endsWith("flv")) {// 判断文件名是否是以flv结尾String strFileName = files[i].getAbsolutePath();// logger.info("strFileName : " + strFileName);fileList.add(files[i]);} else {continue;}}}return fileList; }
从
demo.txt
文件中,获取目标文件名,并添加到List中/*** 读取demo.txt文件,获取目标文件名,并添加到ArrayList中* @param file* @return*/ public List<String> readeFile(File file) {List<String> strList = new ArrayList<>();try {BufferedReader br = new BufferedReader(new FileReader(file));String lines;while ((lines = br.readLine()) != null) {strList.add(lines);}} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return strList; }
读取
demo.txt
文件获取目标文件名,并通过遍历fileList获取flv
文件名,然后重命名/*** 重命名文件* @param demo demo.txt文件*/ public void renameToEnd(File demo) {// 读取demo.txt中的文件名,并保存demoList中List<String> demoList = readeFile(demo);for (int i = 0; i < fileList.size(); i++) {// 获取flv文件File fileOld = fileList.get(i);// 截取flv文件名中的序号String str = fileOld.getName().split("_")[1];// 将String类型的序号转成int类型int anInt = Integer.parseInt(str);// 获取flv文件的路径String newPathTemp = fileOld.getPath().split("57936239_")[0];String newPath = newPathTemp.endsWith("\\") ? newPathTemp : newPathTemp+"\\";// 拼接成新的文件名String newFileName = newPath + demoList.get(anInt-1) + ".flv";// 创建新的文件File dest = new File(newFileName);// 重命名if (fileOld.renameTo(dest)) {System.out.println("重命名成功: " + dest.getName());}} }
结果
修改后的结果如下,需要注意的是,修改文件名后,bilibili的客户端就不能再查看文件了。
修改后的文件名
PotPlayer文件列表展示如下:
PotPlayer播放列表
批量修改bilibili下载视频的文件名相关推荐
- 源码:批量修改喜马拉雅下载节目的文件名
长久未登录CSDN了,发现之前的博文,批量修改喜马拉雅下载节目的文件名下有很多朋友留言,需要代码的人很多,看来有困难的人还不少. 在此,贴出代码,有需要的朋友可以下载使用. 用法: cd 下载目录 ( ...
- C++调用ffmpeg批量合并bilibili缓存视频
文章目录 前言 一.先看效果 二.开始写代码 1.遍历文件 2.获取视频标题和视频名称 3.生成视频 4.主函数 总结 前言 手机bilibili缓存了很多视频,想导入电脑看,但发现缓存的视频被分割成 ...
- 玩点不一样的,如何使用MATLAB实现批量修改文件后缀名,文件名,批量复制文件
1. 自动批量修改文件后缀名,有时非常有用. 对于文件名没有要求,不用是序列文件名.比如需要将abaqus的inp文件修改成txt文件,便于使用 textscan和 textread等函数操作. c ...
- 【精华】批量修改文件夹中的文件名
转载自[批量修改文件名] 原文地址如下:http://t.csdn.cn/tGsfz 1.在所需批量修改文件名的文件夹内新建一个改.txt文件,并在新建的txt文件中输入dir> 1.txt 2 ...
- 怎么批量修改多个视频的尺寸大小?
有大量的视频需要修改视频的尺寸大小,用什么方法可以批量进行操作呢?今天小编就来给大家推荐一个可以批量处理视频的方法,快进来看看吧! 首先大家打开浏览器搜索一下"固乔科技",然后在这 ...
- java批量修改指定目录下的文件名
package io; import java.io.File; import java.io.IOException;/*** @Auther: Code* @Date: 2018/9/9 18:0 ...
- 批量修改多目录下相同文件名的文件内容
目前的情况: 在/data/test/目录中,有很多子目录,每个子目录中都包括一个文件名为"HD"的文件 现在想把所有的HD文件的内容修改成统一的内容,比如"0" ...
- Python使用you-get批量下载bilibili网站视频
需要安装python,然后pip install you-get. 安装步骤在官方说明上很清楚,就不写了. 使用 you-get --playlist -o F:\bilibili https:// ...
- 【Python】批量修改照片文件名为拍摄日期
更新2022.09.09 代码已经大幅更新,需要的同学可以去这篇博客自取. 更新 2021.05.07 合并了修改照片的拍摄日期和文件名功能,请看:批量修改照片的拍摄日期和文件名 需求 最近整理老照片 ...
- 【Python】批量修改照片日期
更新2022.09.09 代码已经大幅更新,需要的同学可以去这篇博客自取. 更新 2021.05.07 合并了修改照片的拍摄日期和文件名功能,请看:批量修改照片的拍摄日期和文件名 需求 最近整理老照片 ...
最新文章
- 大数据为何让传统银行焦虑?
- OpenGL vs D3D
- Hadoop 2.0联邦机制
- 【Python Turtle合集】有趣好玩的代码当然要分享给大家啦~(皮卡丘、玫瑰花、小黄人......)
- 利用oc门或od门实现线与_景县专业门球场专用人造草坪甄选博翔远
- linux 查看和修改文件编码的方法
- 学习笔记----周志华《机器学习》第五章(神经网络)(一)
- Mac-ios下JDK的安装路径(java)
- Maven deploy部署jar到远程私服仓库
- MySQL多实例配置
- strncpy 用法
- warning C4819: The file contains a character that cannot be represented in the current code page
- 中国主要的区块链公司以及融资情况
- C语言中按位取反操作符详解
- 针对HTTPS网页打开缓慢或者打不开的问题
- swift 指定区域截图,自定义不规则图形截图
- 小程序uv访客怎么刷_微信小程序获取访客数据-使用攻略
- [日常] Go语言圣经前言
- win10进不了BIOS界面
- eovs实训报告总结心得_实训报告心得体会
热门文章
- 设计原则与设计模式定义
- xamp:在shell中运行mysql
- python msproject_MS Project(*.mpp文件)到PowerBi
- 培根芦笋卷+蚝油家常豆腐+春笋甜椒拌饭
- BouncyCastle使用注意事项
- ICPCCamp 2016 Day 6 - Spb SU and Spb AU Contest(Colored path-dp)
- 【百度】怎么使用cookie登陆百度账号
- 淘宝API 如何获取颜色 尺码 属性表
- leetcode33. 搜索旋转排序数组
- 从coursera网站自动下载网课视频(Linux中bash操作)