1 from twisted.web import http, resource
2 from EPGRefresh import epgrefresh
3 from EPGRefreshService import EPGRefreshService
4 from enigma import eServiceReference
5 from Components.config import config
6 from time import localtime
7 from urllib import unquote
9 class EPGRefreshStartRefreshResource(resource.Resource):
10 def render(self, req):
13 if epgrefresh.forceRefresh():
14 output = "initiated refresh"
17 output = "could not initiate refresh"
19 req.setResponseCode(http.OK)
20 req.setHeader('Content-type', 'application; xhtml+xml')
21 req.setHeader('charset', 'UTF-8')
23 return """<?xml version=\"1.0\" encoding=\"UTF-8\" ?>
26 <e2statetext>%s</e2statetext>
27 </e2simplexmlresult>""" % ('true' if state else 'false', output)
29 class EPGRefreshAddRemoveServiceResource(resource.Resource):
33 def __init__(self, type):
34 assert(type in (self.TYPE_ADD, self.TYPE_DEL))
37 def render(self, req):
38 do_add = self.type == self.TYPE_ADD
41 if 'multi' in req.args:
42 if epgrefresh.services[0]:
43 epgrefresh.services[0].clear()
45 if epgrefresh.services[1]:
46 epgrefresh.services[1].clear()
49 if 'sref' in req.args:
50 duration = req.args.get("duration", None)
52 duration = duration and int(duration)
53 except ValueError, ve:
54 output = 'invalid value for "duration": ' + str(duration)
56 for sref in req.args.get('sref'):
58 ref = eServiceReference(sref)
60 output = 'invalid value for "sref": ' + str(sref)
61 elif (ref.flags & 7) == 7:
62 epgservice = EPGRefreshService(sref, duration)
64 if epgservice in epgrefresh.services[1]:
66 output = "bouquet already in list"
68 epgrefresh.services[1].remove(epgservice)
69 output = "bouquet removed from list"
73 epgrefresh.services[1].add(epgservice)
74 output = "bouquet added to list"
77 output = "bouquet not in list"
79 if not (ref.flags & eServiceReference.isGroup):
80 # strip all after last :
83 if sref[pos-1] == ':':
87 epgservice = EPGRefreshService(sref, duration)
89 if epgservice in epgrefresh.services[0]:
91 output = "service already in list"
93 epgrefresh.services[0].remove(epgservice)
94 output = "service removed from list"
98 epgrefresh.services[0].add(epgservice)
99 output = "service added to list"
102 output = "service not in list"
104 # save if list changed
106 epgrefresh.saveConfiguration()
108 output = 'missing argument "sref"'
110 if 'multi' in req.args:
111 output = 'service restriction changed'
113 req.setResponseCode(http.OK)
114 req.setHeader('Content-type', 'application; xhtml+xml')
115 req.setHeader('charset', 'UTF-8')
117 return """<?xml version=\"1.0\" encoding=\"UTF-8\" ?>
119 <e2state>%s</e2state>
120 <e2statetext>%s</e2statetext>
121 </e2simplexmlresult> """ % ('True' if state else 'False', output)
123 class EPGRefreshListServicesResource(resource.Resource):
124 def render(self, req):
126 req.setResponseCode(http.OK)
127 req.setHeader('Content-type', 'application; xhtml+xml')
128 req.setHeader('charset', 'UTF-8')
129 return ''.join(epgrefresh.buildConfiguration(webif = True))
131 class EPGRefreshChangeSettingsResource(resource.Resource):
132 def render(self, req):
133 statetext = "config changed."
134 for key, value in req.args.iteritems():
137 config.plugins.epgrefresh.enabled.value = True if value == "true" else False
138 elif key == "enablemessage":
139 config.plugins.epgrefresh.enablemessage.value = True if value == "true" else False
144 config.plugins.epgrefresh.begin.value = [t.tm_hour, t.tm_min]
148 t = localtime(int(value))
149 config.plugins.epgrefresh.end.value = [t.tm_hour, t.tm_min]
150 elif key == "interval":
153 config.plugins.epgrefresh.interval.value = value
154 elif key == "delay_standby":
157 config.plugins.epgrefresh.delay_standby.value = value
158 elif key == "inherit_autotimer":
159 config.plugins.epgrefresh.inherit_autotimer.value = True if value == "true" else False
160 elif key == "afterevent":
161 config.plugins.epgrefresh.afterevent.value = True if value == "true" else False
163 config.plugins.epgrefresh.force.value = True if value == "true" else False
164 elif key == "wakeup":
165 config.plugins.epgrefresh.wakeup.value = True if value == "true" else False
166 elif key == "parse_autotimer":
167 config.plugins.epgrefresh.parse_autotimer.value = True if value == "true" else False
168 elif key == "background":
169 statetext += " parameter \"background\" is deprecated. please use new \"adapter\" parameter instead."
170 config.plugins.epgrefresh.adapter.value = "pip_hidden" if value == "true" else "main"
171 elif key == "adapter":
172 if value in config.plugins.epgrefresh.adapter.choices:
173 config.plugins.epgrefresh.adapter.value = value
175 config.plugins.epgrefresh.save()
177 if config.plugins.epgrefresh.enabled.value:
182 req.setResponseCode(http.OK)
183 req.setHeader('Content-type', 'application; xhtml+xml')
184 req.setHeader('charset', 'UTF-8')
186 return """<?xml version=\"1.0\" encoding=\"UTF-8\" ?>
188 <e2state>true</e2state>
189 <e2statetext>%s</e2statetext>
190 </e2simplexmlresult>""" % (statetext,)
192 class EPGRefreshSettingsResource(resource.Resource):
193 def render(self, req):
194 req.setResponseCode(http.OK)
195 req.setHeader('Content-type', 'application; xhtml+xml')
196 req.setHeader('charset', 'UTF-8')
198 from time import time, localtime, mktime
200 begin_h = config.plugins.epgrefresh.begin.value
202 now.tm_year, now.tm_mon, now.tm_mday, begin_h[0], begin_h[1],
203 0, now.tm_wday, now.tm_yday, now.tm_isdst)
205 end_h = config.plugins.epgrefresh.end.value
207 now.tm_year, now.tm_mon, now.tm_mday, end_h[0], end_h[1],
208 0, now.tm_wday, now.tm_yday, now.tm_isdst)
211 return """<?xml version=\"1.0\" encoding=\"UTF-8\" ?>
214 <e2settingname>config.plugins.epgrefresh.enabled</e2settingname>
215 <e2settingvalue>%s</e2settingvalue>
218 <e2settingname>config.plugins.epgrefresh.enablemessage</e2settingname>
219 <e2settingvalue>%s</e2settingvalue>
222 <e2settingname>config.plugins.epgrefresh.begin</e2settingname>
223 <e2settingvalue>%d</e2settingvalue>
226 <e2settingname>config.plugins.epgrefresh.end</e2settingname>
227 <e2settingvalue>%d</e2settingvalue>
230 <e2settingname>config.plugins.epgrefresh.interval</e2settingname>
231 <e2settingvalue>%d</e2settingvalue>
234 <e2settingname>config.plugins.epgrefresh.delay_standby</e2settingname>
235 <e2settingvalue>%d</e2settingvalue>
238 <e2settingname>config.plugins.epgrefresh.inherit_autotimer</e2settingname>
239 <e2settingvalue>%s</e2settingvalue>
242 <e2settingname>config.plugins.epgrefresh.afterevent</e2settingname>
243 <e2settingvalue>%s</e2settingvalue>
246 <e2settingname>config.plugins.epgrefresh.force</e2settingname>
247 <e2settingvalue>%s</e2settingvalue>
250 <e2settingname>config.plugins.epgrefresh.wakeup</e2settingname>
251 <e2settingvalue>%s</e2settingvalue>
254 <e2settingname>config.plugins.epgrefresh.parse_autotimer</e2settingname>
255 <e2settingvalue>%s</e2settingvalue>
258 <!-- deprecated, pending removal -->
259 <e2settingname>config.plugins.epgrefresh.background</e2settingname>
260 <e2settingvalue>%s</e2settingvalue>
263 <e2settingname>config.plugins.epgrefresh.adapter</e2settingname>
264 <e2settingvalue>%s</e2settingvalue>
267 config.plugins.epgrefresh.enabled.value,
268 config.plugins.epgrefresh.enablemessage.value,
271 config.plugins.epgrefresh.interval.value,
272 config.plugins.epgrefresh.delay_standby.value,
273 config.plugins.epgrefresh.inherit_autotimer.value,
274 config.plugins.epgrefresh.afterevent.value,
275 config.plugins.epgrefresh.force.value,
276 config.plugins.epgrefresh.wakeup.value,
277 config.plugins.epgrefresh.parse_autotimer.value,
278 config.plugins.epgrefresh.adapter.value in ("pip", "pip_hidden"),
279 config.plugins.epgrefresh.adapter.value,