![将 m3u 播放列表导出到目录,以便它们出现在播放列表中](https://linux22.com/image/48373/%E5%B0%86%20m3u%20%E6%92%AD%E6%94%BE%E5%88%97%E8%A1%A8%E5%AF%BC%E5%87%BA%E5%88%B0%E7%9B%AE%E5%BD%95%EF%BC%8C%E4%BB%A5%E4%BE%BF%E5%AE%83%E4%BB%AC%E5%87%BA%E7%8E%B0%E5%9C%A8%E6%92%AD%E6%94%BE%E5%88%97%E8%A1%A8%E4%B8%AD.png)
有一种方法可以rsync m3u 播放列表进入目标目录。
如何处理列表并对输出进行编号,以便它对文件进行排序以匹配播放列表顺序?
例如 m3u:
/music/song-yellow.mp3
/music/song-red.mp3
/music/song-blue.mp3
将复制/rsync播放列表内容,将文件重命名为:
/dest-path/01-song-yellow.mp3
/dest-path/02-song-red.mp3
/dest-path/03-song-blue.mp3
这样我就可以构建混音带播放列表并为人们复制它们。
任何建议表示赞赏。
答案1
尝试这样的事情:
#!/usr/bin/python
FILE = '/home/my-home/my-playlist.m3u'
DIR = '/some-target-directory'
import os.path, shutil, sys
for i, s in enumerate(open(FILE)):
s = s.rstrip()
try:
shutil.copy(s, os.path.join(DIR, '%03d-%s' % (i+1, os.path.basename(s))))
except IOError, e:
sys.stderr.write('warning: %s\n' % e)
# End of file.
显然,根据您的需要FILE
进行设置。DIR
对于过度使用 Python 的行为表示歉意 - 它有助于不必转义所有 shell 喜欢附加特殊含义的字符。
该脚本不会因 I/O 错误而失败,它只会输出警告。除此之外,没有健全性检查(正如您可能看到的)。它也不排除 M3U 的评论。不过,它会很乐意复制您向其输入的任何字符,但 s 和斜杠是明显的例外,NUL
它们是文件系统级别的特殊字符。