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

我平时大多时候都是用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))