cleanup Screengrab a bit
authorMoritz Venn <ritzmo@users.schwerkraft.elitedvb.net>
Sat, 12 Sep 2009 12:21:13 +0000 (12:21 +0000)
committerMoritz Venn <ritzmo@users.schwerkraft.elitedvb.net>
Sat, 12 Sep 2009 12:21:13 +0000 (12:21 +0000)
webinterface/src/WebChilds/Screengrab.py

index c00add0..0ce2540 100755 (executable)
@@ -9,14 +9,11 @@ class GrabResource(resource.Resource):
                this is a interface to Seddis AiO Dreambox Screengrabber
        '''
        GRAB_BIN = '/usr/bin/grab'
-       SPECIAL_ARGS = ['format', 'filename', 'save']
-       
-       def __init__(self):
-               resource.Resource.__init__(self)
-       
+       SPECIAL_ARGS = ('format', 'filename', 'save')
+
        def render(self, request):
-               self.baseCmd = ['/usr/bin/grab', '/usr/bin/grab']
-               self.args = []
+               args = []
+               append = args.append
 
                # some presets
                filename = 'screenshot'
@@ -28,25 +25,26 @@ class GrabResource(resource.Resource):
                for key, value in request.args.items():
                        if key in GrabResource.SPECIAL_ARGS:
                                if key == 'format':
-                                       format = request.args['format'][0]
+                                       format = value[0]
 
                                        if format == 'png':
                                                #-p produce png files instead of bmp
                                                imageformat = format
-                                               self.args.append('-p')
+                                               append('-p')
                                        elif format == 'jpg':
                                                #-j (quality) produce jpg files instead of bmp
 
                                                imageformat = format
-                                               self.args.append('-j')
+                                               append('-j')
                                                #Quality Setting
-                                               if request.args.has_key("jpgquali"):
-                                                       self.args.append("%s" %(request.args["jpgquali"][0]) )
+                                               if 'jpgquali' in request.args:
+                                                       append("%s" % (request.args["jpgquali"][0]) )
+                                                       del request.args['jpgquali']
                                                else:
-                                                       self.args.append('80')
+                                                       append('80')
 
                                elif key == 'filename':
-                                       filename = request.args['filename'][0]
+                                       filename = value[0]
 
                                elif key == 'save':
                                        save = True
@@ -56,29 +54,29 @@ class GrabResource(resource.Resource):
                                if key == "v" and osdOnly is True:
                                        continue
 
-                               self.args.append("-%s" %key )
+                               append("-%s" %key )
 
-                               if value is not None:
-                                       if len(value[0]) > 0:
-                                               self.args.append("%s" %value[0])
+                               if value:
+                                       if value[0]:
+                                               append("%s" % (value[0]))
 
                if not os_path.exists(self.GRAB_BIN):
                        request.setResponseCode(http.OK)
                        request.write('Grab is not installed at %s. Please install package aio-grab.' %self.GRAB_BIN)
-                       request.finish()                        
-                       
+                       request.finish()
+
                else:
-                       request.setHeader('Content-Disposition', 'inline; filename=screenshot.%s;' %imageformat)                        
+                       request.setHeader('Content-Disposition', 'inline; filename=screenshot.%s;' %imageformat)
                        request.setHeader('Content-Type','image/%s' %imageformat)
 
                        filename = filename+imageformat
-                       self.args.append(filename)
-                       cmd = self.baseCmd + self.args
-                                       
+                       append(filename)
+                       cmd = ['/usr/bin/grab', '/usr/bin/grab'] + args
+
                        GrabStream(request, cmd, filename, save)
-               
+
                return server.NOT_DONE_YET
-       
+
 class GrabStream:
        '''
                used to start the grab-bin in the console in the background
@@ -88,7 +86,7 @@ class GrabStream:
                self.target = target
                self.save = save
                self.output = ''
-               self.request = request          
+               self.request = request
 
                self.container = eConsoleAppContainer()
                self.container.appClosed.append(self.cmdFinished)
@@ -115,7 +113,7 @@ class GrabStream:
                        self.request.write(self.output)
                else:
                        self.request.write('Internal error')
-                       
+
                self.request.finish()
 
        def dataAvail(self, data):