Skip to content
Snippets Groups Projects
search.py 37 KiB
Newer Older
  • Learn to ignore specific revisions
  • Vilem Duha's avatar
    Vilem Duha committed
            return;
        if category != '':
    
            query['category_subtree'] = category
    
    Vilem Duha's avatar
    Vilem Duha committed
        # utils.p('searching')
    
    Vilem Duha's avatar
    Vilem Duha committed
        props.is_searching = True
    
        params = {
            'scene_uuid': bpy.context.scene.get('uuid', None),
            'addon_version': version_checker.get_addon_version(),
    
            'api_key': user_preferences.api_key,
    
    Vilem Duha's avatar
    Vilem Duha committed
            'get_next': get_next
        }
    
        if free_only:
            query['keywords'] += '+is_free:true'
    
        add_search_process(query, params)
        props.report = 'BlenderKit searching....'
    
    
    def search_update(self, context):
    
    Vilem Duha's avatar
    Vilem Duha committed
        utils.p('search updater')
    
    Vilem Duha's avatar
    Vilem Duha committed
        if self.search_keywords != '':
            search()
    
    
    class SearchOperator(Operator):
        """Tooltip"""
        bl_idname = "view3d.blenderkit_search"
        bl_label = "BlenderKit asset search"
    
        own: BoolProperty(name="own assets only",
                          description="Find all own assets",
                          default=False)
        category: StringProperty(
            name="category",
            description="search only subtree of this category",
            default="")
    
        get_next: BoolProperty(name="next page",
                               description="get next page from previous search",
                               default=False)
    
        @classmethod
        def poll(cls, context):
            return True
    
        def execute(self, context):
            search(own=self.own, category=self.category, get_next=self.get_next)
            bpy.ops.view3d.blenderkit_asset_bar()
    
            return {'FINISHED'}
    
    
    classes = [
        SearchOperator
    ]
    
    
    def register_search():
        bpy.app.handlers.load_post.append(scene_load)
    
        for c in classes:
            bpy.utils.register_class(c)
    
        # bpy.app.timers.register(timer_update, persistent = True)
    
    
    Vilem Duha's avatar
    Vilem Duha committed
    
    
    def unregister_search():
        bpy.app.handlers.load_post.remove(scene_load)
    
        for c in classes:
            bpy.utils.unregister_class(c)
    
        # bpy.app.timers.unregister(timer_update)
    
    
    '''
    search - 
    build query
    START THREAD
    send query (bg allready)
    get result - metadata, small thumbnails, big thumbnails paths (now genereate this?)
    write metadata, possibly to 
    download small thumbnails first
    start big thumbnails download. these don't have to be there on updates, if they aren't the Image in image editor doesn't get updated.
    parse metadata, save it in json in the temp dir which gets read on each update of the search.
    END THREAD
    when download is triggered, get also this metadata from json. E
    pass this single - item metadata in the download functions, threads.
    '''