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 EPGRefreshSettingsResource(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>