Skip to content
Snippets Groups Projects
search.py 37.2 KiB
Newer Older
  • Learn to ignore specific revisions
  • Vilem Duha's avatar
    Vilem Duha committed
                return;
            props = scene.blenderkit_brush
            query = build_query_brush()
    
        if props.is_searching and get_next == True:
            return;
    
    Vilem Duha's avatar
    Vilem Duha committed
        if category != '':
    
            query['category_subtree'] = category
    
        if author_id != '' and user_preferences.enable_author_search:
            query['author_id'] = author_id
    
    
    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'
    
    Vilem Duha's avatar
    Vilem Duha committed
    
        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="")
    
    
        author_id: StringProperty(
            name="Author ID",
            description="Author ID - search only assets by this author",
            default="")
    
    
    Vilem Duha's avatar
    Vilem Duha committed
        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, author_id=self.author_id)
    
    Vilem Duha's avatar
    Vilem Duha committed
            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.
    '''