[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