Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2013-08-14 11:29:11 +0400
committerCampbell Barton <ideasman42@gmail.com>2013-08-14 11:29:11 +0400
commit78a1a609731d0501e0e17aa319e4e1e4c98c76e5 (patch)
treeae737180743012adacea8c1b8df9a2bcb6825a2f /io_scene_fbx/parse_fbx.py
parent94dd666b5830acbee56f40734f43802f669922d3 (diff)
add a utility function to return the fbx version number only (dont parse the entire file)
Diffstat (limited to 'io_scene_fbx/parse_fbx.py')
-rw-r--r--io_scene_fbx/parse_fbx.py24
1 files changed, 17 insertions, 7 deletions
diff --git a/io_scene_fbx/parse_fbx.py b/io_scene_fbx/parse_fbx.py
index 922bc4e4..f099cb0e 100644
--- a/io_scene_fbx/parse_fbx.py
+++ b/io_scene_fbx/parse_fbx.py
@@ -24,6 +24,7 @@
__all__ = (
"parse",
"data_types",
+ "parse_version",
"FBXElem",
)
@@ -37,6 +38,7 @@ import zlib
_BLOCK_SENTINEL_LENGTH = 13
_BLOCK_SENTINEL_DATA = (b'\0' * _BLOCK_SENTINEL_LENGTH)
_IS_BIG_ENDIAN = (__import__("sys").byteorder != 'little')
+_HEAD_MAGIC = b'Kaydara FBX Binary\x20\x20\x00\x1a\x00'
from collections import namedtuple
FBXElem = namedtuple("FBXElem", ("id", "props", "props_type", "elems"))
del namedtuple
@@ -129,18 +131,28 @@ def read_elem(read, tell, use_namedtuple):
return FBXElem(*args) if use_namedtuple else args
-def parse(fn, use_namedtuple=True):
- # import time
- # t = time.time()
+def parse_version(fn):
+ """
+ Return the FBX version,
+ if the file isn't a binary FBX return zero.
+ """
+ with open(fn, 'rb') as f:
+ read = f.read
+
+ if read(len(_HEAD_MAGIC)) != _HEAD_MAGIC:
+ return 0
+ return read_uint(read)
+
+
+def parse(fn, use_namedtuple=True):
root_elems = []
with open(fn, 'rb') as f:
read = f.read
tell = f.tell
- HEAD_MAGIC = b'Kaydara FBX Binary\x20\x20\x00\x1a\x00'
- if read(len(HEAD_MAGIC)) != HEAD_MAGIC:
+ if read(len(_HEAD_MAGIC)) != _HEAD_MAGIC:
raise IOError("Invalid header")
fbx_version = read_uint(read)
@@ -151,8 +163,6 @@ def parse(fn, use_namedtuple=True):
break
root_elems.append(elem)
- # print("done in %.4f sec" % (time.time() - t))
-
args = (b'', [], bytearray(0), root_elems)
return FBXElem(*args) if use_namedtuple else args, fbx_version