1 from ServiceReference import ServiceReference
8 # returns a list of services or None if filename is not a valid playlist
9 def open(self, filename):
16 UNSUPPORTED_FILES_IN_PLAYLIST = 4
18 def save(self, filename = None):
24 def addService(self, service):
25 self.list.append(service)
28 class PlaylistIOInternal(PlaylistIO):
30 PlaylistIO.__init__(self)
32 def open(self, filename):
35 file = open(filename, "r")
39 entry = file.readline().strip()
42 self.addService(ServiceReference(entry))
46 def save(self, filename = None):
47 print "Writing playlist into file", filename
48 file = open(filename, "w")
50 file.write(str(x) + "\n")
55 class PlaylistIOM3U(PlaylistIO):
57 PlaylistIO.__init__(self)
59 def open(self, filename):
61 self.displayname = None
63 file = open(filename, "r")
67 entry = file.readline().strip()
70 if entry.startswith("#EXTINF:"):
71 extinf = entry.split(',',1)
73 self.displayname = extinf[1]
74 # TODO: use e2 facilities to create a service ref from file
76 remote_protos = ["http", "https", "udp", "rtsp", "rtp", "mmp"]
78 sref = ServiceReference("4097:0:0:0:0:0:0:0:0:0:" + entry)
80 sref = ServiceReference("4097:0:0:0:0:0:0:0:0:0:" + os.path.dirname(filename) + "/" + entry)
81 for proto in remote_protos:
82 if entry.startswith(proto):
83 sref = ServiceReference("4097:0:0:0:0:0:0:0:0:0:" + entry.replace(':',"%3a"))
85 sref.ref.setName(self.displayname)
86 self.displayname = None
91 def save(self, filename = None):
94 class PlaylistIOPLS(PlaylistIO):
96 PlaylistIO.__init__(self)
98 def open(self, filename):
101 file = open(filename, "r")
104 entry = file.readline().strip()
105 if entry == "[playlist]": # extended pls
107 entry = file.readline().strip()
110 if entry[0:4] == "File":
111 pos = entry.find('=') + 1
112 newentry = entry[pos:]
113 # TODO: use e2 facilities to create a service ref from file
114 if newentry[0] == "/":
115 self.addService(ServiceReference("4097:0:0:0:0:0:0:0:0:0:" + newentry))
117 self.addService(ServiceReference("4097:0:0:0:0:0:0:0:0:0:" + os.path.dirname(filename) + "/" + newentry))
119 playlist = PlaylistIOM3U()
120 return playlist.open(filename)
124 def save(self, filename = None):