# encoding=utf8
#-*-coding:utf-8 -*-

#pip install natsort

import wave
import os
import time
import natsort



# infiles = ["你好_1.mp3", "不好_1.mp3"]
# outfile = "out_put.mp3"
#
# data= []
# for infile in infiles:
#     w = wave.open(infile, 'rb')
#     data.append( [w.getparams(), w.readframes(w.getnframes())] )
#     w.close()
#
# output = wave.open(outfile, 'wb')
# output.setparams(data[0][0])
# output.writeframes(data[0][1])
# output.writeframes(data[1][1])
# output.close()


def hebing(output_path,yinpin_houzui="mp3"):

    allMp3Files = []
    # 开始合并之前,先重命名文件夹下的文件,一般是做去除空格处理
    # reName(orginalFilePath)
    # 合并多个mp3的函数
    for parent, dirnames, filenames in os.walk(output_path):
        for filename in filenames:
            print(filename)
            # 对文件进行重命名
            oldFilePath = os.path.join(parent, filename)
            wenjain_houzu = os.path.splitext(filename)[-1]  #获取文件后缀
            print(wenjain_houzu)
            if yinpin_houzui.lower() in wenjain_houzu.lower():
                allMp3Files.append(oldFilePath)

            # 重命名文件夹下的内容,一般是做去除空格处理
    print(allMp3Files)

    # 因为要用管道命令 ffmpeg -i "concat:{}" -codec copy output.mp3,所以要将列表分割为以|分隔的字符串
    # 实现排序
    # pattern_number_sort = '_?(\d*?).mp3'
    sortedfileList = natsort.natsorted(allMp3Files) # 文件名排序
    print(sortedfileList)

    infiles = sortedfileList
    today_time = time.strftime("%Y-%m-%d", time.localtime(time.time()))
    wenjiajia = output_path.split("\\")[-1]
    outfile = "%s\\%s_hebing_%s.mp3" % (output_path,wenjiajia,today_time)
    print(outfile)
    data = []
    for infile in infiles:
        w = wave.open(infile, 'rb')
        data.append([w.getparams(), w.readframes(w.getnframes())])
        w.close()

    print("data:")
    # print(data)
    print(len(data))
    # print(data[0][0])
    # print(data[1][1])

    output = wave.open(outfile, 'wb')
    output.setparams(data[0][0])
    for i in range(0,len(data)):  #合并各个音频
        output.writeframes(data[i][1])
    output.close()



if __name__ == '__main__':
    genmulu = r"D:\PycharmProjects\xiaoxiaomu\小工具"
    wenjianjia_list = [
        '1-第二部分_第一章',
        '2-第一部分-第一章',
        '3-第一部分-第二和三章',
        '4-第一部分-第四章',
        '5-第一部分_第五章',
        '6-第一部分_第六章',
        '7-第一部分_第七章',
    ]
    zhangjie_list = []
    for one in wenjianjia_list:
        zhangjie_list.append("%s\\%s"%(genmulu,one))

    print(zhangjie_list)
    for one_out_path in zhangjie_list:
        output_path = one_out_path  # 输出目录
        hebing(output_path)

 

posted on 2023-03-09 09:26  大话人生  阅读(196)  评论(0)    收藏  举报