哔哩哔哩UWP下载B站视频,破解,移动到同一个目录下,重命名

最近在B站中学习一些关于Java的技术,发现有的时候网速跟不上,容易出现卡顿,因此想再不用的时候将视频下载保存到本地进行观看,网页版B站没找到相关的下载按钮,于是搜索下载视频相关,找到了哔哩哔哩UWP,这个也是一个客户端,在Microsoft store中进行下载
在这里插入图片描述




下载完成进入首页之后就可以进行搜索视频
在这里插入图片描述

搜索到相关的视频进入到视频详细页

在这里插入图片描述



下滑找到视频的列表选择进行下载

在这里插入图片描述


在这里插入图片描述



这个时候可以进入下载列表页面进行查看下载状况

在这里插入图片描述
第二种查看下载队列
在这里插入图片描述



找到下载地址之后可以查看视频

在这里插入图片描述
我这里下载了15个视频进行举例
找到这15个视频文件
在这里插入图片描述
!!! 这好像不是我想要的东西呀,为什么视频文件不在同一个文件夹下,这样我看完一个还要自己找另一个文件夹打开视频,有点难以接受。
想想能下载已经不错了,勉强接受吧


打开文件夹1
这怎么事,视频的名称怎么没了???
在这里插入图片描述
嗯这个MP4文件应该就是我要的视频,双击打开
???视频出现错误 WTF
csdn查文章
嗯,还要用文本工具打开把前几个空白删了才能观看
删除,双击,成功
嗯,可以,下一个文件夹
WTF 200多个文件夹,我要删到猴年马月
于是我就写了一个Java程序:
从哔哩哔哩UWP中下载的视频,自动化将空白删除以及将所有的文件整合到一个目录下边
我们还要找一下看看能不能找到视频名方便我们快速定位
打开xml文件:嗯,应该是弹幕
打开info文件:不就是你嘛
在这里插入图片描述

package file.info;

import java.io.*;

public class StationBVideoAdjust {

    public static void main(String[] args) {

        // 视频原地址
        String startPath = "原视频目录绝对地址到这一层(\\BilibiliDownload\\80585971)";
        // 视频保存地址
        String videoPath = "视频文件保存的地址";

        File file = new File(startPath);
        File[] files = file.listFiles();

        // 判断文件夹是否存在
        File videoFIle = new File(videoPath);
        if (!videoFIle.exists()) {
            videoFIle.mkdirs();
        }

        String videoName = "";
        assert files != null;
        for (File f : files) {
            if (f.isDirectory()) {
                File[] innerFiles = f.listFiles();
                assert innerFiles != null;
                for (File innerFile : innerFiles) {
                    if (innerFile.getName().endsWith("info")) {
                        // 处理info文件,获取视频名称
                        videoName = handleInfoFile(innerFile);
                    }
                    if (innerFile.getName().endsWith("mp4")) {
                        // 将文件移动
                        moveAndRename(innerFile, videoName, videoPath);
                    }
                }
            }
        }

        // 将文件删除
        delFIle(file);

    }

    /**
     * 删除整个目录
     *
     * @param file 目录文件
     */
    private static void delFIle(File file) {
        if (file == null) {
            throw new NullPointerException("亲, 文件不能为空!");
        }
        if (file.isDirectory()) {
            for (File f : file.listFiles()) {
                delFIle(f);
            }
        }

        file.delete();

    }

    /**
     * 移动文件并且重命名
     *
     * @param innerFile 视频文件
     * @param videoName 从info文件中获取到的文件的名称
     * @param videoPath 视频文件的保存地址
     */
    private static void moveAndRename(File innerFile, String videoName, String videoPath) {

        String fileSavePath = videoPath + "\\" + videoName + ".mp4";
        File file = new File(fileSavePath);
        if (file.exists()) {
            System.out.println(videoName + "已存在!");
            return;
        }
        try (FileInputStream in = new FileInputStream(innerFile); FileOutputStream out = new FileOutputStream(file)) {

            int len = -1;
            byte[] bs1 = new byte[3];
            byte[] bs = new byte[1024 * 10];
            // 第一次执行要删除前三个字符
            in.read(bs1);
            while ((len = in.read(bs)) != -1) {
                out.write(bs, 0, len);
            }
            out.flush();
            System.out.println(videoName + "成功!");
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

    /**
     * 获取视频的名称
     *
     * @param info info文件
     * @return 返回获取到的文件的名称
     */
    private static String handleInfoFile(File info) {
        String str = "";
        char[] c = new char[1024 * 8];
        try (FileReader fReader = new FileReader(info)) {
            fReader.read(c);
            str = new String(c);
            // 查找视频名称的位置
            int videoNameIndex = str.indexOf("\"PartName\":\"") + 12;
            str = str.substring(videoNameIndex);
            int videoNameLast = str.indexOf('\"');
            str = str.substring(0, videoNameLast);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return str;
    }

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
哔哩哔哩UWP的安装包可以在微软商店上找到,它的下载链接是:https://www.microsoft.com/store/productId/9NBLGGH5Q5FV。 你可以通过点击链接进入该页面,然后点击安装即可下载和安装哔哩哔哩UWP应用程序。 另外,如果你在使用哔哩哔哩UWP的过程中遇到了一些常见问题,你可以参考哔哩哔哩UWP官方提供的常见问题页面: https://b.nsapps.***帮助你更好地使用这个应用程序。 如果你需要使用VP9视频扩展来支持更高质量的视频播放,你也可以在微软商店上下载和安装VP9视频扩展,下载链接是:https://www.microsoft.com/store/productId/9N4D0MSMP0PT。 安装VP9视频扩展后,你可以享受更高质量的视频播放体验。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Win10/Win11下图片扩展安装 HEVC/HEIF/CR2等](https://blog.csdn.net/u013130545/article/details/125976932)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [哔哩哔哩UWP Ver4.3.8_x64](https://download.csdn.net/download/Black_Boa/86506997)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值