MediaPlayer needs some redesign, but the functionality is up and running :)
[vuplus_dvbapp-plugin] / webinterface / src / WebComponents / Sources / MP.py
1 from enigma import *
2 from enigma import eServiceReference#, iServiceInformation
3 from Components.Sources.Source import Source
4 from ServiceReference import ServiceReference,eServiceCenter
5 #from Tools.Directories import resolveFilename,SCOPE_HDD
6 from Components.FileList import FileList#, FileEntryComponent
7
8 #import os
9
10 class MP( Source):
11     LIST = 0
12     PLAY = 1
13     COMMAND= 3
14     
15     def __init__(self, session,func = LIST):
16         Source.__init__(self)
17         self.func = func
18         self.session = session
19         error = "unknown command (%s)" % func
20         self.result = [[error,error,error]]
21     
22     def handleCommand(self,cmd):
23         
24         from Screens.MediaPlayer import MediaPlayer
25         from Components.MediaPlayer import PlayList, PlaylistEntryComponent
26         if self.session.mediaplayer is None:
27             self.session.mediaplayer = self.session.open(MediaPlayer)
28             #self.session.mediaplayer.filelist = FileList(root, matchingPattern = "(?i)^.*\.(mp3|ogg|ts|wav|wave|m3u|pls|e2pls|mpg|vob)", useServiceRef = True)
29             self.session.mediaplayer.playlist = PlayList()
30         try:
31             test = len(self.session.mediaplayer.playlist)
32             #Just a test, wether the link is still active.
33         except:
34             self.session.mediaplayer = self.session.open(MediaPlayer)
35             #self.session.mediaplayer.filelist = FileList(root, matchingPattern = "(?i)^.*\.(mp3|ogg|ts|wav|wave|m3u|pls|e2pls|mpg|vob)", useServiceRef = True)
36             self.session.mediaplayer.playlist = PlayList()
37
38         self.cmd = cmd
39         if self.func is self.LIST:
40             self.result = self.getFileList(cmd)
41         elif self.func is self.PLAY:
42             self.result = self.playFile(cmd)
43         elif self.func is self.COMMAND:
44             self.result = self.command(cmd)
45            
46     def getFileList(self,param):
47         print "getFileList:",param
48         
49         returnList = []
50         
51         filelist = FileList(param, matchingPattern = "(?i)^.*\.(mp3|ogg|ts|wav|wave|m3u|pls|e2pls|mpg|vob)", useServiceRef = True)
52         list = filelist.getFileList()
53         for x in list:
54             if x[0][1] == False: #isDir
55                 returnList.append([x[0][0].toString(),x[0][1],param])
56             else:
57                 returnList.append([x[0][0],x[0][1],param])
58         return returnList
59
60     def playFile(self,param):
61         print "playFile: ",param
62         root = param["root"]
63         file = param["file"]
64
65         mp = self.session.mediaplayer
66         ref = eServiceReference(file)
67         mp.playlist.addFile(ref)
68         mp.playlist.updateList()
69
70         mp.playServiceRefEntry(ref)
71         return
72         
73     def command(self,param):
74         print "command: ",param
75         param = int(param)
76         mp = self.session.mediaplayer
77         
78         if param == 0:
79             mp.previousEntry()
80         elif param == 1:
81             mp.playEntry()
82         elif param == 2:
83             mp.pauseEntry()
84         elif param == 3:
85             mp.nextEntry()
86         elif param == 4:
87             mp.stopEntry()
88         elif param == 5:
89             mp.exit()
90         
91         return
92     
93     def getList(self):
94         return self.result
95     
96     list = property(getList)
97     lut = {"ServiceReference": 0
98            ,"IsDirectory": 1
99            ,"Root": 2
100            }