[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [26262] trunk/blender/release/scripts/io/ netrender: netrender: utility function to extract information from a blend file on disk.

Martin Poirier theeth at yahoo.com
Mon Jan 25 22:10:33 CET 2010


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))





More information about the Bf-blender-cvs mailing list