kux->mp4转码Python3脚本

博主下载的kux转mp4工具运行失败,分析bat文件无果。得知其用ffmpeg转码后,编写Python3脚本实现拖放式转码,生成的mp4文件与kux文件在同路径,在Python3.7.3运行暂未发现问题,还提供了转码工具链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

网络下载了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

侵删。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值