diff options
author | Martin Poirier <theeth@yahoo.com> | 2010-01-26 00:10:33 +0300 |
---|---|---|
committer | Martin Poirier <theeth@yahoo.com> | 2010-01-26 00:10:33 +0300 |
commit | abd9a59af4a8499129c4c847b3b19e64cead73b8 (patch) | |
tree | ab69630a8a1d3b9ff48d1059f2c3c1adc858e7dd /release | |
parent | 4907e8df202cea41e52b33a0f6a6f852e3a07818 (diff) |
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).
Diffstat (limited to 'release')
-rw-r--r-- | release/scripts/io/netrender/master.py | 7 | ||||
-rw-r--r-- | release/scripts/io/netrender/master_html.py | 11 | ||||
-rw-r--r-- | release/scripts/io/netrender/utils.py | 20 |
3 files changed, 38 insertions, 0 deletions
diff --git a/release/scripts/io/netrender/master.py b/release/scripts/io/netrender/master.py index 5056eba750d..f95627135ba 100644 --- a/release/scripts/io/netrender/master.py +++ b/release/scripts/io/netrender/master.py @@ -75,6 +75,12 @@ class MRenderJob(netrender.model.RenderJob): 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 @@ class MRenderJob(netrender.model.RenderJob): return False self.start() + self.initInfo() return True def testFinished(self): diff --git a/release/scripts/io/netrender/master_html.py b/release/scripts/io/netrender/master_html.py index 3fff6d0b88c..029497db1ae 100644 --- a/release/scripts/io/netrender/master_html.py +++ b/release/scripts/io/netrender/master_html.py @@ -215,6 +215,17 @@ def get(handler): 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() diff --git a/release/scripts/io/netrender/utils.py b/release/scripts/io/netrender/utils.py index 1871a969f80..f6d88212441 100644 --- a/release/scripts/io/netrender/utils.py +++ b/release/scripts/io/netrender/utils.py @@ -173,6 +173,21 @@ def prefixPath(prefix_directory, file_path, prefix_path): 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 @@ def thumbnail(filename): pass return None + +if __name__ == "__main__": + import bpy + for info in sys.argv[7:]: + print("$", eval(info)) |