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
7 class EPGRefreshStartRefreshResource(resource.Resource):
11 if epgrefresh.forceRefresh():
12 output = "initiated refresh"
15 output = "could not initiate refresh"
17 req.setResponseCode(http.OK)
18 req.setHeader('Content-type', 'application; xhtml+xml')
19 req.setHeader('charset', 'UTF-8')
21 return """<?xml version=\"1.0\" encoding=\"UTF-8\" ?>
24 <e2statetext>%s</e2statetext>
26 """ % ('true' if state else 'false', output)
28 class EPGRefreshAddRemoveServiceResource(resource.Resource):
32 def __init__(self, type):
33 assert(type in (self.TYPE_ADD, self.TYPE_DEL))
36 def render(self, req):
37 do_add = self.type == self.TYPE_ADD
40 if 'sref' in req.args:
41 sref = req.args["sref"][0]
43 # strip all after last : (custom name)
48 duration = req.args.get("duration", None)
50 duration = duration and int(duration)
51 except ValueError, ve:
52 output = 'invalid value for "duration": ' + str(duration)
54 epgservice = EPGRefreshService(sref, duration)
57 ref = eServiceReference(str(sref))
59 output = 'invalid value for "sref": ' + str(sref)
60 elif (ref.flags & 7) == 7:
62 if epgservice in epgrefresh.services[1]:
64 output = "bouquet already in list"
66 epgrefresh.services[1].remove(epgservice)
67 output = "bouquet removed from list"
71 epgrefresh.services[1].add(epgservice)
72 output = "bouquet added to list"
75 output = "bouquet not in list"
78 if epgservice in epgrefresh.services[0]:
80 output = "service already in list"
82 epgrefresh.services[0].remove(epgservice)
83 output = "service removed from list"
87 epgrefresh.services[0].add(epgservice)
88 output = "service added to list"
91 output = "service not in list"
93 # save if list changed
95 epgrefresh.saveConfiguration()
97 output = 'invalid value for "sref": ' + str(sref)
99 output = 'missing argument "sref"'
101 req.setResponseCode(http.OK)
102 req.setHeader('Content-type', 'application; xhtml+xml')
103 req.setHeader('charset', 'UTF-8')
105 return """<?xml version=\"1.0\" encoding=\"UTF-8\" ?>
107 <e2state>%s</e2state>
108 <e2statetext>%s</e2statetext>
110 """ % ('true' if state else 'false', output)
112 class EPGRefreshListServicesResource(resource.Resource):
113 def render(self, req):
115 req.setResponseCode(http.OK)
116 req.setHeader('Content-type', 'application; xhtml+xml')
117 req.setHeader('charset', 'UTF-8')
118 return ''.join(epgrefresh.buildConfiguration(webif = True))
120 class EPGRefreshChangeSettingsResource(resource.Resource):
121 def render(self, req):
122 for key, value in req.args.iteritems():
125 config.plugins.epgrefresh.enabled.value = True if value == "true" else False
127 config.plugins.epgrefresh.begin.value = int(value)
129 config.plugins.epgrefresh.end.value = int(value)
130 elif key == "interval":
131 config.plugins.epgrefresh.interval.value = int(value)
132 elif key == "delay_standby":
133 config.plugins.epgrefresh.delay_standby.value = int(value)
134 elif key == "inherit_autotimer":
135 config.plugins.epgrefresh.inherit_autotimer.value = True if value == "true" else False
136 elif key == "afterevent":
137 config.plugins.epgrefresh.afterevent.value = True if value == "true" else False
139 config.plugins.epgrefresh.force.value = True if value == "true" else False
140 elif key == "wakeup":
141 config.plugins.epgrefresh.wakeup.value = True if value == "true" else False
142 elif key == "pase_autotimer":
143 config.plugins.epgrefresh.parse_autotimer.value = True if value == "true" else False
145 config.plugins.epgrefresh.save()
147 if config.plugins.epgrefresh.enabled.value:
152 req.setResponseCode(http.OK)
153 req.setHeader('Content-type', 'application; xhtml+xml')
154 req.setHeader('charset', 'UTF-8')
156 return """<?xml version=\"1.0\" encoding=\"UTF-8\" ?>
158 <e2state>true</e2state>
159 <e2statetext>config changed.</e2statetext>
163 class EPGRefreshSettingsResource(resource.Resource):
164 def render(self, req):
165 req.setResponseCode(http.OK)
166 req.setHeader('Content-type', 'application; xhtml+xml')
167 req.setHeader('charset', 'UTF-8')
169 from time import time, localtime, mktime
171 begin_h = config.plugins.epgrefresh.begin.value
173 now.tm_year, now.tm_mon, now.tm_mday, begin_h[0], begin_h[1],
174 0, now.tm_wday, now.tm_yday, now.tm_isdst)
176 end_h = config.plugins.epgrefresh.end.value
178 now.tm_year, now.tm_mon, now.tm_mday, end_h[0], end_h[1],
179 0, now.tm_wday, now.tm_yday, now.tm_isdst)
182 return """<?xml version=\"1.0\" encoding=\"UTF-8\" ?>
185 <e2settingname>config.plugins.epgrefresh.enabled</e2settingname>
186 <e2settingvalue>%s</e2settingvalue>
189 <e2settingname>config.plugins.epgrefresh.begin</e2settingname>
190 <e2settingvalue>%d</e2settingvalue>
193 <e2settingname>config.plugins.epgrefresh.end</e2settingname>
194 <e2settingvalue>%d</e2settingvalue>
197 <e2settingname>config.plugins.epgrefresh.interval</e2settingname>
198 <e2settingvalue>%d</e2settingvalue>
201 <e2settingname>config.plugins.epgrefresh.delay_standby</e2settingname>
202 <e2settingvalue>%d</e2settingvalue>
205 <e2settingname>config.plugins.epgrefresh.inherit_autotimer</e2settingname>
206 <e2settingvalue>%s</e2settingvalue>
209 <e2settingname>config.plugins.epgrefresh.afterevent</e2settingname>
210 <e2settingvalue>%s</e2settingvalue>
213 <e2settingname>config.plugins.epgrefresh.force</e2settingname>
214 <e2settingvalue>%s</e2settingvalue>
217 <e2settingname>config.plugins.epgrefresh.wakeup</e2settingname>
218 <e2settingvalue>%s</e2settingvalue>
221 <e2settingname>config.plugins.epgrefresh.parse_autotimer</e2settingname>
222 <e2settingvalue>%s</e2settingvalue>
226 config.plugins.epgrefresh.enabled.value,
229 config.plugins.epgrefresh.interval.value,
230 config.plugins.epgrefresh.delay_standby.value,
231 config.plugins.epgrefresh.inherit_autotimer.value,
232 config.plugins.epgrefresh.afterevent.value,
233 config.plugins.epgrefresh.force.value,
234 config.plugins.epgrefresh.wakeup.value,
235 config.plugins.epgrefresh.parse_autotimer.value,