创建音乐播放列表的Python模块(windows)

2024-05-16 01:52:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我想创建一个简单的python脚本来查看文件夹和子文件夹,并用包含mp3的文件夹的名称创建一个播放列表。但是到目前为止,我只遇到了在linux上运行的python模块,或者我不知道如何安装它们(pymad)。。在

它只是为我的android手机,所以认为m3u格式应该可以做到。。除了mp3文件的名字,我不在乎其他元数据。在


Tags: 模块文件数据脚本文件夹名称linux格式
2条回答

实际上,我只是看了一下http://en.wikipedia.org/wiki/M3U,发现写m3u文件很容易。。。应该能够用简单的python写入文本文件

这是我的解决方案

import os
import glob

dir = os.getcwd()

for (path, subdirs, files) in os.walk(dir):
    os.chdir(path)
    if glob.glob("*.mp3") != []:
        _m3u = open( os.path.split(path)[1] + ".m3u" , "w" )
        for song in glob.glob("*.mp3"):
            _m3u.write(song + "\n")
        _m3u.close()

os.chdir(dir) # Not really needed.. 

我编写了一些代码,根据您的条件返回所有嵌套播放列表候选列表的列表:

import os

#Input: A path to a folder
#Output: List containing paths to all of the nested folders of path
def getNestedFolderList(path):

    rv = [path]
    ls = os.listdir(path)
    if not ls:
        return rv

    for item in ls:
        itemPath = os.path.join(path,item)
        if os.path.isdir(itemPath):
            rv= rv+getNestedFolderList(itemPath)

    return rv

#Input:  A path to a folder
#Output: (folderName,path,mp3s) if the folder contains mp3s. Else None
def getFolderPlaylist(path):
    mp3s = []
    ls = os.listdir(path)
    for item in ls:
        if item.count('mp3'):
            mp3s.append(item)

    if len(mp3s) > 0:
        folderName = os.path.basename(path)
        return (folderName,path,mp3s)
    else:
        return None

#Input:  A path to a folder
#Output: List of all candidate playlists
def getFolderPlaylists(path):
    rv = []
    nestedFolderList = getNestedFolderList(path)
    for folderPath in nestedFolderList:
        folderPlaylist = getFolderPlaylist(folderPath)
        if folderPlaylist:
            rv.append(folderPlaylist)

    return rv

print getFolderPlaylists('.')

相关问题 更多 >