source: lliurex-store/trunk/fuentes/lliurex-appstore.install/usr/bin/plugins/loadStore.py @ 3144

Last change on this file since 3144 was 3144, checked in by Juanma, 3 years ago

wip on yml

File size: 2.2 KB
Line 
1import os
2import gi
3from gi.repository import Gio
4gi.require_version('AppStreamGlib', '1.0')
5from gi.repository import AppStreamGlib as appstream
6
7class loadstore:
8        def __init__(self):
9                self.dbg=1
10                self.pluginInfo={'load':'*'}
11                self.store=''
12                self.progress=0
13        #def __init__
14
15        def set_debug(self,dbg='1'):
16                self.dbg=int(dbg)
17                self._debug ("Debug enabled")
18        #def set_debug
19
20        def _debug(self,msg=''):
21                if self.dbg==1:
22                        print ('DEBUG Load: '+msg)
23        #def _debug
24
25        def register(self):
26                return(self.pluginInfo)
27        #def register
28
29        def execute_action(self,action):
30                self.store=appstream.Store()
31                if action=='load':
32                        self.load_store(self.store)
33                self.progress=100
34                return (self.store)
35        #def execute_action
36
37        def load_store(self,store):
38                iconPath='/usr/share/icons/hicolor/128x128'
39                store.load(appstream.StoreLoadFlags.APP_INFO_SYSTEM)
40                store.load(appstream.StoreLoadFlags.APP_INSTALL)
41                store.load(appstream.StoreLoadFlags.APP_INFO_USER)
42                store.load(appstream.StoreLoadFlags.DESKTOP)
43                lliurex_dir="/usr/share/app-info/xmls2"
44                store.set_origin('lliurex')
45                if os.path.exists(lliurex_dir):
46                        for lliurex in os.listdir(lliurex_dir):
47                                #                               if lliurex.endswith('.yml'):
48                                if lliurex.endswith('.xml') or lliurex.endswith('.yml'):
49                                        storePath=Gio.File.new_for_path(lliurex_dir+'/'+lliurex)
50                                        self._debug("Adding file "+lliurex_dir+'/'+lliurex)
51                                        try:
52                                                store.from_file(storePath,iconPath,None)
53                                        except Exception as e:
54                                                self._debug("Couldn't add file "+lliurex+" to store")
55                                                self._debug("Reason: "+str(e))
56                                                pass
57                store=self._sanitize_store(store)
58                self.store=store
59                return(store)
60        #def load_store
61
62        def _parse_desktop(self,store):
63                desktopDir='/usr/share/applications'
64                return(store)
65                applist=[]
66                for app in store.get_apps():
67                        if os.path.isfile(desktopDir+'/'+app.get_id()):
68                                try:
69                                        app.parse_file(desktopDir+'/'+desktop,appstream.AppParseFlags.APPEND_DATA)
70                                        store.add_app(app)
71                                except Exception as e:
72                                        pass
73#                               for veto in app.get_vetos():
74#                                       app.remove_veto(veto)
75#                                       store.add_app(app)
76                return(store)
77        #def _parse_desktop
78
79        def _sanitize_store(self,store):
80                apps_to_remove=[]
81                applist=store.get_apps()
82                for app in applist:
83                        if not app.get_pkgnames():
84                                store.remove_app(app)
85       
86                return (store)
87        #def _sanitize_store
Note: See TracBrowser for help on using the repository browser.