1 from enigma import eServiceReference, iServiceInformation, eServiceCenter
2 from Components.Sources.Source import Source
3 from Components.config import config
4 from ServiceReference import ServiceReference
5 from Tools.Directories import resolveFilename, SCOPE_HDD
6 from Tools.FuzzyDate import FuzzyTime
8 from os import stat as os_stat
15 def __init__(self, session, movielist, func = LIST):
18 self.session = session
20 self.root = eServiceReference("2:0:1:0:0:0:0:0:0:0:" + resolveFilename(SCOPE_HDD))
21 self.movielist = movielist #MovieList(self.root)
22 self.movielist.load(self.root, None)
24 self.result = False, "Missing or Wrong Argument"
26 def handleCommand(self, cmd):
29 if self.func is self.DEL:
30 self.result = self.delMovie(cmd)
31 elif self.func is self.LIST:
32 self.root = eServiceReference("2:0:1:0:0:0:0:0:0:0:" + cmd['dirname'])
33 self.tagfilter = cmd['tag'] and [cmd['tag']] or []
35 def delMovie(self, param):
36 # print "[WebComponents.delMovie] %s" %param
39 return False, "Missing Parameter: sRef"
41 service = ServiceReference(param)
44 if service is not None:
45 #mostly copied from Screens.MovieSelection
46 serviceHandler = eServiceCenter.getInstance()
47 offline = serviceHandler.offlineOperations(service.ref)
48 info = serviceHandler.info(service.ref)
49 name = info and info.getName(service.ref) or "this recording"
51 if offline is not None:
52 if not offline.deleteFromDisk(0):
56 return result, "Could not delete Movie '%s'" %name
58 return result, "Movie '%s' deleted" %name
60 return result, "Illegal Parameter Value: sRef - '%s'" %param
66 self.movielist.reload(root=self.root,filter_tags = self.tagfilter)
69 for (serviceref, info, begin, unknown) in self.movielist.list:
71 movie.append(serviceref.toString())
72 movie.append(ServiceReference(serviceref).getServiceName())
73 movie.append(info.getInfoString(serviceref, iServiceInformation.sDescription))
74 rtime = info.getInfo(serviceref, iServiceInformation.sTimeCreate)
79 begin_string = t[0] + ", " + t[1]
81 begin_string = "undefined"
82 movie.append(begin_string)
85 if config.plugins.Webinterface.loadmovielength.value:
86 len = info.getLength(serviceref)
88 len = "%d:%02d" % (len / 60, len % 60)
95 sourceERef =info.getInfoString(serviceref, iServiceInformation.sServiceref)
96 sourceRef= ServiceReference(sourceERef)
98 movie.append(sourceRef.getServiceName())
99 movie.append(info.getInfoString(serviceref, iServiceInformation.sTags))
100 event = info.getEvent(serviceref)
101 if event is not None:
102 text = event.getEventName()
103 short = event.getShortDescription()
104 ext = event.getExtendedDescription()
108 filename = "/"+"/".join(serviceref.toString().split("/")[1:])
109 movie.append(filename)
110 movie.append(os_stat(filename)[6])
111 tag = self.cmd['tag'].lower()
112 if not tag or info.getInfoString(serviceref, iServiceInformation.sTags).lower().find(tag)>=0:
113 """ add movie only to list, if a given tag is applied to the movie """
118 if self.func is self.DEL:
119 (result, text) = self.result
120 xml = "<e2simplexmlresult>\n"
122 xml += "<e2state>True</e2state>\n"
124 xml += "<e2state>False</e2state>\n"
125 xml += "<e2statetext>%s</e2statetext>\n" % text
126 xml += "</e2simplexmlresult>\n"
128 elif self.func is self.TAGS:
129 xml = "<e2movietags>\n"
130 for tag in self.movielist.tags:
131 xml += "<e2movietag>%s</e2movietag>\n"%tag
132 xml += "</e2movietags>\n"
135 text = property(getText)
137 list = property(command)
138 lut = {"ServiceReference": 0
146 ,"DescriptionExtended": 8