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:
authorVilém Duha <vilda.novak@gmail.com>2020-07-09 10:00:56 +0300
committerVilém Duha <vilda.novak@gmail.com>2020-07-12 19:07:58 +0300
commit6f7c4230af8e404d9fa9687b80ee8e7f3f8eac1d (patch)
treebe5b3f6a2c859ed27078378d0a19bffbcf7e56f0
parent37c2aacdb240fc6fd279d9f3b53cd37b88d90bfa (diff)
BlenderKit: fix T70890
this is a complex fix that required to change some basic behaviours. - the temp folder from blenderkit_data was moved to system temp folder - There's a cleanup function for the old folder. - search itself doesn't create files on drive(this rework will continue to try not to write also some other data, like gravatars, but cache them in mem only) further fixes: - assetbar woudln't draw if there wasn't a thumbnail in an asset - categories panel poll function was fixed for brushes - fetching tokens from rerequests wasn't writing them into prefs TODO: create a popup that asks if categories can be downloaded and an example search can be performed.
-rw-r--r--blenderkit/__init__.py19
-rw-r--r--blenderkit/bkit_oauth.py5
-rw-r--r--blenderkit/data/categories.json1509
-rw-r--r--blenderkit/paths.py21
-rw-r--r--blenderkit/rerequests.py2
-rw-r--r--blenderkit/search.py99
-rw-r--r--blenderkit/ui.py16
-rw-r--r--blenderkit/ui_panels.py29
-rw-r--r--blenderkit/utils.py4
9 files changed, 331 insertions, 1373 deletions
diff --git a/blenderkit/__init__.py b/blenderkit/__init__.py
index d511bbf8..15dcaffb 100644
--- a/blenderkit/__init__.py
+++ b/blenderkit/__init__.py
@@ -19,8 +19,8 @@
bl_info = {
"name": "BlenderKit Online Asset Library",
"author": "Vilem Duha, Petr Dlouhy",
- "version": (1, 0, 30),
- "blender": (2, 82, 0),
+ "version": (1, 0, 31),
+ "blender": (2, 83, 0),
"location": "View3D > Properties > BlenderKit",
"description": "Online BlenderKit library (materials, models, brushes and more). Connects to the internet.",
"warning": "",
@@ -249,17 +249,24 @@ def switch_search_results(self, context):
s['search results orig'] = s.get('bkit brush search orig')
search.load_previews()
+#define these static
+# asset_type_ui_items = (
+# ('MODEL', 'Models', 'Find upload models in the BlenderKit online database', 'OBJECT_DATAMODE',0),
+# # ('SCENE', 'SCENE', 'Browse scenes', 'SCENE_DATA', 1),
+# ('MATERIAL', 'Materials', 'Find or upload models in the BlenderKit online database', 'MATERIAL',2),
+# # ('TEXTURE', 'Texture', 'Browse textures', 'TEXTURE', 3),
+# ('BRUSH', 'Brushes', 'Find or upload models in the BlenderKit online database', 'BRUSH_DATA',3)
+# )
+#same as above, but dynamic.
def asset_type_callback(self, context):
- # s = bpy.context.scene
- # ui_props = s.blenderkitUI
if self.down_up == 'SEARCH':
items = (
('MODEL', 'Models', 'Find models in the BlenderKit online database', 'OBJECT_DATAMODE', 0),
# ('SCENE', 'SCENE', 'Browse scenes', 'SCENE_DATA', 1),
- ('MATERIAL', 'Materials', 'Find models in the BlenderKit online database', 'MATERIAL', 2),
+ ('MATERIAL', 'Materials', 'Find materials in the BlenderKit online database', 'MATERIAL', 2),
# ('TEXTURE', 'Texture', 'Browse textures', 'TEXTURE', 3),
- ('BRUSH', 'Brushes', 'Find models in the BlenderKit online database', 'BRUSH_DATA', 3)
+ ('BRUSH', 'Brushes', 'Find brushes in the BlenderKit online database', 'BRUSH_DATA', 3)
)
else:
items = (
diff --git a/blenderkit/bkit_oauth.py b/blenderkit/bkit_oauth.py
index 4d2f09dc..0bf20d4a 100644
--- a/blenderkit/bkit_oauth.py
+++ b/blenderkit/bkit_oauth.py
@@ -70,7 +70,7 @@ def refresh_token_thread():
thread = threading.Thread(target=refresh_token, args=([preferences.api_key_refresh, url]), daemon=True)
thread.start()
else:
- ui.add_report('Already Refreshing token, will be ready soon.')
+ ui.add_report('Already Refreshing token, will be ready soon. If this fails, please login again in Login panel.')
def refresh_token(api_key_refresh, url):
@@ -139,7 +139,8 @@ class Logout(bpy.types.Operator):
preferences.login_attempt = False
preferences.api_key_refresh = ''
preferences.api_key = ''
- del (bpy.context.window_manager['bkit profile'])
+ if bpy.context.window_manager.get('bkit profile'):
+ del (bpy.context.window_manager['bkit profile'])
return {'FINISHED'}
diff --git a/blenderkit/data/categories.json b/blenderkit/data/categories.json
index 2eb34a34..d6286050 100644
--- a/blenderkit/data/categories.json
+++ b/blenderkit/data/categories.json
@@ -1,22 +1,5 @@
[
{
- "name": "addon",
- "slug": "addon",
- "active": true,
- "thumbnail": null,
- "thumbnailWidth": null,
- "thumbnailHeight": null,
- "order": 0,
- "alternateTitle": "addon",
- "alternateUrl": "",
- "description": "",
- "metaKeywords": "",
- "metaExtra": "",
- "children": [],
- "assetCount": 3,
- "assetCountCumulative": 3
- },
- {
"name": "brush",
"slug": "brush",
"active": true,
@@ -99,23 +82,6 @@
"assetCountCumulative": 8
},
{
- "name": "crack",
- "slug": "crack",
- "active": true,
- "thumbnail": null,
- "thumbnailWidth": null,
- "thumbnailHeight": null,
- "order": 0,
- "alternateTitle": "crack",
- "alternateUrl": "",
- "description": "",
- "metaKeywords": "",
- "metaExtra": "",
- "children": [],
- "assetCount": 0,
- "assetCountCumulative": 0
- },
- {
"name": "cut",
"slug": "cut",
"active": true,
@@ -269,23 +235,6 @@
"assetCountCumulative": 1
},
{
- "name": "nature",
- "slug": "nature-brush",
- "active": true,
- "thumbnail": null,
- "thumbnailWidth": null,
- "thumbnailHeight": null,
- "order": 0,
- "alternateTitle": "nature",
- "alternateUrl": "",
- "description": "",
- "metaKeywords": "",
- "metaExtra": "",
- "children": [],
- "assetCount": 1,
- "assetCountCumulative": 1
- },
- {
"name": "pattern",
"slug": "pattern",
"active": true,
@@ -316,42 +265,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 7,
- "assetCountCumulative": 7
- },
- {
- "name": "rust",
- "slug": "rust-brush",
- "active": true,
- "thumbnail": null,
- "thumbnailWidth": null,
- "thumbnailHeight": null,
- "order": 0,
- "alternateTitle": "rust",
- "alternateUrl": "",
- "description": "",
- "metaKeywords": "",
- "metaExtra": "",
- "children": [],
- "assetCount": 0,
- "assetCountCumulative": 0
- },
- {
- "name": "sculpture",
- "slug": "sculpture-brush",
- "active": true,
- "thumbnail": null,
- "thumbnailWidth": null,
- "thumbnailHeight": null,
- "order": 0,
- "alternateTitle": "sculpture",
- "alternateUrl": "",
- "description": "",
- "metaKeywords": "",
- "metaExtra": "",
- "children": [],
- "assetCount": 0,
- "assetCountCumulative": 0
+ "assetCount": 8,
+ "assetCountCumulative": 8
},
{
"name": "stitches",
@@ -371,23 +286,6 @@
"assetCountCumulative": 12
},
{
- "name": "stone",
- "slug": "stone-brush",
- "active": true,
- "thumbnail": null,
- "thumbnailWidth": null,
- "thumbnailHeight": null,
- "order": 0,
- "alternateTitle": "stone",
- "alternateUrl": "",
- "description": "",
- "metaKeywords": "",
- "metaExtra": "",
- "children": [],
- "assetCount": 0,
- "assetCountCumulative": 0
- },
- {
"name": "tree",
"slug": "tree-brush",
"active": true,
@@ -403,23 +301,6 @@
"children": [],
"assetCount": 4,
"assetCountCumulative": 4
- },
- {
- "name": "wood",
- "slug": "wood-brush",
- "active": true,
- "thumbnail": null,
- "thumbnailWidth": null,
- "thumbnailHeight": null,
- "order": 0,
- "alternateTitle": "wood",
- "alternateUrl": "",
- "description": "",
- "metaKeywords": "",
- "metaExtra": "",
- "children": [],
- "assetCount": 0,
- "assetCountCumulative": 0
}
],
"assetCount": 94,
@@ -453,8 +334,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 2,
- "assetCountCumulative": 2
+ "assetCount": 36,
+ "assetCountCumulative": 36
},
{
"name": "asphalt",
@@ -470,8 +351,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 5,
- "assetCountCumulative": 5
+ "assetCount": 36,
+ "assetCountCumulative": 36
},
{
"name": "bricks",
@@ -487,8 +368,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 10,
- "assetCountCumulative": 10
+ "assetCount": 64,
+ "assetCountCumulative": 64
},
{
"name": "ceramic",
@@ -504,8 +385,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 2,
- "assetCountCumulative": 2
+ "assetCount": 16,
+ "assetCountCumulative": 16
},
{
"name": "concrete",
@@ -521,8 +402,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 21,
- "assetCountCumulative": 21
+ "assetCount": 64,
+ "assetCountCumulative": 64
},
{
"name": "dirt",
@@ -538,8 +419,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 6,
- "assetCountCumulative": 6
+ "assetCount": 25,
+ "assetCountCumulative": 25
},
{
"name": "fabric",
@@ -555,8 +436,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 41,
- "assetCountCumulative": 41
+ "assetCount": 169,
+ "assetCountCumulative": 169
},
{
"name": "floor",
@@ -572,8 +453,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 27,
- "assetCountCumulative": 27
+ "assetCount": 41,
+ "assetCountCumulative": 41
},
{
"name": "food",
@@ -589,8 +470,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 2,
- "assetCountCumulative": 2
+ "assetCount": 30,
+ "assetCountCumulative": 30
},
{
"name": "fx",
@@ -606,8 +487,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 1,
- "assetCountCumulative": 1
+ "assetCount": 19,
+ "assetCountCumulative": 19
},
{
"name": "glass",
@@ -623,25 +504,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 9,
- "assetCountCumulative": 9
- },
- {
- "name": "grass",
- "slug": "grass",
- "active": true,
- "thumbnail": null,
- "thumbnailWidth": null,
- "thumbnailHeight": null,
- "order": 0,
- "alternateTitle": "grass",
- "alternateUrl": "",
- "description": "",
- "metaKeywords": "",
- "metaExtra": "",
- "children": [],
- "assetCount": 0,
- "assetCountCumulative": 0
+ "assetCount": 28,
+ "assetCountCumulative": 28
},
{
"name": "ground",
@@ -657,25 +521,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 12,
- "assetCountCumulative": 12
- },
- {
- "name": "human",
- "slug": "human",
- "active": true,
- "thumbnail": null,
- "thumbnailWidth": null,
- "thumbnailHeight": null,
- "order": 0,
- "alternateTitle": "human",
- "alternateUrl": "",
- "description": "",
- "metaKeywords": "",
- "metaExtra": "",
- "children": [],
- "assetCount": 0,
- "assetCountCumulative": 0
+ "assetCount": 70,
+ "assetCountCumulative": 70
},
{
"name": "ice",
@@ -691,8 +538,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 2,
- "assetCountCumulative": 2
+ "assetCount": 20,
+ "assetCountCumulative": 20
},
{
"name": "leather",
@@ -708,8 +555,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 6,
- "assetCountCumulative": 6
+ "assetCount": 37,
+ "assetCountCumulative": 37
},
{
"name": "liquid",
@@ -725,25 +572,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 5,
- "assetCountCumulative": 5
- },
- {
- "name": "marble",
- "slug": "marble",
- "active": true,
- "thumbnail": null,
- "thumbnailWidth": null,
- "thumbnailHeight": null,
- "order": 0,
- "alternateTitle": "marble",
- "alternateUrl": "",
- "description": "",
- "metaKeywords": "",
- "metaExtra": "",
- "children": [],
- "assetCount": 0,
- "assetCountCumulative": 0
+ "assetCount": 7,
+ "assetCountCumulative": 7
},
{
"name": "metal",
@@ -759,8 +589,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 37,
- "assetCountCumulative": 37
+ "assetCount": 119,
+ "assetCountCumulative": 119
},
{
"name": "organic",
@@ -776,8 +606,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 3,
- "assetCountCumulative": 3
+ "assetCount": 29,
+ "assetCountCumulative": 29
},
{
"name": "ornaments",
@@ -793,8 +623,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 1,
- "assetCountCumulative": 1
+ "assetCount": 3,
+ "assetCountCumulative": 3
},
{
"name": "paper",
@@ -810,8 +640,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 26,
- "assetCountCumulative": 26
+ "assetCount": 30,
+ "assetCountCumulative": 30
},
{
"name": "paving",
@@ -827,8 +657,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 9,
- "assetCountCumulative": 9
+ "assetCount": 32,
+ "assetCountCumulative": 32
},
{
"name": "plaster",
@@ -844,8 +674,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 8,
- "assetCountCumulative": 8
+ "assetCount": 34,
+ "assetCountCumulative": 34
},
{
"name": "plastic",
@@ -861,8 +691,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 3,
- "assetCountCumulative": 3
+ "assetCount": 25,
+ "assetCountCumulative": 25
},
{
"name": "rock",
@@ -878,8 +708,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 7,
- "assetCountCumulative": 7
+ "assetCount": 21,
+ "assetCountCumulative": 21
},
{
"name": "roofing",
@@ -895,8 +725,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 2,
- "assetCountCumulative": 2
+ "assetCount": 12,
+ "assetCountCumulative": 12
},
{
"name": "rubber",
@@ -912,8 +742,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 1,
- "assetCountCumulative": 1
+ "assetCount": 8,
+ "assetCountCumulative": 8
},
{
"name": "rust",
@@ -929,8 +759,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 5,
- "assetCountCumulative": 5
+ "assetCount": 17,
+ "assetCountCumulative": 17
},
{
"name": "sand",
@@ -946,25 +776,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 2,
- "assetCountCumulative": 2
- },
- {
- "name": "soil",
- "slug": "soil",
- "active": true,
- "thumbnail": null,
- "thumbnailWidth": null,
- "thumbnailHeight": null,
- "order": 0,
- "alternateTitle": "soil",
- "alternateUrl": "",
- "description": "",
- "metaKeywords": "",
- "metaExtra": "",
- "children": [],
- "assetCount": 0,
- "assetCountCumulative": 0
+ "assetCount": 16,
+ "assetCountCumulative": 16
},
{
"name": "stone",
@@ -980,8 +793,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 11,
- "assetCountCumulative": 11
+ "assetCount": 117,
+ "assetCountCumulative": 117
},
{
"name": "tech",
@@ -997,8 +810,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 3,
- "assetCountCumulative": 3
+ "assetCount": 34,
+ "assetCountCumulative": 34
},
{
"name": "tiles",
@@ -1014,8 +827,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 19,
- "assetCountCumulative": 19
+ "assetCount": 84,
+ "assetCountCumulative": 84
},
{
"name": "wood",
@@ -1031,12 +844,12 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 42,
- "assetCountCumulative": 42
+ "assetCount": 121,
+ "assetCountCumulative": 121
}
],
- "assetCount": 331,
- "assetCountCumulative": 331
+ "assetCount": 1365,
+ "assetCountCumulative": 1365
},
{
"name": "model",
@@ -1080,97 +893,12 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 0,
- "assetCountCumulative": 0
- },
- {
- "name": "helicopter",
- "slug": "helicopter",
- "active": true,
- "thumbnail": null,
- "thumbnailWidth": null,
- "thumbnailHeight": null,
- "order": 0,
- "alternateTitle": "helicopter",
- "alternateUrl": "",
- "description": "",
- "metaKeywords": "",
- "metaExtra": "",
- "children": [],
- "assetCount": 0,
- "assetCountCumulative": 0
- },
- {
- "name": "historic",
- "slug": "historic-aircraft",
- "active": true,
- "thumbnail": null,
- "thumbnailWidth": null,
- "thumbnailHeight": null,
- "order": 0,
- "alternateTitle": "historic",
- "alternateUrl": "",
- "description": "",
- "metaKeywords": "",
- "metaExtra": "",
- "children": [],
- "assetCount": 0,
- "assetCountCumulative": 0
- },
- {
- "name": "jet",
- "slug": "jet",
- "active": true,
- "thumbnail": null,
- "thumbnailWidth": null,
- "thumbnailHeight": null,
- "order": 0,
- "alternateTitle": "jet",
- "alternateUrl": "",
- "description": "",
- "metaKeywords": "",
- "metaExtra": "",
- "children": [],
- "assetCount": 0,
- "assetCountCumulative": 0
- },
- {
- "name": "part",
- "slug": "part-aircraft",
- "active": true,
- "thumbnail": null,
- "thumbnailWidth": null,
- "thumbnailHeight": null,
- "order": 0,
- "alternateTitle": "part",
- "alternateUrl": "",
- "description": "",
- "metaKeywords": "",
- "metaExtra": "",
- "children": [],
- "assetCount": 0,
- "assetCountCumulative": 0
- },
- {
- "name": "private",
- "slug": "private",
- "active": true,
- "thumbnail": null,
- "thumbnailWidth": null,
- "thumbnailHeight": null,
- "order": 0,
- "alternateTitle": "private",
- "alternateUrl": "",
- "description": "",
- "metaKeywords": "",
- "metaExtra": "",
- "children": [],
- "assetCount": 0,
- "assetCountCumulative": 0
+ "assetCount": 20,
+ "assetCountCumulative": 20
}
],
- "assetCount": 0,
- "assetCountCumulative": 0
+ "assetCount": 20,
+ "assetCountCumulative": 20
},
{
"name": "architecture",
@@ -1200,12 +928,12 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 4,
- "assetCountCumulative": 4
+ "assetCount": 133,
+ "assetCountCumulative": 133
}
],
- "assetCount": 5,
- "assetCountCumulative": 5
+ "assetCount": 137,
+ "assetCountCumulative": 137
},
{
"name": "art",
@@ -1222,40 +950,6 @@
"metaExtra": "",
"children": [
{
- "name": "design",
- "slug": "design",
- "active": true,
- "thumbnail": null,
- "thumbnailWidth": null,
- "thumbnailHeight": null,
- "order": 0,
- "alternateTitle": "design",
- "alternateUrl": "",
- "description": "",
- "metaKeywords": "",
- "metaExtra": "",
- "children": [],
- "assetCount": 0,
- "assetCountCumulative": 0
- },
- {
- "name": "drawing",
- "slug": "drawing",
- "active": true,
- "thumbnail": null,
- "thumbnailWidth": null,
- "thumbnailHeight": null,
- "order": 0,
- "alternateTitle": "drawing",
- "alternateUrl": "",
- "description": "",
- "metaKeywords": "",
- "metaExtra": "",
- "children": [],
- "assetCount": 0,
- "assetCountCumulative": 0
- },
- {
"name": "literature",
"slug": "literature",
"active": true,
@@ -1286,8 +980,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 8,
- "assetCountCumulative": 8
+ "assetCount": 15,
+ "assetCountCumulative": 15
},
{
"name": "sculpture",
@@ -1303,8 +997,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 8,
- "assetCountCumulative": 8
+ "assetCount": 15,
+ "assetCountCumulative": 15
},
{
"name": "supplies",
@@ -1320,12 +1014,12 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 1,
- "assetCountCumulative": 1
+ "assetCount": 8,
+ "assetCountCumulative": 8
}
],
- "assetCount": 26,
- "assetCountCumulative": 26
+ "assetCount": 49,
+ "assetCountCumulative": 49
},
{
"name": "character",
@@ -1355,25 +1049,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 4,
- "assetCountCumulative": 4
- },
- {
- "name": "child",
- "slug": "child",
- "active": true,
- "thumbnail": null,
- "thumbnailWidth": null,
- "thumbnailHeight": null,
- "order": 0,
- "alternateTitle": "child",
- "alternateUrl": "",
- "description": "",
- "metaKeywords": "",
- "metaExtra": "",
- "children": [],
- "assetCount": 0,
- "assetCountCumulative": 0
+ "assetCount": 14,
+ "assetCountCumulative": 14
},
{
"name": "clothing",
@@ -1389,8 +1066,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 4,
- "assetCountCumulative": 4
+ "assetCount": 9,
+ "assetCountCumulative": 9
},
{
"name": "fantasy",
@@ -1406,8 +1083,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 0,
- "assetCountCumulative": 0
+ "assetCount": 2,
+ "assetCountCumulative": 2
},
{
"name": "man",
@@ -1423,42 +1100,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 7,
- "assetCountCumulative": 7
- },
- {
- "name": "people",
- "slug": "people",
- "active": true,
- "thumbnail": null,
- "thumbnailWidth": null,
- "thumbnailHeight": null,
- "order": 0,
- "alternateTitle": "people",
- "alternateUrl": "",
- "description": "",
- "metaKeywords": "",
- "metaExtra": "",
- "children": [],
- "assetCount": 0,
- "assetCountCumulative": 0
- },
- {
- "name": "sci-fi",
- "slug": "sci-fi-character",
- "active": true,
- "thumbnail": null,
- "thumbnailWidth": null,
- "thumbnailHeight": null,
- "order": 0,
- "alternateTitle": "sci-fi",
- "alternateUrl": "",
- "description": "",
- "metaKeywords": "",
- "metaExtra": "",
- "children": [],
- "assetCount": 0,
- "assetCountCumulative": 0
+ "assetCount": 13,
+ "assetCountCumulative": 13
},
{
"name": "woman",
@@ -1478,8 +1121,8 @@
"assetCountCumulative": 7
}
],
- "assetCount": 22,
- "assetCountCumulative": 22
+ "assetCount": 46,
+ "assetCountCumulative": 46
},
{
"name": "exterior",
@@ -1509,8 +1152,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 4,
- "assetCountCumulative": 4
+ "assetCount": 24,
+ "assetCountCumulative": 24
},
{
"name": "cityspace",
@@ -1526,76 +1169,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 6,
- "assetCountCumulative": 6
- },
- {
- "name": "historic",
- "slug": "historic",
- "active": true,
- "thumbnail": null,
- "thumbnailWidth": null,
- "thumbnailHeight": null,
- "order": 0,
- "alternateTitle": "historic",
- "alternateUrl": "",
- "description": "",
- "metaKeywords": "",
- "metaExtra": "",
- "children": [],
- "assetCount": 0,
- "assetCountCumulative": 0
- },
- {
- "name": "house",
- "slug": "house",
- "active": true,
- "thumbnail": null,
- "thumbnailWidth": null,
- "thumbnailHeight": null,
- "order": 0,
- "alternateTitle": "house",
- "alternateUrl": "",
- "description": "",
- "metaKeywords": "",
- "metaExtra": "",
- "children": [],
- "assetCount": 0,
- "assetCountCumulative": 0
- },
- {
- "name": "industrial",
- "slug": "industrial-exterior",
- "active": true,
- "thumbnail": null,
- "thumbnailWidth": null,
- "thumbnailHeight": null,
- "order": 0,
- "alternateTitle": "industrial",
- "alternateUrl": "",
- "description": "",
- "metaKeywords": "",
- "metaExtra": "",
- "children": [],
- "assetCount": 0,
- "assetCountCumulative": 0
- },
- {
- "name": "landmark",
- "slug": "landmark",
- "active": true,
- "thumbnail": null,
- "thumbnailWidth": null,
- "thumbnailHeight": null,
- "order": 0,
- "alternateTitle": "landmark",
- "alternateUrl": "",
- "description": "",
- "metaKeywords": "",
- "metaExtra": "",
- "children": [],
- "assetCount": 0,
- "assetCountCumulative": 0
+ "assetCount": 24,
+ "assetCountCumulative": 24
},
{
"name": "landscape",
@@ -1611,8 +1186,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 12,
- "assetCountCumulative": 12
+ "assetCount": 35,
+ "assetCountCumulative": 35
},
{
"name": "public",
@@ -1628,42 +1203,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 4,
- "assetCountCumulative": 4
- },
- {
- "name": "sci-fi",
- "slug": "sci-fi",
- "active": true,
- "thumbnail": null,
- "thumbnailWidth": null,
- "thumbnailHeight": null,
- "order": 0,
- "alternateTitle": "sci-fi",
- "alternateUrl": "",
- "description": "",
- "metaKeywords": "",
- "metaExtra": "",
- "children": [],
- "assetCount": 0,
- "assetCountCumulative": 0
- },
- {
- "name": "stadium",
- "slug": "stadium",
- "active": true,
- "thumbnail": null,
- "thumbnailWidth": null,
- "thumbnailHeight": null,
- "order": 0,
- "alternateTitle": "stadium",
- "alternateUrl": "",
- "description": "",
- "metaKeywords": "",
- "metaExtra": "",
- "children": [],
- "assetCount": 0,
- "assetCountCumulative": 0
+ "assetCount": 12,
+ "assetCountCumulative": 12
},
{
"name": "street",
@@ -1679,12 +1220,12 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 1,
- "assetCountCumulative": 1
+ "assetCount": 35,
+ "assetCountCumulative": 35
}
],
- "assetCount": 27,
- "assetCountCumulative": 27
+ "assetCount": 132,
+ "assetCountCumulative": 132
},
{
"name": "food & drink",
@@ -1714,8 +1255,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 10,
- "assetCountCumulative": 10
+ "assetCount": 33,
+ "assetCountCumulative": 33
},
{
"name": "drink",
@@ -1731,8 +1272,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 14,
- "assetCountCumulative": 14
+ "assetCount": 27,
+ "assetCountCumulative": 27
},
{
"name": "drugs",
@@ -1748,8 +1289,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 3,
- "assetCountCumulative": 3
+ "assetCount": 7,
+ "assetCountCumulative": 7
},
{
"name": "food",
@@ -1765,12 +1306,12 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 8,
- "assetCountCumulative": 8
+ "assetCount": 47,
+ "assetCountCumulative": 47
}
],
- "assetCount": 35,
- "assetCountCumulative": 35
+ "assetCount": 117,
+ "assetCountCumulative": 117
},
{
"name": "furniture",
@@ -1800,8 +1341,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 3,
- "assetCountCumulative": 3
+ "assetCount": 21,
+ "assetCountCumulative": 21
},
{
"name": "carpet",
@@ -1817,8 +1358,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 7,
- "assetCountCumulative": 7
+ "assetCount": 10,
+ "assetCountCumulative": 10
},
{
"name": "desk",
@@ -1834,8 +1375,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 5,
- "assetCountCumulative": 5
+ "assetCount": 21,
+ "assetCountCumulative": 21
},
{
"name": "fireplace",
@@ -1851,8 +1392,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 1,
- "assetCountCumulative": 1
+ "assetCount": 8,
+ "assetCountCumulative": 8
},
{
"name": "lighting",
@@ -1868,8 +1409,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 19,
- "assetCountCumulative": 19
+ "assetCount": 106,
+ "assetCountCumulative": 106
},
{
"name": "seating",
@@ -1885,8 +1426,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 36,
- "assetCountCumulative": 36
+ "assetCount": 179,
+ "assetCountCumulative": 179
},
{
"name": "shelving",
@@ -1902,8 +1443,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 17,
- "assetCountCumulative": 17
+ "assetCount": 38,
+ "assetCountCumulative": 38
},
{
"name": "sofa",
@@ -1919,8 +1460,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 9,
- "assetCountCumulative": 9
+ "assetCount": 57,
+ "assetCountCumulative": 57
},
{
"name": "storage",
@@ -1936,8 +1477,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 24,
- "assetCountCumulative": 24
+ "assetCount": 65,
+ "assetCountCumulative": 65
},
{
"name": "table",
@@ -1953,12 +1494,12 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 36,
- "assetCountCumulative": 36
+ "assetCount": 106,
+ "assetCountCumulative": 106
}
],
- "assetCount": 157,
- "assetCountCumulative": 157
+ "assetCount": 611,
+ "assetCountCumulative": 611
},
{
"name": "industrial",
@@ -1975,57 +1516,6 @@
"metaExtra": "",
"children": [
{
- "name": "agriculture",
- "slug": "agriculture",
- "active": true,
- "thumbnail": null,
- "thumbnailWidth": null,
- "thumbnailHeight": null,
- "order": 0,
- "alternateTitle": "agriculture",
- "alternateUrl": "",
- "description": "",
- "metaKeywords": "",
- "metaExtra": "",
- "children": [],
- "assetCount": 0,
- "assetCountCumulative": 0
- },
- {
- "name": "communication",
- "slug": "communication",
- "active": true,
- "thumbnail": null,
- "thumbnailWidth": null,
- "thumbnailHeight": null,
- "order": 0,
- "alternateTitle": "communication",
- "alternateUrl": "",
- "description": "",
- "metaKeywords": "",
- "metaExtra": "",
- "children": [],
- "assetCount": 0,
- "assetCountCumulative": 0
- },
- {
- "name": "construction",
- "slug": "construction",
- "active": true,
- "thumbnail": null,
- "thumbnailWidth": null,
- "thumbnailHeight": null,
- "order": 0,
- "alternateTitle": "construction",
- "alternateUrl": "",
- "description": "",
- "metaKeywords": "",
- "metaExtra": "",
- "children": [],
- "assetCount": 0,
- "assetCountCumulative": 0
- },
- {
"name": "container",
"slug": "container-industrial",
"active": true,
@@ -2039,25 +1529,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 11,
- "assetCountCumulative": 11
- },
- {
- "name": "machine",
- "slug": "machine",
- "active": true,
- "thumbnail": null,
- "thumbnailWidth": null,
- "thumbnailHeight": null,
- "order": 0,
- "alternateTitle": "machine",
- "alternateUrl": "",
- "description": "",
- "metaKeywords": "",
- "metaExtra": "",
- "children": [],
- "assetCount": 0,
- "assetCountCumulative": 0
+ "assetCount": 48,
+ "assetCountCumulative": 48
},
{
"name": "tool",
@@ -2073,29 +1546,12 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 5,
- "assetCountCumulative": 5
- },
- {
- "name": "utility",
- "slug": "utility-industrial",
- "active": true,
- "thumbnail": null,
- "thumbnailWidth": null,
- "thumbnailHeight": null,
- "order": 0,
- "alternateTitle": "part",
- "alternateUrl": "",
- "description": "",
- "metaKeywords": "",
- "metaExtra": "",
- "children": [],
- "assetCount": 0,
- "assetCountCumulative": 0
+ "assetCount": 29,
+ "assetCountCumulative": 29
}
],
- "assetCount": 18,
- "assetCountCumulative": 18
+ "assetCount": 85,
+ "assetCountCumulative": 85
},
{
"name": "interior",
@@ -2125,8 +1581,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 24,
- "assetCountCumulative": 24
+ "assetCount": 96,
+ "assetCountCumulative": 96
},
{
"name": "bedroom",
@@ -2142,8 +1598,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 14,
- "assetCountCumulative": 14
+ "assetCount": 64,
+ "assetCountCumulative": 64
},
{
"name": "decoration",
@@ -2159,8 +1615,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 71,
- "assetCountCumulative": 71
+ "assetCount": 291,
+ "assetCountCumulative": 291
},
{
"name": "hall",
@@ -2176,8 +1632,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 2,
- "assetCountCumulative": 2
+ "assetCount": 8,
+ "assetCountCumulative": 8
},
{
"name": "kids room",
@@ -2193,8 +1649,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 9,
- "assetCountCumulative": 9
+ "assetCount": 42,
+ "assetCountCumulative": 42
},
{
"name": "kitchen",
@@ -2210,8 +1666,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 69,
- "assetCountCumulative": 69
+ "assetCount": 181,
+ "assetCountCumulative": 181
},
{
"name": "living room",
@@ -2227,8 +1683,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 17,
- "assetCountCumulative": 17
+ "assetCount": 127,
+ "assetCountCumulative": 127
},
{
"name": "office",
@@ -2244,8 +1700,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 13,
- "assetCountCumulative": 13
+ "assetCount": 48,
+ "assetCountCumulative": 48
},
{
"name": "utility",
@@ -2261,12 +1717,12 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 34,
- "assetCountCumulative": 34
+ "assetCount": 74,
+ "assetCountCumulative": 74
}
],
- "assetCount": 253,
- "assetCountCumulative": 253
+ "assetCount": 932,
+ "assetCountCumulative": 932
},
{
"name": "military",
@@ -2283,23 +1739,6 @@
"metaExtra": "",
"children": [
{
- "name": "air",
- "slug": "air",
- "active": true,
- "thumbnail": null,
- "thumbnailWidth": null,
- "thumbnailHeight": null,
- "order": 0,
- "alternateTitle": "air",
- "alternateUrl": "",
- "description": "",
- "metaKeywords": "",
- "metaExtra": "",
- "children": [],
- "assetCount": 0,
- "assetCountCumulative": 0
- },
- {
"name": "equipment",
"slug": "equipment",
"active": true,
@@ -2313,25 +1752,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 0,
- "assetCountCumulative": 0
- },
- {
- "name": "ground",
- "slug": "ground",
- "active": true,
- "thumbnail": null,
- "thumbnailWidth": null,
- "thumbnailHeight": null,
- "order": 0,
- "alternateTitle": "ground",
- "alternateUrl": "",
- "description": "",
- "metaKeywords": "",
- "metaExtra": "",
- "children": [],
- "assetCount": 0,
- "assetCountCumulative": 0
+ "assetCount": 3,
+ "assetCountCumulative": 3
},
{
"name": "historic",
@@ -2347,25 +1769,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 0,
- "assetCountCumulative": 0
- },
- {
- "name": "naval",
- "slug": "naval",
- "active": true,
- "thumbnail": null,
- "thumbnailWidth": null,
- "thumbnailHeight": null,
- "order": 0,
- "alternateTitle": "naval",
- "alternateUrl": "",
- "description": "",
- "metaKeywords": "",
- "metaExtra": "",
- "children": [],
- "assetCount": 0,
- "assetCountCumulative": 0
+ "assetCount": 6,
+ "assetCountCumulative": 6
},
{
"name": "weapon",
@@ -2381,12 +1786,12 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 3,
- "assetCountCumulative": 3
+ "assetCount": 29,
+ "assetCountCumulative": 29
}
],
- "assetCount": 3,
- "assetCountCumulative": 3
+ "assetCount": 40,
+ "assetCountCumulative": 40
},
{
"name": "music",
@@ -2416,63 +1821,12 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 1,
- "assetCountCumulative": 1
- },
- {
- "name": "instruments",
- "slug": "instruments",
- "active": true,
- "thumbnail": null,
- "thumbnailWidth": null,
- "thumbnailHeight": null,
- "order": 0,
- "alternateTitle": "instruments",
- "alternateUrl": "",
- "description": "",
- "metaKeywords": "",
- "metaExtra": "",
- "children": [],
- "assetCount": 0,
- "assetCountCumulative": 0
- },
- {
- "name": "stage",
- "slug": "stage",
- "active": true,
- "thumbnail": null,
- "thumbnailWidth": null,
- "thumbnailHeight": null,
- "order": 0,
- "alternateTitle": "stage",
- "alternateUrl": "",
- "description": "",
- "metaKeywords": "",
- "metaExtra": "",
- "children": [],
- "assetCount": 0,
- "assetCountCumulative": 0
- },
- {
- "name": "studio",
- "slug": "studio",
- "active": true,
- "thumbnail": null,
- "thumbnailWidth": null,
- "thumbnailHeight": null,
- "order": 0,
- "alternateTitle": "studio",
- "alternateUrl": "",
- "description": "",
- "metaKeywords": "",
- "metaExtra": "",
- "children": [],
- "assetCount": 1,
- "assetCountCumulative": 1
+ "assetCount": 13,
+ "assetCountCumulative": 13
}
],
- "assetCount": 2,
- "assetCountCumulative": 2
+ "assetCount": 13,
+ "assetCountCumulative": 13
},
{
"name": "nature",
@@ -2502,8 +1856,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 3,
- "assetCountCumulative": 3
+ "assetCount": 7,
+ "assetCountCumulative": 7
},
{
"name": "atmosphere",
@@ -2519,8 +1873,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 0,
- "assetCountCumulative": 0
+ "assetCount": 2,
+ "assetCountCumulative": 2
},
{
"name": "landscape",
@@ -2536,8 +1890,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 9,
- "assetCountCumulative": 9
+ "assetCount": 35,
+ "assetCountCumulative": 35
},
{
"name": "plant",
@@ -2553,8 +1907,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 15,
- "assetCountCumulative": 15
+ "assetCount": 48,
+ "assetCountCumulative": 48
},
{
"name": "tree",
@@ -2570,29 +1924,12 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 14,
- "assetCountCumulative": 14
- },
- {
- "name": "weather",
- "slug": "weather",
- "active": true,
- "thumbnail": null,
- "thumbnailWidth": null,
- "thumbnailHeight": null,
- "order": 0,
- "alternateTitle": "weather",
- "alternateUrl": "",
- "description": "",
- "metaKeywords": "",
- "metaExtra": "",
- "children": [],
- "assetCount": 0,
- "assetCountCumulative": 0
+ "assetCount": 47,
+ "assetCountCumulative": 47
}
],
- "assetCount": 41,
- "assetCountCumulative": 41
+ "assetCount": 141,
+ "assetCountCumulative": 141
},
{
"name": "space",
@@ -2609,57 +1946,6 @@
"metaExtra": "",
"children": [
{
- "name": "astronomy",
- "slug": "astronomy",
- "active": true,
- "thumbnail": null,
- "thumbnailWidth": null,
- "thumbnailHeight": null,
- "order": 0,
- "alternateTitle": "astronomy",
- "alternateUrl": "",
- "description": "",
- "metaKeywords": "",
- "metaExtra": "",
- "children": [],
- "assetCount": 0,
- "assetCountCumulative": 0
- },
- {
- "name": "planets",
- "slug": "planets",
- "active": true,
- "thumbnail": null,
- "thumbnailWidth": null,
- "thumbnailHeight": null,
- "order": 0,
- "alternateTitle": "planets",
- "alternateUrl": "",
- "description": "",
- "metaKeywords": "",
- "metaExtra": "",
- "children": [],
- "assetCount": 0,
- "assetCountCumulative": 0
- },
- {
- "name": "sci-fi",
- "slug": "sci-fi-space",
- "active": true,
- "thumbnail": null,
- "thumbnailWidth": null,
- "thumbnailHeight": null,
- "order": 0,
- "alternateTitle": "sci-fi",
- "alternateUrl": "",
- "description": "",
- "metaKeywords": "",
- "metaExtra": "",
- "children": [],
- "assetCount": 0,
- "assetCountCumulative": 0
- },
- {
"name": "spacecraft",
"slug": "spacecraft",
"active": true,
@@ -2673,12 +1959,12 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 1,
- "assetCountCumulative": 1
+ "assetCount": 9,
+ "assetCountCumulative": 9
}
],
- "assetCount": 1,
- "assetCountCumulative": 1
+ "assetCount": 10,
+ "assetCountCumulative": 10
},
{
"name": "sports",
@@ -2695,23 +1981,6 @@
"metaExtra": "",
"children": [
{
- "name": "animal",
- "slug": "animal",
- "active": true,
- "thumbnail": null,
- "thumbnailWidth": null,
- "thumbnailHeight": null,
- "order": 0,
- "alternateTitle": "animal",
- "alternateUrl": "",
- "description": "",
- "metaKeywords": "",
- "metaExtra": "",
- "children": [],
- "assetCount": 0,
- "assetCountCumulative": 0
- },
- {
"name": "exercise",
"slug": "exercise",
"active": true,
@@ -2725,8 +1994,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 1,
- "assetCountCumulative": 1
+ "assetCount": 12,
+ "assetCountCumulative": 12
},
{
"name": "extreme",
@@ -2742,8 +2011,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 1,
- "assetCountCumulative": 1
+ "assetCount": 4,
+ "assetCountCumulative": 4
},
{
"name": "individual",
@@ -2759,8 +2028,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 1,
- "assetCountCumulative": 1
+ "assetCount": 5,
+ "assetCountCumulative": 5
},
{
"name": "outdoor",
@@ -2776,8 +2045,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 1,
- "assetCountCumulative": 1
+ "assetCount": 4,
+ "assetCountCumulative": 4
},
{
"name": "team",
@@ -2793,12 +2062,12 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 3,
- "assetCountCumulative": 3
+ "assetCount": 6,
+ "assetCountCumulative": 6
}
],
- "assetCount": 7,
- "assetCountCumulative": 7
+ "assetCount": 31,
+ "assetCountCumulative": 31
},
{
"name": "technology",
@@ -2815,23 +2084,6 @@
"metaExtra": "",
"children": [
{
- "name": "ai",
- "slug": "ai",
- "active": true,
- "thumbnail": null,
- "thumbnailWidth": null,
- "thumbnailHeight": null,
- "order": 0,
- "alternateTitle": "ai",
- "alternateUrl": "",
- "description": "",
- "metaKeywords": "",
- "metaExtra": "",
- "children": [],
- "assetCount": 0,
- "assetCountCumulative": 0
- },
- {
"name": "audio",
"slug": "audio",
"active": true,
@@ -2845,8 +2097,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 1,
- "assetCountCumulative": 1
+ "assetCount": 16,
+ "assetCountCumulative": 16
},
{
"name": "computer",
@@ -2862,25 +2114,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 2,
- "assetCountCumulative": 2
- },
- {
- "name": "medical",
- "slug": "medical",
- "active": true,
- "thumbnail": null,
- "thumbnailWidth": null,
- "thumbnailHeight": null,
- "order": 0,
- "alternateTitle": "medical",
- "alternateUrl": "",
- "description": "",
- "metaKeywords": "",
- "metaExtra": "",
- "children": [],
- "assetCount": 0,
- "assetCountCumulative": 0
+ "assetCount": 102,
+ "assetCountCumulative": 102
},
{
"name": "phone",
@@ -2896,8 +2131,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 2,
- "assetCountCumulative": 2
+ "assetCount": 8,
+ "assetCountCumulative": 8
},
{
"name": "photography",
@@ -2913,46 +2148,12 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 1,
- "assetCountCumulative": 1
- },
- {
- "name": "science",
- "slug": "science",
- "active": true,
- "thumbnail": null,
- "thumbnailWidth": null,
- "thumbnailHeight": null,
- "order": 0,
- "alternateTitle": "science",
- "alternateUrl": "",
- "description": "",
- "metaKeywords": "",
- "metaExtra": "",
- "children": [],
- "assetCount": 0,
- "assetCountCumulative": 0
- },
- {
- "name": "video",
- "slug": "video",
- "active": true,
- "thumbnail": null,
- "thumbnailWidth": null,
- "thumbnailHeight": null,
- "order": 0,
- "alternateTitle": "video",
- "alternateUrl": "",
- "description": "",
- "metaKeywords": "",
- "metaExtra": "",
- "children": [],
- "assetCount": 0,
- "assetCountCumulative": 0
+ "assetCount": 6,
+ "assetCountCumulative": 6
}
],
- "assetCount": 6,
- "assetCountCumulative": 6
+ "assetCount": 138,
+ "assetCountCumulative": 138
},
{
"name": "vehicle",
@@ -2969,40 +2170,6 @@
"metaExtra": "",
"children": [
{
- "name": "bicycle",
- "slug": "bicycle",
- "active": true,
- "thumbnail": null,
- "thumbnailWidth": null,
- "thumbnailHeight": null,
- "order": 0,
- "alternateTitle": "bicycle",
- "alternateUrl": "",
- "description": "",
- "metaKeywords": "",
- "metaExtra": "",
- "children": [],
- "assetCount": 0,
- "assetCountCumulative": 0
- },
- {
- "name": "bus",
- "slug": "bus",
- "active": true,
- "thumbnail": null,
- "thumbnailWidth": null,
- "thumbnailHeight": null,
- "order": 0,
- "alternateTitle": "bus",
- "alternateUrl": "",
- "description": "",
- "metaKeywords": "",
- "metaExtra": "",
- "children": [],
- "assetCount": 0,
- "assetCountCumulative": 0
- },
- {
"name": "car",
"slug": "car",
"active": true,
@@ -3016,25 +2183,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 9,
- "assetCountCumulative": 9
- },
- {
- "name": "historic",
- "slug": "historic-vehicle",
- "active": true,
- "thumbnail": null,
- "thumbnailWidth": null,
- "thumbnailHeight": null,
- "order": 0,
- "alternateTitle": "historic",
- "alternateUrl": "",
- "description": "",
- "metaKeywords": "",
- "metaExtra": "",
- "children": [],
- "assetCount": 0,
- "assetCountCumulative": 0
+ "assetCount": 43,
+ "assetCountCumulative": 43
},
{
"name": "industrial",
@@ -3050,25 +2200,8 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 1,
- "assetCountCumulative": 1
- },
- {
- "name": "motorcycle",
- "slug": "motorcycle",
- "active": true,
- "thumbnail": null,
- "thumbnailWidth": null,
- "thumbnailHeight": null,
- "order": 0,
- "alternateTitle": "motorcycle",
- "alternateUrl": "",
- "description": "",
- "metaKeywords": "",
- "metaExtra": "",
- "children": [],
- "assetCount": 0,
- "assetCountCumulative": 0
+ "assetCount": 5,
+ "assetCountCumulative": 5
},
{
"name": "part",
@@ -3084,222 +2217,32 @@
"metaKeywords": "",
"metaExtra": "",
"children": [],
- "assetCount": 8,
- "assetCountCumulative": 8
- },
- {
- "name": "train",
- "slug": "train",
- "active": true,
- "thumbnail": null,
- "thumbnailWidth": null,
- "thumbnailHeight": null,
- "order": 0,
- "alternateTitle": "train",
- "alternateUrl": "",
- "description": "",
- "metaKeywords": "",
- "metaExtra": "",
- "children": [],
- "assetCount": 0,
- "assetCountCumulative": 0
- },
- {
- "name": "truck",
- "slug": "truck",
- "active": true,
- "thumbnail": null,
- "thumbnailWidth": null,
- "thumbnailHeight": null,
- "order": 0,
- "alternateTitle": "truck",
- "alternateUrl": "",
- "description": "",
- "metaKeywords": "",
- "metaExtra": "",
- "children": [],
- "assetCount": 0,
- "assetCountCumulative": 0
- }
- ],
- "assetCount": 18,
- "assetCountCumulative": 18
- },
- {
- "name": "watercraft",
- "slug": "watercraft",
- "active": true,
- "thumbnail": null,
- "thumbnailWidth": null,
- "thumbnailHeight": null,
- "order": 0,
- "alternateTitle": "watercraft",
- "alternateUrl": "",
- "description": "",
- "metaKeywords": "",
- "metaExtra": "",
- "children": [
- {
- "name": "historic",
- "slug": "historic-watercraft",
- "active": true,
- "thumbnail": null,
- "thumbnailWidth": null,
- "thumbnailHeight": null,
- "order": 0,
- "alternateTitle": "historic",
- "alternateUrl": "",
- "description": "",
- "metaKeywords": "",
- "metaExtra": "",
- "children": [],
- "assetCount": 0,
- "assetCountCumulative": 0
- },
- {
- "name": "industrial",
- "slug": "industrial-watercraft",
- "active": true,
- "thumbnail": null,
- "thumbnailWidth": null,
- "thumbnailHeight": null,
- "order": 0,
- "alternateTitle": "industrial",
- "alternateUrl": "",
- "description": "",
- "metaKeywords": "",
- "metaExtra": "",
- "children": [],
- "assetCount": 0,
- "assetCountCumulative": 0
- },
- {
- "name": "part",
- "slug": "part-watercraft",
- "active": true,
- "thumbnail": null,
- "thumbnailWidth": null,
- "thumbnailHeight": null,
- "order": 0,
- "alternateTitle": "part",
- "alternateUrl": "",
- "description": "",
- "metaKeywords": "",
- "metaExtra": "",
- "children": [],
- "assetCount": 0,
- "assetCountCumulative": 0
- },
- {
- "name": "personal",
- "slug": "personal",
- "active": true,
- "thumbnail": null,
- "thumbnailWidth": null,
- "thumbnailHeight": null,
- "order": 0,
- "alternateTitle": "personal",
- "alternateUrl": "",
- "description": "",
- "metaKeywords": "",
- "metaExtra": "",
- "children": [],
- "assetCount": 0,
- "assetCountCumulative": 0
+ "assetCount": 20,
+ "assetCountCumulative": 20
},
{
- "name": "recreational",
- "slug": "recreational",
+ "name": "Animals",
+ "slug": "animals",
"active": true,
"thumbnail": null,
"thumbnailWidth": null,
"thumbnailHeight": null,
"order": 0,
- "alternateTitle": "recreational",
+ "alternateTitle": "Animals",
"alternateUrl": "",
"description": "",
"metaKeywords": "",
"metaExtra": "",
"children": [],
"assetCount": 0,
- "assetCountCumulative": 0
- }
- ],
- "assetCount": 0,
- "assetCountCumulative": 0
- }
- ],
- "assetCount": 621,
- "assetCountCumulative": 621
- },
- {
- "name": "texture",
- "slug": "texture",
- "active": true,
- "thumbnail": null,
- "thumbnailWidth": null,
- "thumbnailHeight": null,
- "order": 0,
- "alternateTitle": "texture",
- "alternateUrl": "",
- "description": "",
- "metaKeywords": "",
- "metaExtra": "",
- "children": [
- {
- "name": "Animals",
- "slug": "animals",
- "active": true,
- "thumbnail": null,
- "thumbnailWidth": null,
- "thumbnailHeight": null,
- "order": 0,
- "alternateTitle": "Animals",
- "alternateUrl": "",
- "description": "",
- "metaKeywords": "",
- "metaExtra": "",
- "children": [
- {
- "name": "Mammals",
- "slug": "mammals",
- "active": true,
- "thumbnail": null,
- "thumbnailWidth": null,
- "thumbnailHeight": null,
- "order": 0,
- "alternateTitle": "Mammals",
- "alternateUrl": "",
- "description": "",
- "metaKeywords": "",
- "metaExtra": "",
- "children": [],
- "assetCount": 0,
- "assetCountCumulative": 0
- },
- {
- "name": "Plants",
- "slug": "plants",
- "active": true,
- "thumbnail": null,
- "thumbnailWidth": null,
- "thumbnailHeight": null,
- "order": 0,
- "alternateTitle": "Plants",
- "alternateUrl": "",
- "description": "",
- "metaKeywords": "",
- "metaExtra": "",
- "children": [],
- "assetCount": 0,
- "assetCountCumulative": 0
+ "assetCountCumulative": 11
}
],
- "assetCount": 0,
- "assetCountCumulative": 1
+ "assetCount": 70,
+ "assetCountCumulative": 70
}
],
- "assetCount": 0,
- "assetCountCumulative": 0
+ "assetCount": 2572,
+ "assetCountCumulative": 2572
}
] \ No newline at end of file
diff --git a/blenderkit/paths.py b/blenderkit/paths.py
index 2f144268..b4210a85 100644
--- a/blenderkit/paths.py
+++ b/blenderkit/paths.py
@@ -16,7 +16,8 @@
#
# ##### END GPL LICENSE BLOCK #####
-import bpy, os, sys
+import bpy, os, sys, tempfile, shutil
+from blenderkit import tasks_queue, ui
_presets = os.path.join(bpy.utils.user_resource('SCRIPTS'), "presets")
BLENDERKIT_LOCAL = "http://localhost:8001"
@@ -35,6 +36,15 @@ BLENDERKIT_OAUTH_LANDING_URL = "/oauth-landing/"
BLENDERKIT_SIGNUP_URL = "https://www.blenderkit.com/accounts/register"
BLENDERKIT_SETTINGS_FILENAME = os.path.join(_presets, "bkit.json")
+def cleanup_old_folders():
+ '''function to clean up any historical folders for BlenderKit. By now removes the temp folder.'''
+ orig_temp = os.path.join(os.path.expanduser('~'), 'blenderkit_data', 'temp')
+ if os.path.isdir(orig_temp):
+ try:
+ shutil.rmtree(orig_temp)
+ except Exception as e:
+ print(e)
+ print("couldn't delete old temp directory")
def get_bkit_url():
# bpy.app.debug_value = 2
@@ -81,7 +91,7 @@ def get_temp_dir(subdir=None):
user_preferences = bpy.context.preferences.addons['blenderkit'].preferences
# tempdir = user_preferences.temp_dir
- tempdir = os.path.join(user_preferences.global_dir, 'temp')
+ tempdir = os.path.join(tempfile.gettempdir(), 'bkit_temp')
if tempdir.startswith('//'):
tempdir = bpy.path.abspath(tempdir)
try:
@@ -91,11 +101,14 @@ def get_temp_dir(subdir=None):
tempdir = os.path.join(tempdir, subdir)
if not os.path.exists(tempdir):
os.makedirs(tempdir)
+ cleanup_old_folders()
except:
- print('Cache directory not found. Resetting Cache folder path.')
+ tasks_queue.add_task((ui.add_report, ('Cache directory not found. Resetting Cache folder path.',)))
+
p = default_global_dict()
if p == user_preferences.global_dir:
- print('Global dir was already default, plese set a global directory in addon preferences to a dir where you have write permissions.')
+ message = 'Global dir was already default, plese set a global directory in addon preferences to a dir where you have write permissions.'
+ tasks_queue.add_task((ui.add_report, (message,)))
return None
user_preferences.global_dir = p
tempdir = get_temp_dir(subdir = subdir)
diff --git a/blenderkit/rerequests.py b/blenderkit/rerequests.py
index 28c7e2ca..587093e0 100644
--- a/blenderkit/rerequests.py
+++ b/blenderkit/rerequests.py
@@ -68,6 +68,8 @@ def rerequest(method, url, **kwargs):
# in non-threaded tasks
bpy.context.preferences.addons['blenderkit'].preferences.api_key = auth_token
bpy.context.preferences.addons['blenderkit'].preferences.api_key_refresh = refresh_token
+ else:
+ tasks_queue.add_task((bkit_oauth.write_tokens, (auth_token, refresh_token, oauth_response)))
kwargs['headers'] = utils.get_headers(auth_token)
response = requests.request(method, url, **kwargs)
diff --git a/blenderkit/search.py b/blenderkit/search.py
index d77784d9..bae25466 100644
--- a/blenderkit/search.py
+++ b/blenderkit/search.py
@@ -56,8 +56,8 @@ import requests, os, random
import time
import threading
import platform
-import json
import bpy
+import copy
search_start_time = 0
prev_time = 0
@@ -140,7 +140,7 @@ def fetch_server_data():
api_key = user_preferences.api_key
# Only refresh new type of tokens(by length), and only one hour before the token timeouts.
if user_preferences.enable_oauth and \
- len(user_preferences.api_key) < 38 and \
+ len(user_preferences.api_key) < 38 and len(user_preferences.api_key) > 0 and \
user_preferences.api_key_timeout < time.time() + 3600:
bkit_oauth.refresh_token_thread()
if api_key != '' and bpy.context.window_manager.get('bkit profile') == None:
@@ -266,7 +266,7 @@ def parse_result(r):
# attempt to switch to use original data gradually, since the parsing as itself should become obsolete.
asset_data.update(r)
- return asset_data
+ return asset_data
# @bpy.app.handlers.persistent
@@ -312,20 +312,17 @@ def timer_update():
asset_type = thread[2]
if asset_type == 'model':
props = scene.blenderkit_models
- json_filepath = os.path.join(icons_dir, 'model_searchresult.json')
- search_name = 'bkit model search'
+ # json_filepath = os.path.join(icons_dir, 'model_searchresult.json')
if asset_type == 'scene':
props = scene.blenderkit_scene
- json_filepath = os.path.join(icons_dir, 'scene_searchresult.json')
- search_name = 'bkit scene search'
+ # json_filepath = os.path.join(icons_dir, 'scene_searchresult.json')
if asset_type == 'material':
props = scene.blenderkit_mat
- json_filepath = os.path.join(icons_dir, 'material_searchresult.json')
- search_name = 'bkit material search'
+ # json_filepath = os.path.join(icons_dir, 'material_searchresult.json')
if asset_type == 'brush':
props = scene.blenderkit_brush
- json_filepath = os.path.join(icons_dir, 'brush_searchresult.json')
- search_name = 'bkit brush search'
+ # json_filepath = os.path.join(icons_dir, 'brush_searchresult.json')
+ search_name = f'bkit {asset_type} search'
s[search_name] = []
@@ -333,8 +330,8 @@ def timer_update():
if reports != '':
props.report = str(reports)
return .2
- with open(json_filepath, 'r') as data_file:
- rdata = json.load(data_file)
+
+ rdata = thread[0].result
result_field = []
ok, error = check_errors(rdata)
@@ -348,8 +345,9 @@ def timer_update():
# results = rdata['results']
s[search_name] = result_field
s['search results'] = result_field
- s[search_name + ' orig'] = rdata
- s['search results orig'] = rdata
+ s[search_name + ' orig'] = copy.deepcopy(rdata)
+ s['search results orig'] = s[search_name + ' orig']
+
load_previews()
ui_props = bpy.context.scene.blenderkitUI
if len(result_field) < ui_props.scrolloffset:
@@ -360,9 +358,6 @@ def timer_update():
if len(s['search results']) == 0:
tasks_queue.add_task((ui.add_report, ('No matching results found.',)))
- # (rdata['next'])
- # if rdata['next'] != None:
- # search(False, get_next = True)
else:
print('error', error)
props.report = error
@@ -374,18 +369,11 @@ def timer_update():
def load_previews():
- mappingdict = {
- 'MODEL': 'model',
- 'SCENE': 'scene',
- 'MATERIAL': 'material',
- 'TEXTURE': 'texture',
- 'BRUSH': 'brush'
- }
+
scene = bpy.context.scene
# FIRST START SEARCH
props = scene.blenderkitUI
-
- directory = paths.get_temp_dir('%s_search' % mappingdict[props.asset_type])
+ directory = paths.get_temp_dir('%s_search' % props.asset_type.lower())
s = bpy.context.scene
results = s.get('search results')
#
@@ -694,7 +682,7 @@ def write_gravatar(a_id, gravatar_path):
def fetch_gravatar(adata):
utils.p('fetch gravatar')
if adata.get('gravatarHash') is not None:
- gravatar_path = paths.get_temp_dir(subdir='g/') + adata['gravatarHash'] + '.jpg'
+ gravatar_path = paths.get_temp_dir(subdir='bkit_g/') + adata['gravatarHash'] + '.jpg'
if os.path.exists(gravatar_path):
tasks_queue.add_task((write_gravatar, (adata['id'], gravatar_path)))
@@ -790,11 +778,12 @@ def get_profile():
class Searcher(threading.Thread):
query = None
- def __init__(self, query, params):
+ def __init__(self, query, params,orig_result):
super(Searcher, self).__init__()
self.query = query
self.params = params
self._stop_event = threading.Event()
+ self.result = orig_result
def stop(self):
self._stop_event.set()
@@ -854,7 +843,7 @@ class Searcher(threading.Thread):
t = time.time()
mt('search thread started')
tempdir = paths.get_temp_dir('%s_search' % query['asset_type'])
- json_filepath = os.path.join(tempdir, '%s_searchresult.json' % query['asset_type'])
+ # json_filepath = os.path.join(tempdir, '%s_searchresult.json' % query['asset_type'])
headers = utils.get_headers(params['api_key'])
@@ -862,23 +851,11 @@ class Searcher(threading.Thread):
rdata['results'] = []
if params['get_next']:
- with open(json_filepath, 'r') as infile:
- try:
- origdata = json.load(infile)
- urlquery = origdata['next']
- # rparameters = {}
- if urlquery == None:
- return;
- except:
- # in case no search results found on drive we don't do next page loading.
- params['get_next'] = False
+ urlquery = self.result['next']
if not params['get_next']:
- url = paths.get_api_url() + 'search/'
+ urlquery = self.query_to_url()
- urlquery = url
- # rparameters = query
- urlquery = self.query_to_url()
try:
utils.p(urlquery)
r = rerequests.get(urlquery, headers=headers) # , params = rparameters)
@@ -941,10 +918,10 @@ class Searcher(threading.Thread):
# we save here because a missing thumbnail check is in the previous loop
# we can also prepend previous results. These have downloaded thumbnails already...
if params['get_next']:
- rdata['results'][0:0] = origdata['results']
-
- with open(json_filepath, 'w') as outfile:
- json.dump(rdata, outfile)
+ rdata['results'][0:0] = self.result['results']
+ self.result = rdata
+ # with open(json_filepath, 'w') as outfile:
+ # json.dump(rdata, outfile)
killthreads_sml = []
for k in thumb_sml_download_threads.keys():
@@ -1157,7 +1134,7 @@ def mt(text):
utils.p(text, alltime, since_last)
-def add_search_process(query, params):
+def add_search_process(query, params, orig_result):
global search_threads
while (len(search_threads) > 0):
@@ -1166,10 +1143,10 @@ def add_search_process(query, params):
# TODO CARE HERE FOR ALSO KILLING THE THREADS...AT LEAST NOW SEARCH DONE FIRST WON'T REWRITE AN OLDER ONE
tempdir = paths.get_temp_dir('%s_search' % query['asset_type'])
- thread = Searcher(query, params)
+ thread = Searcher(query, params, orig_result)
thread.start()
- search_threads.append([thread, tempdir, query['asset_type']])
+ search_threads.append([thread, tempdir, query['asset_type'],{}])# 4th field is for results
mt('thread started')
@@ -1184,6 +1161,14 @@ def search(category='', get_next=False, author_id=''):
scene = bpy.context.scene
ui_props = scene.blenderkitUI
+ ### updating of search categories was moved here, due to the reason that BlenderKit created the blenderkit_data
+ # folder upon registration of BlenderKit, which wasn't a favourite option for some users (devs running tests).
+ # user_preferences = bpy.context.preferences.addons['blenderkit'].preferences
+ # if not user_preferences.first_run:
+ # api_key = user_preferences.api_key
+ # if bpy.context.window_manager.get('bkit_categories') is None:
+ # categories.fetch_categories_thread(api_key)
+
if ui_props.asset_type == 'MODEL':
if not hasattr(scene, 'blenderkit'):
return;
@@ -1195,13 +1180,14 @@ def search(category='', get_next=False, author_id=''):
return;
props = scene.blenderkit_scene
query = build_query_scene()
+
if ui_props.asset_type == 'MATERIAL':
if not hasattr(scene, 'blenderkit_mat'):
return;
props = scene.blenderkit_mat
query = build_query_material()
- utils.p(query)
+
if ui_props.asset_type == 'TEXTURE':
if not hasattr(scene, 'blenderkit_tex'):
@@ -1209,12 +1195,14 @@ def search(category='', get_next=False, author_id=''):
# props = scene.blenderkit_tex
# query = build_query_texture()
+
if ui_props.asset_type == 'BRUSH':
if not hasattr(scene, 'blenderkit_brush'):
return;
props = scene.blenderkit_brush
query = build_query_brush()
+
if props.is_searching and get_next == True:
return;
@@ -1242,8 +1230,11 @@ def search(category='', get_next=False, author_id=''):
# if free_only:
# query['keywords'] += '+is_free:true'
-
- add_search_process(query, params)
+ orig_results = scene.get(f'bkit {ui_props.asset_type.lower()} search orig', {})
+ if orig_results != {}:
+ #ensure it's a copy in dict for what we are passing to thread:
+ orig_results = orig_results.to_dict()
+ add_search_process(query, params, orig_results)
tasks_queue.add_task((ui.add_report, ('BlenderKit searching....', 2)))
props.report = 'BlenderKit searching....'
diff --git a/blenderkit/ui.py b/blenderkit/ui.py
index f13b4778..a1cd66d9 100644
--- a/blenderkit/ui.py
+++ b/blenderkit/ui.py
@@ -796,14 +796,14 @@ def draw_callback_2d_search(self, context):
index = a + ui_props.scrolloffset + b * ui_props.wcount
iname = utils.previmg_name(index)
img = bpy.data.images.get(iname)
-
- w = int(ui_props.thumb_size * img.size[0] / max(img.size[0], img.size[1]))
- h = int(ui_props.thumb_size * img.size[1] / max(img.size[0], img.size[1]))
- crop = (0, 0, 1, 1)
- if img.size[0] > img.size[1]:
- offset = (1 - img.size[1] / img.size[0]) / 2
- crop = (offset, 0, 1 - offset, 1)
if img is not None:
+ w = int(ui_props.thumb_size * img.size[0] / max(img.size[0], img.size[1]))
+ h = int(ui_props.thumb_size * img.size[1] / max(img.size[0], img.size[1]))
+ crop = (0, 0, 1, 1)
+ if img.size[0] > img.size[1]:
+ offset = (1 - img.size[1] / img.size[0]) / 2
+ crop = (offset, 0, 1 - offset, 1)
+
ui_bgl.draw_image(x, y, w, w, img, 1,
crop=crop)
if index == ui_props.active_index:
@@ -815,7 +815,7 @@ def draw_callback_2d_search(self, context):
# w + 2*highlight_margin, h + 2*highlight_margin , highlight)
else:
- ui_bgl.draw_rect(x, y, w, h, white)
+ ui_bgl.draw_rect(x, y, ui_props.thumb_size, ui_props.thumb_size, white)
result = search_results[index]
if result['downloaded'] > 0:
diff --git a/blenderkit/ui_panels.py b/blenderkit/ui_panels.py
index 7de2a240..1083b6a6 100644
--- a/blenderkit/ui_panels.py
+++ b/blenderkit/ui_panels.py
@@ -94,7 +94,7 @@ def draw_ratings(layout, context):
# row = layout.row()
# op = row.operator("object.blenderkit_rating_upload", text="Send rating", icon='URL')
# return op
- #re-enable layout if included in longer panel
+ # re-enable layout if included in longer panel
def draw_not_logged_in(source):
@@ -337,7 +337,6 @@ def draw_panel_model_search(self, context):
# draw_panel_categories(self, context)
-
def draw_panel_scene_search(self, context):
s = context.scene
props = s.blenderkit_scene
@@ -567,12 +566,9 @@ def draw_panel_material_search(self, context):
# if props.search_engine == 'OTHER':
# layout.prop(props, 'search_engine_other')
-
-
# draw_panel_categories(self, context)
-
def draw_panel_material_ratings(self, context):
draw_ratings(self.layout, context) # , props)
# op.asset_type = 'MATERIAL'
@@ -641,12 +637,11 @@ class VIEW3D_PT_blenderkit_advanced_model_search(Panel):
bl_label = "Search filters"
bl_options = {'DEFAULT_CLOSED'}
-
@classmethod
def poll(cls, context):
s = context.scene
ui_props = s.blenderkitUI
- return ui_props.down_up == 'SEARCH' and ui_props.asset_type =='MODEL'
+ return ui_props.down_up == 'SEARCH' and ui_props.asset_type == 'MODEL'
def draw(self, context):
s = context.scene
@@ -696,6 +691,7 @@ class VIEW3D_PT_blenderkit_advanced_model_search(Panel):
# ADULT
# layout.prop(props, "search_adult") # , text ='condition of object new/old e.t.c.')
+
class VIEW3D_PT_blenderkit_advanced_material_search(Panel):
bl_category = "BlenderKit"
bl_idname = "VIEW3D_PT_blenderkit_advanced_material_search"
@@ -709,7 +705,7 @@ class VIEW3D_PT_blenderkit_advanced_material_search(Panel):
def poll(cls, context):
s = context.scene
ui_props = s.blenderkitUI
- return ui_props.down_up == 'SEARCH' and ui_props.asset_type =='MATERIAL'
+ return ui_props.down_up == 'SEARCH' and ui_props.asset_type == 'MATERIAL'
def draw(self, context):
s = context.scene
@@ -737,6 +733,7 @@ class VIEW3D_PT_blenderkit_advanced_material_search(Panel):
row.prop(props, "search_file_size_min", text='min')
row.prop(props, "search_file_size_max", text='max')
+
class VIEW3D_PT_blenderkit_categories(Panel):
bl_category = "BlenderKit"
bl_idname = "VIEW3D_PT_blenderkit_categories"
@@ -750,10 +747,14 @@ class VIEW3D_PT_blenderkit_categories(Panel):
def poll(cls, context):
s = context.scene
ui_props = s.blenderkitUI
- return ui_props.down_up == 'SEARCH'
+ mode = True
+ if ui_props.asset_type == 'BRUSH' and not (context.sculpt_object or context.image_paint_object):
+ mode = False
+ return ui_props.down_up == 'SEARCH' and mode
def draw(self, context):
- draw_panel_categories(self,context)
+ draw_panel_categories(self, context)
+
class VIEW3D_PT_blenderkit_import_settings(Panel):
bl_category = "BlenderKit"
@@ -776,7 +777,6 @@ class VIEW3D_PT_blenderkit_import_settings(Panel):
s = context.scene
ui_props = s.blenderkitUI
-
if ui_props.asset_type == 'MODEL':
# noinspection PyCallByClass
props = s.blenderkit_models
@@ -821,7 +821,7 @@ class VIEW3D_PT_blenderkit_unified(Panel):
# row = row.split().row()
# layout.alert = True
# layout.alignment = 'CENTER'
- row = layout.row(align = True)
+ row = layout.row(align=True)
row.scale_x = 1.6
row.scale_y = 1.6
# split = row.split(factor=.5)
@@ -966,10 +966,10 @@ def draw_asset_context_menu(self, context, asset_data):
aob = bpy.context.selected_objects[0]
op = layout.operator('scene.blenderkit_download', text='Replace Active Models')
- #this checks if the menu got called from right-click in assetbar(then index is 0 - x) or
+ # this checks if the menu got called from right-click in assetbar(then index is 0 - x) or
# from a panel(then replacement happens from the active model)
if ui_props.active_index == -3:
- #called from addon panel
+ # called from addon panel
o = utils.get_active_model()
op.asset_base_id = o['asset_data']['assetBaseId']
else:
@@ -1232,6 +1232,7 @@ classess = (
UrlPopupDialog
)
+
def register_ui_panels():
for c in classess:
bpy.utils.register_class(c)
diff --git a/blenderkit/utils.py b/blenderkit/utils.py
index 5544ba3e..503a93f2 100644
--- a/blenderkit/utils.py
+++ b/blenderkit/utils.py
@@ -209,9 +209,9 @@ def get_upload_props():
def previmg_name(index, fullsize=False):
if not fullsize:
- return '.bkit_preview_' + str(index).zfill(2)
+ return '.bkit_preview_' + str(index).zfill(3)
else:
- return '.bkit_preview_full_' + str(index).zfill(2)
+ return '.bkit_preview_full_' + str(index).zfill(3)
def get_active_brush():