最近惊奇的发现现在b站上越来越多的教程视频,突然感觉一波正能量啊,但是下载起来不是很方便啊!经过一番搜罗,发现还是有不少方法的,什么加各种字母的,还有各种插件的,倒也确实能用感觉很别扭,有些也不是原画质的。感觉还不是很方便。
其中有一个比较靠谱,就是bilibili官方的,通过windows商店安装,可以缓存到本地的
下载下来就是正常的视频格式,还是挺不错的,但是文件名很鸡肋,各种数字,看起来不方便,长这个样子,但是至少视频是可以正常播放的。
于是写个脚本规整一下,各种问题圆满解决,可以下载各种合集。一键命名打包。
import os
import json
import shutil
def get_sub_dir_names(file_dir):
for root, dirs, files in os.walk(file_dir):
return dirs
def get_sub_file_names(file_dir):
for root, dirs, files in os.walk(file_dir):
return files
def makedir(dir_name):
# 创建文件夹
if not os.path.exists(dir_name):
os.makedirs(dir_name)
print("---------------------------")
print("文件夹创建成功!")
print(dir_path)
print("---------------------------")
if __name__ == "__main__":
file_format = '.flv' # 文件格式
srcFile = "E:\\BiliBili" # 文件所在目录
title = "" # 文件标题
dir_title = "" # 新目录名
dir_path = "E:\\BiliBili" # 新路径
catalog = [] # 最后目录
dir_names = get_sub_dir_names(srcFile)
for path in dir_names:
file_path = os.path.join(srcFile, path)
file_names = get_sub_file_names(file_path)
for info_file_name in file_names:
info_file_path = os.path.join(file_path, info_file_name)
if info_file_path.endswith("info"):
info_file = open(info_file_path, encoding='UTF-8')
info = info_file.read()
title = json.loads(info)["PartName"]
catalog.append(title)
if not dir_title.strip():
# 创建文件夹
dir_title = json.loads(info)["Title"]
dir_path = os.path.join(dir_path, dir_title)
makedir(dir_path)
print(dir_path)
info_file.close()
for info_file_name in file_names:
info_file_path = os.path.join(file_path, info_file_name)
if info_file_path.endswith(file_format):
new_file_name = os.path.join(file_path, title) + file_format
# 改名
os.rename(info_file_path, new_file_name)
# 移动
shutil.move(new_file_name, dir_path)
# 生成目录
write_catalog = open(dir_path + "\\catalog.txt", "w")
catalog.sort()
for title in catalog:
write_catalog.write(title + "\n")
print(title)
write_catalog.close()
最后就可以得到一个文件夹和一个合集下的视频,是不是很方便!
一些老视频也有可能会有多个文件,就需要拼接什么的,但目前发现大部分都是单个的。
如果遇到需要拼接的情况,可以自行用下面的地址下载拼接脚本,但是耗时会比较长了!