Changeset 8185


Ignore:
Timestamp:
Oct 24, 2018, 9:48:42 AM (14 months ago)
Author:
Juanma
Message:

improved cache icons

Location:
lliurex-store/trunk/fuentes/python3-lliurex-store.install/usr/share/lliurexstore/plugins
Files:
2 edited

Legend:

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

    r7730 r8185  
    3030                self.cache_dir=os.getenv("HOME")+"/.cache/lliurex-store"
    3131                self.icons_dir=self.cache_dir+"/icons"
    32                 self.bundles_dir=self.cache_dir+"/xmls/appimage"
    33                 self.bundle_types=['appimg']
     32                self.cache_xmls=self.cache_dir+"/xmls/appimage"
    3433                self.appimage_dir=os.getenv("HOME")+"/.local/bin"
    3534                #To get the description of an app we must go to a specific url defined in url_info.
     
    4342                self.icon_cache_enabled=True
    4443                self.image_cache_enabled=True
     44                self.cache_last_update=self.cache_xmls+'/.appimage.lu'
    4545                self.apps_for_store=queue.Queue()
    4646        #def __init__
     
    7979                        self._chk_installDir()
    8080                        if action=='load':
    81                                 self._load_appimage_store()
     81                                self._load_appimage_store(self.store)
    8282                                #wait till threads end (if any)
    8383                                self._debug("Ending threads...")
     
    181181        #def _remove_appimage
    182182
    183         def _load_appimage_store(self,store=None):
    184                 self._get_bundles_catalogue()
    185                 self._get_external_catalogue()
    186                 if os.path.exists(self.bundles_dir):
    187                         for bundle_type in self.bundle_types:
    188                                 self._debug("Loading %s catalog"%bundle_type)
    189                                 store=self._generic_file_load(self.bundles_dir+'/'+bundle_type,store)
     183        def _load_appimage_store(self,store):
     184                #Look if cache is up-to-date
     185                sw_update_cache=True
     186                if os.path.isfile(self.cache_last_update):
     187                        epoch_time=time.time()
     188                        fcache=open(self.cache_last_update,'r')
     189                        fcache_update=fcache.read()
     190                        if not fcache_update:
     191                                fcache_update=0
     192                        if int(epoch_time)-int(fcache_update)<86400:
     193                                if os.listdir(os.path.dirname(self.cache_xmls)):
     194                                        self._debug("Loading appimage from cache")
     195                                        sw_update_cache=False
     196                if sw_update_cache:
     197                        self._get_bundles_catalogue()
     198                        self._get_external_catalogue()
     199                        fcache=open(self.cache_last_update,'w')
     200                        fcache.write(str(int(time.time())))
     201                if os.path.exists(self.cache_xmls):
     202                        self._debug("Loading appimage catalog")
     203                        store=self._generic_file_load(self.cache_xmls,store)
    190204                return(store)
    191205        #def load_bundles_catalog(self)
     
    197211                files=os.listdir(target_path)
    198212                for target_file in os.listdir(target_path):
    199                         if target_file.endswith('appdata.xml'):
     213                        if target_file.endswith('.xml'):
    200214                                store_path=Gio.File.new_for_path(target_path+'/'+target_file)
    201215                                self._debug("Adding file "+target_path+'/'+target_file)
     
    212226                appdict={}
    213227                all_apps=[]
    214                 outdir=self.bundles_dir+'/appimg/'
     228                outdir=self.cache_xmls
    215229                #Load repos
    216230                for repo_name,repo_info in self.repos.items():
    217                         if not os.path.isdir(self.bundles_dir):
     231                        if not os.path.isdir(self.cache_xmls):
    218232                                try:
    219                                         os.makedirs(self.bundles_dir)
     233                                        os.makedirs(self.cache_xmls)
    220234                                except:
    221235                                        self._debug("appImage catalogue could not be fetched: Permission denied")
     
    232246                applist=[]
    233247                all_apps=[]
    234                 outdir=self.bundles_dir+'/appimg/'
     248                outdir=self.cache_xmls
    235249                #Load external apps
    236250                for app_name,app_info in self._get_external_appimages().items():
    237                         if os.path.isdir(self.bundles_dir):
     251                        if os.path.isdir(self.cache_xmls):
    238252                                appinfo=self._init_appinfo()
    239253                                if 'name' in app_info.keys():
     
    397411                sw_new=True
    398412
    399                 icon=appstream.Icon()
    400                 screenshot=appstream.Screenshot()
    401413                if appinfo['license']:
    402414                        app.set_project_license(appinfo['license'])
     
    441453                                app.add_category("appimage")
    442454                if appinfo['icon']:
     455                        icon=appstream.Icon()
    443456                        if self.icon_cache_enabled:
    444457                                icon.set_kind(appstream.IconKind.LOCAL)
    445                                 icon.set_name(self._download_file(appinfo['icon'],appinfo['name'],self.icons_dir))
     458                                icon_fn=self._download_file(appinfo['icon'],appinfo['name'],self.icons_dir)
     459                                icon.set_filename(icon_fn)
    446460                        else:
    447461                                icon.set_kind(appstream.IconKind.REMOTE)
     
    450464                        app.add_icon(icon)
    451465                if appinfo['thumbnails']:
     466                        screenshot=appstream.Screenshot()
    452467                        img=appstream.Image()
    453468                        if not appinfo['thumbnails'][0].startswith('http'):
     
    460475                #Adds the app to the store
    461476                self.apps_for_store.put(app)
    462                 if not os.path.isfile(self.bundles_dir+'/'+app.get_id_filename()):
    463                         gioFile=Gio.File.new_for_path('%s/%s.xml'%(self.bundles_dir,app.get_id_filename()))
     477                if not os.path.isfile(self.cache_xmls+'/'+app.get_id_filename()):
     478                        xml_path='%s/%s.xml'%(self.cache_xmls,app.get_id_filename())
     479                        gioFile=Gio.File.new_for_path(xml_path)
    464480                        app.to_file(gioFile)
     481                        #Fix some things in app_file...
     482                        xml_file=open(xml_path,'r',encoding='utf-8')
     483                        xml_data=xml_file.readlines()
     484                        xml_file.close()
     485                        self._debug("fixing %s"%xml_path)
     486                        try:
     487                                xml_data[0]=xml_data[0]+"<components>\n"
     488                                xml_data[-1]=xml_data[-1]+"\n"+"</components>"
     489                        except:
     490                                pass
     491                        xml_file=open(xml_path,'w')
     492                        xml_file.writelines(xml_data)
     493                        xml_file.close()
     494
    465495        #def _add_appimage
    466496
     
    487517                applist=[item.lower() for item in applist]
    488518                for xml_file in os.listdir(outdir):
    489                         if xml_file.endswith('appdata.xml'):
    490                                 xml_files_list.append(xml_file.lower().replace('appdata.xml','appimage'))
     519                        if xml_file.endswith('.xml'):
     520                                xml_files_list.append(xml_file.lower().replace('.xml','appimage'))
    491521       
    492522                if xml_files_list:
    493523                        xml_discard_list=list(set(xml_files_list).difference(applist))
    494524                        for discarded_file in xml_discard_list:
    495                                 os.remove(outdir+'/'+discarded_file.replace('appimage','appdata.xml'))
     525                                os.remove(outdir+'/'+discarded_file.replace('appimage','.xml'))
    496526        #def _clean_bunlde_catalogue
    497527
  • lliurex-store/trunk/fuentes/python3-lliurex-store.install/usr/share/lliurexstore/plugins/snapManager.py

    r8180 r8185  
    128128                                fcache_update=0
    129129                        if int(epoch_time)-int(fcache_update)<86400:
    130                                 if not os.listdir(os.path.dirname(self.cache_xmls)):
     130                                if os.listdir(os.path.dirname(self.cache_xmls)):
    131131                                        self._debug("Loading snap from cache")
    132132                                        store=self._load_from_cache(store)
     
    177177                                self._debug("Adding file %s/%s"%(self.cache_xmls,target_file))
    178178                                try:
    179                                         store.from_file(store_file,None,None)
     179                                        store.from_file(store_file,'',None)
    180180                                except Exception as e:
    181181                                        self._debug("Couldn't add file %s to store"%target_file)
     
    216216                        if self.icon_cache_enabled:
    217217                                icon.set_kind(appstream.IconKind.LOCAL)
    218                                        
    219                                 icon.set_name(self._download_file(pkg.get_icon(),pkg.get_name(),self.icons_folder))
     218                                icon.set_filename(self._download_file(pkg.get_icon(),pkg.get_name(),self.icons_folder))
    220219                        else:
    221220                                icon.set_kind(appstream.IconKind.REMOTE)
Note: See TracChangeset for help on using the changeset viewer.