美文网首页
使用Python为Walkman生成歌单文件(.M3U8)

使用Python为Walkman生成歌单文件(.M3U8)

作者: 拾实 | 来源:发表于2020-03-30 12:52 被阅读0次

    我平时大多时候都是用Walkman听歌,摆脱了电脑的束缚但也有个很大的缺点:
    Walkman的播放列表,也就是我们常说的歌单只能一首一首地往里面添加歌曲,相对pc端的各大主流播放器确实麻烦了不少。
    在一次向Walkman里传输歌曲的过程中,发现SD卡里有一些.M3U8格式的文件,并且文件名与我播放器里的播放列表一致,使用文本编辑器打开:


    除开不认识的#EXTM3U#EXTINF:,里面存放的就是播放列表里每首歌的路径。
    那么,如果我们按照此格式向文件里写入歌曲的路径,是不是就能通过写文件的方式将歌曲存入歌单呢,在验证后得出的答案是肯定的。

    对于播放器里歌曲较多的人来说,手动添加至播放列表无疑是低效的,于是我选择了用python来‘代替’我做这件事情,思路是:遍历播放器指定文件夹里的音乐文件然后按照上面的格式将其写入.M3U8文件
    当然这其中有一个很重要的前提:播放器中的歌曲是按照类别分了文件夹的!
    不然下面的代码没有意义。

    完整代码

    先放出完整代码,后面会进行一些说明。

    import os
    
    rootpath = r'G:\MUSIC'
    tarPath = r'G:\MUSIC\华语'
    name = "华语"
    fmList = ['.flac', '.mp3', '.m4a', '.wav', '.dsf', '.ape', '.FLAC', '.WAV', '.DSF', '.APE']
    mList = []
    
    def walkDir(tarPath, rootpath=rootpath):
        tpList = os.listdir(tarPath)
        for each in tpList:
            if os.path.isdir(tarPath+'\\'+each):
                walkDir(tarPath+'\\'+each)
            else:
                mList.append((tarPath.lstrip(rootpath)+'/'+each).replace('\\', '/'))
    
    def m3uGen(title):
        with open('{}.M3U8'.format(title), 'w+', encoding='utf-8') as f:
            f.write('#EXTM3U\n')
            for each in mList:
                if os.path.splitext(each)[1] in fmList:
                    f.write('#EXTINF:,\n'+each+'\n')
    
    os.chdir(rootpath)
    walkDir(tarPath)
    m3uGen(name)
    

    一些变量名和配置

    • rootpath:播放器接入电脑后存放音乐的根目录,同时也是歌单文件(.M3U8)所在目录。
    • tarPath:某一类别的歌曲所在的文件夹,这些歌曲将会写入你准备新建的歌单。
    • name:新建歌单的歌单名,不用添加后缀。
    • fmList中预存了一些音乐文件的格式,如果还有其他格式,添加进去即可。

    若你有其他的生成歌单的方式,欢迎在评论区一起讨论。

    相关文章

      网友评论

          本文标题:使用Python为Walkman生成歌单文件(.M3U8)

          本文链接:https://www.haomeiwen.com/subject/ksnmuhtx.html