Ignore:
Timestamp:
Jan 18, 2018, 1:34:53 PM (3 years ago)
Author:
Juanma
Message:

Added snap support. Minor changes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • lliurex-store/trunk/fuentes/python3-lliurex-store.install/usr/share/lliurexstore/plugins/searchManager.py

    r6547 r6645  
    77        def __init__(self):
    88                self.locale=locale.getlocale()[0]
    9                 self.dbg=0
     9                self.dbg=False
    1010                self.store=''
    11                 self.pluginInfo={'search':'*','list':'*','list_sections':'*','info':'*'}
    12                 self.precision=10
     11                self.plugin_actions={'search':'*','list':'*','list_sections':'*','info':'*'}
     12                self.precision=1
    1313                self.applist=[]
    1414                self.progress=0
     
    2121                return (self.applist)
    2222
    23         def set_debug(self,dbg='1'):
    24                 self.dbg=int(dbg)
     23        def set_debug(self,dbg):
     24                self.dbg=dbg
    2525                self._debug ("Debug enabled")
    2626        #def set__debug
    2727
    2828        def _debug(self,msg=''):
    29                 if self.dbg==1:
     29                if self.dbg:
    3030                        print ('DEBUG Search: '+msg)
    3131        #def _debug
    3232
    3333        def register(self):
    34                 return(self.pluginInfo)
    35 
    36         def execute_action(self,appstreamStore,action,tokens,exact_match_for_search=False):
     34                return(self.plugin_actions)
     35
     36        def execute_action(self,appstreamStore,action,tokens,exact_match_for_search=False,max_results=0):
    3737                self.progress=0
    3838                if not type(tokens) is str:
     
    5757                if self.store:
    5858                        if action=='list':
    59                                 self._list_category(tokens)
     59                                self._list_category(tokens,max_results)
    6060                        if action=='list_sections':
    6161                                self._list_sections()
     
    9696        def _list_sections(self):
    9797                applist=[]
    98                 catDict={}
     98                categories={}
    9999                for app in self.store.get_apps():
    100100                        for cat in app.get_categories():
    101                                 if cat not in catDict.keys():
    102                                         catDict[cat]=1
     101                                if cat not in categories.keys():
     102                                        categories[cat]=1
    103103                                else:
    104                                         catDict[cat]=catDict[cat]+1
    105                 for section in catDict:
    106                         applist.append({str(section):catDict[section]})
     104                                        categories[cat]=categories[cat]+1
     105                for section in categories:
     106                        applist.append({str(section):categories[section]})
    107107                self.result['data']=applist
    108108                if len(applist):
     
    112112                return(applist)
    113113
    114         def _list_category(self,tokens=[]):
     114        def _list_category(self,tokens=[],max_results=0):
    115115                applist=[]
    116116                self._debug("tokens: "+str(tokens))
     117                self._debug("Max results: %s"%max_results)
    117118                if len(tokens)>=1:
    118119                        self._debug("Searching category "+str(tokens))
    119                         setCategories=set(tokens)
     120                        categories_set=set(tokens)
    120121                        apps_in_store=self.store.get_apps()
    121122                        count_apps=len(apps_in_store)
     
    124125                        for app in apps_in_store:
    125126                                self.progress=self.progress+inc
    126                                 if 'setCategories' in locals():
     127                                if 'categories_set' in locals():
    127128                                        try:
    128                                                 appCategories=[cat.lower() for cat in app.get_categories()]
     129                                                app_categories=[cat.lower() for cat in app.get_categories()]
    129130                                        except:
    130131                                                pass
    131                                         setAppCategories=set(appCategories)
    132                                         if setCategories.issubset(setAppCategories):
     132                                        app_categories_set=set(app_categories)
     133                                        if categories_set.issubset(app_categories_set):
    133134                                                self._debug("Found "+app.get_id())
    134135                                                applist.append(app)
     
    136137                        self._debug("Loading all apps in store")
    137138                        applist=self.store.get_apps()
     139                        categories_set=set(['snap','appimage'])
     140                        applist_2=[]
     141                        for app in applist:
     142                                if 'categories_set' in locals():
     143                                        try:
     144                                                app_categories=[cat.lower() for cat in app.get_categories()]
     145                                        except:
     146                                                pass
     147                                        app_categories_set=set(app_categories)
     148                                        if not categories_set.issubset(app_categories_set):
     149                                                applist_2.append(app)
     150                                        else:
     151                                                print("*************")
     152                                                print("Removing %s"%app.get_pkgname())
     153                                                print("*************")
     154                        applist=applist_2
    138155#                       for app in applist:
    139156#                               self._debug("Added "+app.get_id())
     157                if max_results:
     158                        applist=applist[0:max_results]
     159                #List only valid categories
     160
    140161                self.result['data']=applist
    141162                if len(applist):
     
    145166                return(applist)
    146167
    147         def _app_exists(self,appName):
    148                 self._debug("Trying direct match for "+appName)
     168        def _app_exists(self,app_name):
     169                self._debug("Trying direct match for "+app_name)
    149170                app=None
    150171                #1.- Try exact match
    151                 app=self.store.get_app_by_id(appName)
     172                app=self.store.get_app_by_id(app_name)
    152173                if not app:
    153174                #2.- Try exact match with zero-lliurex- for the zomandos
    154                         app=self.store.get_app_by_id("zero-lliurex-"+appName)
    155                         if not app:
    156                 #2.- Try exact match with .desktop
    157                                 app=self.store.get_app_by_id(appName+".desktop")
     175                        app=self.store.get_app_by_id("zero-lliurex-"+app_name)
     176                if not app:
     177                #3.- Try exact match with .desktop
     178                        app=self.store.get_app_by_id(app_name+".desktop")
     179                if not app:
     180                #4.- Try exact match by pkgname
     181                        app=self.store.get_app_by_pkgname(app_name)
     182                self._debug("App found %s"%app)
    158183                return(app)
    159184
     
    162187                self._debug("Searching app by fuzzy match")
    163188                if not applist:
    164                         insertPosition=1
    165                 else:
    166                         insertPosition=len(applist)+1
     189                        position=1
     190                else:
     191                        position=len(applist)+1
    167192                apps_in_store=self.store.get_apps()
    168193                if apps_in_store:
    169                         auxDict={}
     194                        tmp_app_dict={}
    170195                        count_apps=len(apps_in_store)
    171196                        self.progress=0
     
    179204                                                        if "appimage" in app.get_id().lower():
    180205                                                                score=1
    181                                                         if score in auxDict:
    182                                                                 auxDict[score].append(app)
     206                                                        if score in tmp_app_dict:
     207                                                                tmp_app_dict[score].append(app)
    183208                                                        else:
    184                                                                 auxDict[score]=[app]
    185                         for match in sorted(auxDict):
    186                                 for app in auxDict[match]:
     209                                                                tmp_app_dict[score]=[app]
     210                        for match in sorted(tmp_app_dict):
     211                                for app in tmp_app_dict[match]:
    187212                                        if app not in applist:
    188213                                                self._debug("Adding app "+app.get_id() + " with score: "+str(match))
     
    192217        def _get_app_by_pkgname(self,tokens,applist=[]):
    193218                if not applist:
    194                         insertPosition=1
    195                 else:
    196                         insertPosition=len(applist)+1
     219                        position=1
     220                else:
     221                        position=len(applist)+1
    197222                apps_in_store=self.store.get_apps()
    198223                if apps_in_store:
Note: See TracChangeset for help on using the changeset viewer.