1 from enigma import eServiceReference, iServiceInformation, eServiceCenter
2 from Components.Sources.Source import Source
3 from ServiceReference import ServiceReference
4 from Components.FileList import FileList
5 from os import path as os_path
13 def __init__(self, session,func = LIST):
16 self.session = session
17 error = "unknown command (%s)" % func
18 self.result = [[error,error,error]]
20 def handleCommand(self,cmd):
22 if self.func is self.LIST:
23 self.result = self.getFileList(cmd)
24 elif self.func is self.PLAY:
25 self.result = self.playFile(cmd)
26 elif self.func is self.COMMAND:
27 self.result = self.command(cmd)
28 elif self.func is self.WRITEPLAYLIST:
29 self.result = self.writePlaylist(cmd)
32 # See is the Link is still active
33 if self.session.mediaplayer is not None:
35 test = len(self.session.mediaplayer.playlist)
40 # Link inactive, instantiate new MP
42 from Plugins.Extensions.MediaPlayer.plugin import MediaPlayer, MyPlayList
43 self.session.mediaplayer = self.session.open(MediaPlayer)
44 self.session.mediaplayer.playlist = MyPlayList()
48 except ImportError, ie:
51 def getFileList(self,param):
52 print "getFileList:",param
56 if param["path"] == "playlist":
57 # TODO: Fix dummy return if unable to load mp
58 if not self.tryOpenMP():
59 returnList.append(["empty","True","playlist"])
62 mp = self.session.mediaplayer
63 if len(mp.playlist) != 0:
64 serviceRefList = mp.playlist.getServiceRefList()
65 for count in range(len(serviceRefList)):
66 returnList.append([serviceRefList[count].toString(),"True","playlist"])
68 returnList.append(["empty","True","playlist"])
72 matchingPattern = "(?i)^.*\.(mp3|ogg|ts|wav|wave|m3u|pls|e2pls|mpg|vob)" #MediaPlayer-Match
74 if param["types"] == "audio":
75 matchingPattern = "(?i)^.*\.(mp3|ogg|wav|wave|m3u|pls|e2pls)"
77 elif param["types"] == "video":
78 matchingPattern = "(?i)^.*\.(ts|avi|mpeg|m3u|pls|e2pls|mpg|vob)"
80 elif param["types"] == "any":
81 matchingPattern = ".*"
83 matchingPattern = param["types"]
85 filelist = FileList(param["path"], showDirectories = True, showFiles = True, matchingPattern = matchingPattern, useServiceRef = useServiceRef, isTop = False)
86 list = filelist.getFileList()
88 if useServiceRef == True:
89 if x[0][1] == False: #isDir
90 returnList.append([x[0][0].toString(),x[0][1],param["path"]])
92 returnList.append([x[0][0],x[0][1],param["path"]])
94 if x[0][1] == False: #isDir
95 returnList.append([param["path"]+x[0][0],x[0][1],param["path"]])
97 returnList.append([x[0][0],x[0][1],param["path"]])
101 def playFile(self,param):
102 print "playFile: ",param
103 # TODO: fix error handling
104 if not self.tryOpenMP():
110 mp = self.session.mediaplayer
111 ref = eServiceReference(file)
113 mp.switchToPlayList()
115 if len(mp.playlist) == 1:
118 mp.playlist.addFile(ref)
120 #mp.playServiceRefEntry(ref)
121 print "len len(mp.playlist.getServiceRefList()): ",len(mp.playlist.getServiceRefList())
122 if len(mp.playlist.getServiceRefList()):
123 lastEntry = len(mp.playlist.getServiceRefList()) -1
124 currref = mp.playlist.getServiceRefList()[lastEntry]
125 if self.session.nav.getCurrentlyPlayingServiceReference() is None or currref != self.session.nav.getCurrentlyPlayingServiceReference():
126 self.session.nav.playService(mp.playlist.getServiceRefList()[lastEntry])
127 info = eServiceCenter.getInstance().info(currref)
128 description = info and info.getInfoString(currref, iServiceInformation.sDescription) or ""
129 mp["title"].setText(description)
131 #mp.playEntry(len(self.playlist.getServiceRefList()))
133 mp.playlist.updateList()
137 def writePlaylist(self,param):
138 print "writePlaylist: ",param
139 filename = "playlist/%s.e2pls" % param
140 from Tools.Directories import resolveFilename, SCOPE_CONFIG
142 # TODO: fix error handling
143 if not self.tryOpenMP():
146 mp = self.session.mediaplayer
147 mp.playlistIOInternal.save(resolveFilename(SCOPE_CONFIG, filename))
149 def command(self,param):
150 print "command: ",param
152 # TODO: fix error handling
153 if not self.tryOpenMP():
156 mp = self.session.mediaplayer
158 if param == "previous":
160 elif param == "play":
162 elif param == "pause":
164 elif param == "next":
166 elif param == "stop":
168 elif param == "exit":
176 list = property(getList)
177 lut = {"ServiceReference": 0