From: ghost Date: Fri, 29 May 2009 15:02:39 +0000 (+0200) Subject: Merge branch 'master' of git.opendreambox.org:/git/enigma2 X-Git-Url: http://code.vuplus.com/gitweb/?p=vuplus_dvbapp;a=commitdiff_plain;h=428e33acd1d58d08045993554b81be20b53eb5c4;hp=a21f25ae8419e0630def1e4ef78c234ae5ca92d5 Merge branch 'master' of git.opendreambox.org:/git/enigma2 --- diff --git a/lib/python/Components/Playlist.py b/lib/python/Components/Playlist.py index c9ebe47..8d9d78a 100644 --- a/lib/python/Components/Playlist.py +++ b/lib/python/Components/Playlist.py @@ -1,7 +1,8 @@ from ServiceReference import ServiceReference +from enigma import eServiceReference import os -class PlaylistIO: +class PlaylistIO: def __init__(self): self.list = [] @@ -15,6 +16,8 @@ class PlaylistIO: ERROR = 3 UNSUPPORTED_FILES_IN_PLAYLIST = 4 + REMOTE_PROTOS = ["http", "https", "udp", "rtsp", "rtp", "mmp"] + def save(self, filename = None): return self.ERROR @@ -23,12 +26,22 @@ class PlaylistIO: def addService(self, service): self.list.append(service) - - + + def getRef(self, filename, entry): + if entry[0] == "/": + path = entry + else: + path = os.path.dirname(filename) + "/" + entry + for proto in self.REMOTE_PROTOS: + if entry.startswith(proto): + path = entry + ref = eServiceReference(4097, 0, path) + return ServiceReference(ref) + class PlaylistIOInternal(PlaylistIO): def __init__(self): PlaylistIO.__init__(self) - + def open(self, filename): self.clear() try: @@ -73,12 +86,7 @@ class PlaylistIOM3U(PlaylistIO): self.displayname = extinf[1] # TODO: use e2 facilities to create a service ref from file elif entry[0] != "#": - if entry[0] == "/": - sref = ServiceReference("4097:0:0:0:0:0:0:0:0:0:" + entry) - elif entry.startswith("http"): - sref = ServiceReference("4097:0:0:0:0:0:0:0:0:0:" + entry.replace(':',"%3a")) - else: - sref = ServiceReference("4097:0:0:0:0:0:0:0:0:0:" + os.path.dirname(filename) + "/" + entry) + sref = PlaylistIO.getRef(self, filename, entry) if self.displayname: sref.ref.setName(self.displayname) self.displayname = None @@ -108,11 +116,8 @@ class PlaylistIOPLS(PlaylistIO): if entry[0:4] == "File": pos = entry.find('=') + 1 newentry = entry[pos:] - # TODO: use e2 facilities to create a service ref from file - if newentry[0] == "/": - self.addService(ServiceReference("4097:0:0:0:0:0:0:0:0:0:" + newentry)) - else: - self.addService(ServiceReference("4097:0:0:0:0:0:0:0:0:0:" + os.path.dirname(filename) + "/" + newentry)) + sref = PlaylistIO.getRef(self, filename, newentry) + self.addService(sref) else: playlist = PlaylistIOM3U() return playlist.open(filename) diff --git a/lib/service/servicemp3.cpp b/lib/service/servicemp3.cpp index 1f3e2d0..b3f9974 100644 --- a/lib/service/servicemp3.cpp +++ b/lib/service/servicemp3.cpp @@ -250,7 +250,7 @@ eServiceMP3::eServiceMP3(const char *filename, const char *title): m_filename(fi sourceinfo.containertype = ctVCD; sourceinfo.is_video = TRUE; } - if ( (strncmp(filename, "http://", 7)) == 0 || (strncmp(filename, "udp://", 6)) == 0 || (strncmp(filename, "rtsp://", 7)) == 0 ) + if ( (strncmp(filename, "http://", 7)) == 0 || (strncmp(filename, "udp://", 6)) == 0 || (strncmp(filename, "rtp://", 6)) == 0 || (strncmp(filename, "https://", 8)) == 0 || (strncmp(filename, "mms://", 6)) == 0 || (strncmp(filename, "rtsp://", 7)) == 0 ) sourceinfo.is_streaming = TRUE; gchar *uri;