网络下载了kux转mp4的工具,是一个工具组加一个批处理文件,按照给定的方法运行,不能成功。
分析了bat文件,无奈功力太浅,不知如何调整。
但通过bat文件得出其是用ffmpeg进行转码的,于是编写了python3脚本,实现了拖放式的转码。
转码生成的mp4文件与对应的kux文件在相同的路径下。
在Python3.7.3运行,暂时没有发现问题。
代码如下
import os
import sys
import pathlib
ffmpeg = pathlib.PurePath('nplayer').joinpath('ffmpeg.exe')
def enum_files(path):
'''
Enum all files in given path, including sub-folders.
'''
#print('Enum', path)
all_files = []
path_name = pathlib.Path(path)
files = os.listdir(path_name)
for file in files:
file = path_name.joinpath(file)
if os.path.isdir(file):
#print('Dir :', file)
all_files += enum_files(file)
else:
#print('File:', file)
all_files.append(file)
files = [str(name) for name in all_files]
return files
def filter_kux(files):
'''
Filter .kux files from given.
'''
kux_files = []
for kux_file_name in files:
if len(kux_file_name) < 5:
#print('Unrecognized file :', kux_file_name)
pass
elif kux_file_name[-4:].lower() == '.kux':
kux_files.append(kux_file_name)
else:
#print('Not a .kux file :', kux_file_name)
pass
return kux_files
def tran(kux_file_name):
'''
Tran a .kux file to a .mp4 one.
'''
kux = kux_file_name
mp4 = kux_file_name[:-4] + '.mp4'
kux = '"' + kux + '"'
mp4 = '"' + mp4 + '"'
command = str(ffmpeg) + ' -y -i ' + kux + ' ' + mp4
print('\n', command)
os.system(command)
return
def tran_multi(kux_files):
'''
Tran multi .kux files to corresponding .mp4 ones.
'''
for file in kux_files:
tran(file)
return
def enum_argv(files):
'''
Enum all files in given file or path by 'files'.
'''
all_files = []
for file in files:
if os.path.isdir(file):
all_files += enum_files(os.path.abspath(file))
else:
all_files.append(os.path.abspath(file))
return all_files
def process(files):
'''
Translate all .kux files in files to .mp4 files.
If files contains folders, try to find .kux files recursively.
'''
all_files = enum_argv(files)
print('共拖放了 ', len(all_files), ' 个文件.')
kux_files = filter_kux(all_files)
print('其中包含 ', len(kux_files), '个 .kux 文件.')
tran_multi(kux_files)
return
if __name__ == '__main__':
if len(sys.argv) == 1:
print("将需要转换的 .kux 文件拖放到 kux2mp4.py 文件图标上释放。")
else:
process(sys.argv[1:])
print("\n****** 转换结束 ******\n")
input('按"回车"退出本程序...')
转码工具如下
https://pan.baidu.com/s/1TPw8QqIozx2TH1OFv1IH-w
提取码 3uwa
侵删。