Revision: 26262
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=26262
Author:   theeth
Date:     2010-01-25 22:10:33 +0100 (Mon, 25 Jan 2010)

Log Message:
-----------
netrender: utility function to extract information from a blend file on disk. 
Used to get render resolution for jobs in the web interface (lazy init).

Modified Paths:
--------------
    trunk/blender/release/scripts/io/netrender/master.py
    trunk/blender/release/scripts/io/netrender/master_html.py
    trunk/blender/release/scripts/io/netrender/utils.py

Modified: trunk/blender/release/scripts/io/netrender/master.py
===================================================================
--- trunk/blender/release/scripts/io/netrender/master.py        2010-01-25 
21:06:08 UTC (rev 26261)
+++ trunk/blender/release/scripts/io/netrender/master.py        2010-01-25 
21:10:33 UTC (rev 26262)
@@ -75,6 +75,12 @@
         self.last_update = 0
         self.save_path = ""
         self.files = [MRenderFile(rfile.filepath, rfile.index, rfile.start, 
rfile.end) for rfile in job_info.files]
+        
+        self.resolution = None
+    
+    def initInfo(self):
+        if not self.resolution:
+            self.resolution = tuple(getFileInfo(self.files[0].filepath, 
["bpy.context.scene.render_data.resolution_x", 
"bpy.context.scene.render_data.resolution_y", 
"bpy.context.scene.render_data.resolution_percentage"]))
 
     def save(self):
         if self.save_path:
@@ -98,6 +104,7 @@
                 return False
 
         self.start()
+        self.initInfo()
         return True
 
     def testFinished(self):

Modified: trunk/blender/release/scripts/io/netrender/master_html.py
===================================================================
--- trunk/blender/release/scripts/io/netrender/master_html.py   2010-01-25 
21:06:08 UTC (rev 26261)
+++ trunk/blender/release/scripts/io/netrender/master_html.py   2010-01-25 
21:10:33 UTC (rev 26262)
@@ -215,6 +215,17 @@
         job = handler.server.getJobID(job_id)
 
         if job:
+            output("<h2>Render Information</h2>")
+
+            job.initInfo()
+            
+            startTable()
+
+            rowTable("resolution", "%ix%i at %i%%" % job.resolution)
+
+            endTable()
+
+            
             output("<h2>Files</h2>")
 
             startTable()

Modified: trunk/blender/release/scripts/io/netrender/utils.py
===================================================================
--- trunk/blender/release/scripts/io/netrender/utils.py 2010-01-25 21:06:08 UTC 
(rev 26261)
+++ trunk/blender/release/scripts/io/netrender/utils.py 2010-01-25 21:10:33 UTC 
(rev 26262)
@@ -173,6 +173,21 @@
 
     return full_path
 
+def getFileInfo(filepath, infos):
+    process = subprocess.Popen([sys.argv[0], "-b", "-noaudio", filepath, "-P", 
__file__, "--"] + infos, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)    
+    stdout = bytes()
+    while process.poll() == None:
+        stdout += process.stdout.read(1024)
+
+    # read leftovers if needed
+    stdout += process.stdout.read()
+    
+    stdout = str(stdout, encoding="utf8")
+    
+    values = [eval(v[1:].strip()) for v in stdout.split("\n") if 
v.startswith("$")]
+    
+    return values
+                
 def thumbnail(filename):
     root = os.path.splitext(filename)[0]
     imagename = os.path.split(filename)[1]
@@ -197,3 +212,8 @@
             pass
 
     return None
+
+if __name__ == "__main__":
+    import bpy
+    for info in sys.argv[7:]:
+        print("$", eval(info))


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to