@Xavier, blender-thumbnailer.py is a standalone script and runs without blender in py2.x - 3.x its included so tools may extract thumbnails from blender without loading blender.
blender does this internally in C, from thumbs_blend.c: loadblend_thumb. @Tom Edwards, there doesn't seem to be a good place for this to go in blenders source. For now how about: ./source/tools/windows_thumbnail/ ? On Wed, Feb 9, 2011 at 9:20 PM, Tom Edwards <[email protected]> wrote: > Thumbs are generated by Blender on save and stored in the file as RGBA > pixels. There is no risk. > > On this topic, I keep wanting to submit my Windows thumbnail handler but > I don't know where it should go in the source tree. It has to be a > dynamic lib, but it's not exactly external...any suggestions? > > On 09/02/2011 2:34, Xavier Thomas wrote: >> Hi Campbell, >> >> I would like to know if the Blender thumbnailer deactivate python scripts >> inside the blend. >> >> Thumbnailers are big security issues. A malisous .blend on a USB memory >> stick could serve as infection vector on all platform. Executing some of the >> py scripts inside would make it too easy. >> >> Xavier >> >> >> 2011/2/9 Campbell Barton<[email protected]> >> >>> Revision: 34732 >>> >>> http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=34732 >>> Author: campbellbarton >>> Date: 2011-02-09 02:09:30 +0000 (Wed, 09 Feb 2011) >>> Log Message: >>> ----------- >>> patch [#25972] blender-thumbnailer.py: GVFS support >>> from Shinsuke Irie (irie) with some minor edits. >>> >>> Shinsuke's description from the tracker: >>> --- >>> I have implemented GVFS framework support of blender-thumbnailer.py which >>> allows some file managers like Nautilus and Thunar to show thumbnails in >>> trash or network directories. If Python's gio module is available, the >>> thumbnailer uses it to access to filesystems mounted via GVFS. This change >>> shouldn't affect desktop environments other than GNOME and XFCE. >>> >>> A function gvfs_open() in this patch is defined to solve a stupid >>> incompatibility between Python file object and GIO Seekable object. >>> >>> On Ubuntu 10.10, I confirmed thumbnails can be generated for file://, >>> trash://, sftp://, and smb://. >>> >>> Modified Paths: >>> -------------- >>> trunk/blender/release/bin/blender-thumbnailer.py >>> >>> Modified: trunk/blender/release/bin/blender-thumbnailer.py >>> =================================================================== >>> --- trunk/blender/release/bin/blender-thumbnailer.py 2011-02-09 02:09:25 >>> UTC (rev 34731) >>> +++ trunk/blender/release/bin/blender-thumbnailer.py 2011-02-09 02:09:30 >>> UTC (rev 34732) >>> @@ -24,27 +24,49 @@ >>> Thumbnailer runs with python 2.6 and 3.x. >>> To run automatically with nautilus: >>> gconftool --type boolean --set >>> /desktop/gnome/thumbnailers/application@x-blender/enable true >>> - gconftool --type string --set >>> /desktop/gnome/thumbnailers/application@x-blender/command >>> "blender-thumbnailer.py %i %o" >>> + gconftool --type string --set >>> /desktop/gnome/thumbnailers/application@x-blender/command >>> "blender-thumbnailer.py %u %o" >>> """ >>> >>> import struct >>> >>> >>> +def open_wrapper_get(): >>> + """ wrap OS spesific read functionality here, fallback to 'open()' >>> + """ >>> + >>> + def open_gio(path, mode): >>> + g_file = gio.File(path).read() >>> + g_file.orig_seek = g_file.seek >>> + >>> + def new_seek(offset, whence=0): >>> + return g_file.orig_seek(offset, [1, 0, 2][whence]) >>> + >>> + g_file.seek = new_seek >>> + return g_file >>> + >>> + try: >>> + import gio >>> + return open_gio >>> + except ImportError: >>> + return open >>> + >>> + >>> def blend_extract_thumb(path): >>> import os >>> + open_wrapper = open_wrapper_get() >>> >>> # def MAKE_ID(tag): ord(tag[0])<<24 | ord(tag[1])<<16 | ord(tag[2])<<8 >>> | ord(tag[3]) >>> REND = 1145980242 # MAKE_ID(b'REND') >>> TEST = 1414743380 # MAKE_ID(b'TEST') >>> >>> - blendfile = open(path, 'rb') >>> + blendfile = open_wrapper(path, 'rb') >>> >>> head = blendfile.read(12) >>> >>> if head[0:2] == b'\x1f\x8b': # gzip magic >>> import gzip >>> blendfile.close() >>> - blendfile = gzip.open(path, 'rb') >>> + blendfile = gzip.GzipFile('', 'rb', 0, open_wrapper(path, 'rb')) >>> head = blendfile.read(12) >>> >>> if not head.startswith(b'BLENDER'): >>> >>> _______________________________________________ >>> Bf-blender-cvs mailing list >>> [email protected] >>> http://lists.blender.org/mailman/listinfo/bf-blender-cvs >>> >> _______________________________________________ >> Bf-committers mailing list >> [email protected] >> http://lists.blender.org/mailman/listinfo/bf-committers >> > _______________________________________________ > Bf-committers mailing list > [email protected] > http://lists.blender.org/mailman/listinfo/bf-committers > -- - Campbell _______________________________________________ Bf-committers mailing list [email protected] http://lists.blender.org/mailman/listinfo/bf-committers
