`

哔哩哔哩视频下载,哔哩哔哩动画下载,blibli视频下载电脑

阅读更多

哔哩哔哩视频下载,哔哩哔哩动画下载,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/

1
2
分享到:
评论

相关推荐

    基于Python的“哔哩哔哩视频网“视频热度分析.doc

    基于Python的“哔哩哔哩视频网”视频热度分析 本论文旨在基于Python对哔哩哔哩视频网的视频热度进行分析。哔哩哔哩视频网是目前国内最受欢迎的综合用户网站,其用户忠实度更高,根据其招募报告称,其成员的 12 个月...

    chrome的哔哩哔哩视频下载扩展

    chrome的哔哩哔哩视频下载扩展,可以从哔哩哔哩下载学习教程。

    仿哔哩哔哩

    【标题】"仿哔哩哔哩"项目是一个旨在模仿知名视频分享平台哔哩哔哩(B站)的应用程序。这个项目不仅关注视频播放功能,还包括了直播和弹幕互动等核心特性,旨在为用户提供类似的使用体验。开发者在创建过程中借鉴了...

    仿bilibili哔哩哔哩视频网站主页源码模板

    仿bilibili哔哩哔哩视频网站主页源码模板 仿bilibili网站主页源码 哔哩哔哩(bilibili)现为国内领先的年轻人文化社区,该网站于2009年6月26日创建,被粉丝们亲切的称为“B站”。B站的特色是悬浮于视频上方的实时...

    哔哩哔哩视频解析下载工具.zip

    哔哩哔哩视频解析下载工具 Bilidown 主要功能点 支持 8K 视频、Hi-Res 音频、杜比视界下载 支持批量解析视频 可扫码登录 常驻系统托盘 技术栈 前端采用 Bootstrap 和 VanJS 框架 后端使用 Go 语言开发,数据库采用 ...

    仿哔哩哔哩视频app小程序模板源码

    【标题】"仿哔哩哔哩视频app小程序模板源码" 涉及的主要知识点是微信小程序开发,尤其是针对多媒体视频应用的UI设计与实现。微信小程序是一种轻量级的应用开发平台,它允许开发者在无需安装的情况下提供类似原生App...

    【MATLAB实战应用代码】MATLAB爬取哔哩哔哩视频.zip

    在本资源中,我们关注的是如何使用MATLAB进行实战应用,特别是针对哔哩哔哩(B站)视频的爬取。MATLAB不仅是一款强大的数学计算软件,也具有丰富的编程功能,能够实现网络数据抓取,即所谓的“网络爬虫”。在MATLAB...

    微信小程序仿哔哩哔哩视频站demo完整源码

    【微信小程序仿哔哩哔哩视频站demo完整源码】是一个专为微信小程序开发者设计的项目,它提供了实现类似哔哩哔哩视频站点功能的详细代码。这个源码旨在帮助开发者学习如何在微信小程序平台上构建一个功能丰富的视频...

    仿哔哩哔哩视频播放器源码

    源码介绍: 域名/?url=,如果放在二级目录就是:域名/二级目录名/?url=,支持所有m3u8跟mp4资源,其他没测。 因为一般的采集站都是m3u8资源,所以够用了,播放器logo.... 源码仅供技术参考学习!严禁商业用途!

    仿哔哩哔哩(bilibili)搜索框动画效果

    本教程将探讨如何使用Meterial Design的Circular Reveal技术来实现一个类似哔哩哔哩(bilibili)搜索框的动画效果。这个动画效果使得用户在交互过程中能感受到更加流畅和自然的视觉体验。 Meterial Design是由...

    仿哔哩哔哩视频共享平台设计

    在本项目中,我们将探讨如何设计一个仿照哔哩哔哩(B站)的视频共享平台,主要关注其在微信小程序环境下的实现。B站是中国知名的弹幕视频分享网站,以其丰富的二次元内容、用户互动性强的弹幕功能以及多元化的内容...

    jQuery仿哔哩哔哩视频弹幕代码.zip

    《jQuery仿哔哩哔哩视频弹幕代码解析与实践》 在互联网的娱乐世界中,视频弹幕已经成为一种独特的互动方式,特别是在中国的视频分享平台如哔哩哔哩(B站)上,弹幕文化尤为盛行。它使得观众可以实时发表评论,与...

    基于Html的哔哩哔哩视频投稿CSS设计源码

    哔哩哔哩视频投稿CSS设计源码:该项目基于Html,包含121个文件,其中CSS和JavaScript文件用于实现动态效果。项目内容模块包括CSS、SVG、Echarts、Canvas、Loading合集、动效合集、图表可视化合集等,旨在为哔哩哔哩...

    ios-哔哩哔哩动画.zip

    这个压缩包可能是一个开发者在学习或实践中创建的项目,用来实现类似哔哩哔哩动画应用的功能,例如视频播放、用户交互等。 【描述】提到"第一次玩Swift 写的很乱,见谅",这表明该项目的作者可能是初学者,正在尝试...

    导出哔哩哔哩视频.zip

    哔哩哔哩对视频进行了处理. 将视频,弹幕,音轨分3个文件储存,一直打开文件夹最后会看到video(视频),audio(音频)两个m4s文件,以视频方式打开video只会有视频,没有声音,打开audio只有声音没有视频(T_T). ...

    bilibili-downloader:哔哩哔哩视频下载器 | Yet another video downloader for Bilibili

    基于 Node.js 和 Electron 开发的 Bilibili 视频、弹幕下载器。 功能 目前实现的功能: 根据视频地址查询 aid 和 cid 以及视频详细信息 根据视频 cid 获取视频和弹幕文件的下载地址 下载视频(.flv 或 .mp4)和弹幕...

    B站(哔哩哔哩 blibli.com)深度分析.pdf

    哔哩哔哩(简称B站)是中国知名的年轻人文化社区,以ACG(动画、漫画、游戏)文化为核心,逐步发展成为一个综合性的视频分享平台。本分析报告将深入探讨B站的发展历程、社区框架、业务拓展、竞争优势、商业变现能力...

    模仿哔哩哔哩的视频点播网站源码+项目说明.zip

    模仿哔哩哔哩的视频点播网站源码+项目说明.zip模仿哔哩哔哩的视频点播网站源码+项目说明.zip模仿哔哩哔哩的视频点播网站源码+项目说明.zip模仿哔哩哔哩的视频点播网站源码+项目说明.zip模仿哔哩哔哩的视频点播网站...

    哔哩哔哩视频批量上传软件

    在IT行业中,尤其是数字内容发布领域,哔哩哔哩(B站)作为一个知名的弹幕视频分享网站,已经成为许多创作者和用户分享与观看视频的重要平台。为了方便内容创作者高效地管理并发布他们的作品,专门针对B站设计的...

    哔哩哔哩视频引导网站源码.zip

    《构建哔哩哔哩式视频引导网站:源码解析与应用》 在互联网技术日新月异的今天,音视频内容已经成为网站吸引用户的重要手段。本文将深入探讨一个基于“哔哩哔哩视频引导”概念的网站源码,旨在帮助开发者理解和构建...

Global site tag (gtag.js) - Google Analytics