01dbcc9f73ecdf2d1ba7cf04bdcf0739746afa8c
[vpproxy.git] / plugins / modules / M3uParser.py
1 # more info on the M3U file format available here:
2 # http://n4k3d.com/the-m3u-file-format/
3
4 import sys
5
6 class track():
7     def __init__(self, length, title, path):
8         self.length = length
9         self.title = title
10         self.path = path
11
12
13 # # # song info lines are formatted like:
14 #EXTINF:419,Alice In Chains - Rotten Apple
15 # length (seconds)
16 # Song title
17 # # # file name - relative or absolute path of file
18 # ..\Minus The Bear - Planet of Ice\Minus The Bear_Planet of Ice_01_Burying Luck.mp3
19 def parseM3U(infile):
20     inf = open(infile,'r')
21
22     # # # all m3u files should start with this line:
23         #EXTM3U
24     # this is not a valid M3U and we should stop..
25     line = inf.readline()
26     if not line.startswith('#EXTM3U'):
27        return
28
29     # initialize playlist variables before reading file
30     playlist=[]
31     song=track(None,None,None)
32
33     for line in inf:
34         line=line.strip()
35         if line.startswith('#EXTINF:'):
36             # pull length and title from #EXTINF line
37             length,title=line.split('#EXTINF:')[1].split(',',1)
38             song=track(length,title,None)
39         elif (len(line) != 0):
40             # pull song path from all other, non-blank lines
41             song.path=line
42             playlist.append(song)
43
44             # reset the song variable so it doesn't use the same EXTINF more than once
45             song=track(None,None,None)
46
47     inf.close()
48
49     return playlist
50
51 # for now, just pull the track info and print it onscreen
52 # get the M3U file path from the first command line argument
53 def main():
54     m3ufile=sys.argv[1]
55     playlist = parseM3U(m3ufile)
56     for track in playlist:
57         print (track.title, track.length, track.path)
58
59 if __name__ == '__main__':
60     main()
61