Python 如何使用 Windows 媒体播放器打开和播放 mp3 文件列表

How can Python open and play a list of mp3 files with Windows Media Player

我想使用 Python 在 Windows 媒体播放器上打开和播放 .mp3 文件列表。我已经能够打开一个文件:

os.startfile(path_to_file)

但我想打开整个播放列表。这类似于选择文件夹中的所有文件,右键单击并选择 'Add to Windows Media Player list'。我会设想这样的事情:

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

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

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

您可以尝试创建一个 .m3u 播放列表文件。遍历文件并以编程方式创建它。我建议查看确切的详细信息,但它们看起来像这样:

#EXTM3U
#EXTINF:1,Artist - Song title 1
D:\path\to\file Song.mp3
#EXTINF:1,Artist - Song title 2
D:\path\to\file Song.mp3

此文件还有一个关联程序,因此您可以使用 os.startfile 打开它。 EXTINF 之后的数字是以秒为单位的曲目长度。由于我试过的播放器会显示正确的时间,因此似乎没有必要绝对正确。不过,WMP 似乎不喜欢 0 值,因此至少应使用 1 值。路径可以是绝对路径也可以是相对路径。

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


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

一旦您了解任务并仅通过命令行使它工作,您就可以尝试使用 subprocess 模块中的内容来执行它。取决于您的 python 版本:

import shlex
import subprocess
from subprocess import PIPE

command = 'wmplayer "c:\filename.wma"'
subprocess.run(shlex.split(command), stdout=PIPE, stderr=PIPE)

不要引用我的话,因为我没有 运行 这个环境,但应该接近那个。您可能想要也可能不想要 stdout=PIPE, stderr=PIPE。这将捕获 out 和 err 输出,因此您可以根据需要打印它们,但如果输出很大,也会很麻烦。