我想使用Python在Windows Media Player上打开并播放.mp3文件列表。我已经能够打开一个文件:
os.startfile(path_to_file)
但我想打开一个完整的播放列表。这类似于选择文件夹中的所有文件,右键单击并选择“添加到Windows Media Player列表”。我想象的是:
for i in range(NumberOfSongs):
os.startfile(Files[i])
但是这只是循环直到最后一个并且仅播放该曲目。有没有人知道如何使用此功能与文件列表或其他功能,将打开媒体播放器并添加文件列表?
答案 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输出,以便您可以根据需要打印它们,但如果输出很大也会很麻烦。