2011-02-01 63 views
1

如果库支持不同的播放列表格式,如M3U,WPL等,您推荐阅读(解析)多媒体播放列表文件的哪些库?在Python中读取多媒体播放列表文件(库)

对于Python我发现这个页面http://wiki.python.org/moin/PythonInMusic,这指向m3ute2项目,但它似乎已经死了。

+0

我在尝试为Python找到多媒体库时的经验是支持很差。 – 2011-02-01 03:07:06

+0

格式为纯文本格式,因此您应该可以编写自己的解析器,而不会有太多麻烦。 – misha 2011-02-01 04:35:23

回答

0

像Misha说的,他们是纯文本文件,所以你可以很容易地解析它们。

这是我不久前鞭打的一个快速python脚本,用于解析m3u文件并计算总播放时间以及以分钟为单位打印长度:秒和播放列表中每首歌曲的名称。

#!/usr/local/bin/python 

import string, sys 

def sec_to_days(seconds) : 
    return seconds/86400 

def sec_to_hours(seconds) : 
    return seconds/3600 

def sec_to_minutes(seconds) : 
    return seconds/60 

def sec_to_minutes_seconds(seconds) : 
    minutes = sec_to_minutes(seconds) 
    sec = seconds % 60 
    return "%(n1)02d:%(n2)02d" % {"n1": minutes, "n2": sec} 

# If no arguments were given, print a helpful message 
if len(sys.argv)==1: 
    print 'Usage: m3utime filename.m3u' 

    sys.exit(0) 

filename = sys.argv[1] 

items = [line.replace("#EXTINF:", "").strip() for line in file(filename) if line.startswith('#EXTINF')] 

splitList = [line.split(",") for line in items ] 

time = 0 
for s in splitList : time = time + int(s[0]) 

days = sec_to_days(time) 
hours = sec_to_hours(time) - (days * 24) 
minutes = sec_to_minutes(time) - (days * 1440) - (hours * 60) 
seconds = time % 60 

print filename + " : " + str(time) + "s\n" 

for s in splitList : 
    print sec_to_minutes_seconds(int(s[0])), s[1] 

print 

print "Total play time : " + str(days) + ":" + str(hours) + ":" + str(minutes) + ":" + str(seconds) + "\n"