Python如何使用Windows Media Player打开并播放mp3文件列表

时间:2018-03-02 22:47:25

标签: python list mp3 windows-media-player

我想使用Python在Windows Media Player上打开并播放.mp3文件列表。我已经能够打开一个文件:

os.startfile(path_to_file)

但我想打开一个完整的播放列表。这类似于选择文件夹中的所有文件,右键单击并选择“添加到Windows Media Player列表”。我想象的是:

for i in range(NumberOfSongs): 
    os.startfile(Files[i])

但是这只是循环直到最后一个并且仅播放该曲目。有没有人知道如何使用此功能与文件列表或其他功能,将打开媒体播放器并添加文件列表?

1 个答案:

答案 0 :(得分:2)

os.startfile将使用默认的关联程序打开文件,类似于双击时发生的情况。你可以试试几件事。

您可以尝试创建List<Node> myList = ...; // your list myList.sort(Comparators.comparing(node -> node.data)); 播放列表文件。迭代文件并以编程方式创建它。我建议查找确切的详细信息,但它们看起来像这样:

.m3u

此文件还有一个关联的程序,因此您可以使用#EXTM3U #EXTINF:1,Artist - Song title 1 D:\path\to\file\01 Song.mp3 #EXTINF:1,Artist - Song title 2 D:\path\to\file\02 Song.mp3 打开它。 os.startfile之后的数字是以秒为单位的曲目长度。似乎没有必要使这个正确,因为我尝试的玩家会显示正确的时间。 WMP似乎不喜欢0的值,因此应该使用至少为1的值。路径可以是绝对路径也可以是相对路径。

如果您需要,还有.m3u8 UTF-8版本。

您拥有的另一个选项是尝试查找要执行的命令以添加到WMP播放列表。 This似乎是WMP可用的命令。你可能想要EXTINF一个?他们没有使用它的完整示例,也不清楚是否可以将其与打开文件混合使用。

一旦您知道了任务并从命令行开始工作,您就可以尝试使用subprocess模块中的某些内容来执行它。取决于您的python版本:

/Task NowPlaying

请不要引用我的引号,因为我没有完全具备运行环境的环境,但应该接近这一点。您可能想要也可能不想要import shlex import subprocess from subprocess import PIPE command = 'wmplayer "c:\filename.wma"' subprocess.run(shlex.split(command), stdout=PIPE, stderr=PIPE) 。这将捕获out和err输出,以便您可以根据需要打印它们,但如果输出很大也会很麻烦。