source: lliurex-store/trunk/fuentes/python3-lliurex-store.install/usr/share/lliurexstore/plugins/infoManager.py @ 3869

Last change on this file since 3869 was 3869, checked in by Juanma, 2 years ago

wip

File size: 4.9 KB
Line 
1import locale
2import re
3class infomanager:
4        def __init__(self):
5                self.dbg=0
6                self.pluginInfo={'get_info':'*'}
7                self.applistInfo=[]
8                self.progress=0
9                self.inc=0
10                self._set_locale()
11        #def __init__
12
13        def set_debug(self,dbg='1'):
14                self.dbg=int(dbg)
15                self._debug ("Debug enabled")
16        #def set__debug
17
18        def _debug(self,msg=''):
19                if self.dbg==1:
20                        print ('DEBUG Info: '+str(msg))
21        #def _debug
22
23        def register(self):
24                return(self.pluginInfo)
25        #def register
26
27        def execute_action(self,appstream,action,applist):
28                self.appstream=appstream
29                count=len(applist)
30                if action=='get_info' and count>0:
31                        inc=100.0/count
32                        self._get_info(applist)
33                self.progress=100
34                return(self.applistInfo)
35        #def execute_action
36
37        def _callback_progress(self):
38                self.progress=self.progress+self.inc
39        #def _callback_progress
40
41        def _set_locale(self):
42                if locale.getdefaultlocale()[0]=="ca_ES":
43                        self.locale=['ca_ES@valencia','ca@valencia','ca','ca_ES','es_ES','es','en_US','en','C']
44                else:
45                        if locale.getdefaultlocale()[0]=="es_ES":
46                                self.locale=['es_ES','es','ca_ES@valencia','ca@valencia','ca','ca_ES','en_US','en','C']
47                        else:
48                                self.locale=[locale.getlocale()[0],'en_US','en','ca_ES@valencia','ca@valencia','ca','es_ES','es','C']
49        #def _set_locale
50
51        def _get_info(self,applist):
52                applistInfo=[]
53                for app in applist:
54                        appInfo=self._init_appInfo()
55#                       self._debug("Gathering package info for "+app.get_id())
56                        if app.get_id():
57                                appInfo['id']=app.get_id()
58                        for localeItem in self.locale:
59                                if app.get_name(localeItem):
60                                        appInfo['name']=app.get_name(localeItem)
61                                        break
62                        if app.get_release_default():
63                                appInfo['version']=app.get_release_default().get_version()
64                        else:
65                                for release in app.get_releases():
66                                        appinfo['version']=release.get_version()
67                                        break
68                        if app.get_pkgname_default():
69                                appInfo['package']=app.get_pkgname_default()
70                        if app.get_project_license():
71                                appInfo['license']=app.get_project_license()
72                        else:
73                                orig=app.get_origin()
74                                if orig:
75                                        if '-main' in orig or '-universe' in orig:
76                                                appInfo['license']='open source'
77                                        else:
78                                                appInfo['license']='propietary/restricted'
79                        for localeItem in self.locale:
80                                if app.get_comment(localeItem):
81                                        appInfo['summary']=app.get_comment(localeItem)
82                                        break
83                        for localeItem in self.locale:
84                                if app.get_description(localeItem):
85                                        appInfo['description']=app.get_description(localeItem)
86                                        break
87                        if app.get_categories():
88                                appInfo['categories']=app.get_categories()
89                        if app.get_icon_default():
90                                appInfo['icon']=app.get_icon_default().get_name()
91#                               if app.get_icon_default():
92#                                       appInfo['icon']=appInfo['icon']+'/'+app.get_icon_default().get_name()
93                        if app.get_screenshots():       
94                                thumbnails_list=[]
95                                default_screenshot=''
96                                screenshots_list=[]
97                                for screenshot in app.get_screenshots():
98                                        for img in screenshot.get_images():
99                        #The values are the values of appstream.ImageKind. 1=Source, 2=Thumbnail, 0=UNKNOWN
100                        #yml currently doen's support unkown images so we assign videos depending on file extension
101                                                if not re.search(r'\.....?$',img.get_url()):
102                                                        appInfo['video']=img.get_url()
103                                                        continue
104                                                if img.get_kind()==0:   
105                                                        appInfo['video']=img.get_url()
106                                                        continue
107                                                if img.get_kind()==1: #2=Default;1=normal;0=unknown
108                                                        default_screenshot=img.get_url()
109                                                        screenshots_list.append(img.get_url())
110                                                        continue
111                                                if img.get_kind()==2:   
112                                                        thumbnails_list.append(img.get_url())
113                                                        continue
114
115                                        appInfo['thumbnails']=thumbnails_list
116                                appInfo['screenshot']=default_screenshot
117                                appInfo["screenshots"]=screenshots_list
118                        #The values are the values of appstream.UrlKind. 1=HOMEPAGE, 0=UNKNOWN
119                        if app.get_url_item(1):
120                                appInfo['homepage']=app.get_url_item(1).strip()
121                        if app.get_state()==1: #1=Installed
122                                appInfo['state']='installed'
123                        else:
124                                appInfo['state']='available'
125                        if app.get_kudos():
126                                appInfo['kudos']=app.get_kudos()
127                        if app.get_metadata_item('x-zomando'):
128                                appInfo['installerUrl']=app.get_metadata_item('x-zomando')
129                        if app.get_origin():
130                                appInfo['component']=app.get_origin()
131                        if app.get_metadata_item('x-video'):
132                                appInfo['video']=app.get_metadata_item('x-video')
133                                #Modify the url and create the url embed code
134                                if 'embed' not in appInfo['video']:
135                                        appInfo['video']=appInfo['video'].replace('watch?v=','embed/')
136                        for bundle in app.get_bundles():
137                                if bundle.get_kind()==0:
138                                        appInfo['installerUrl']=bundle.get_id()
139                        applistInfo.append(appInfo)
140                        self._callback_progress()
141                self.applistInfo=applistInfo
142                return(applistInfo)
143        #def _get_info
144
145        def _init_appInfo(self):
146                appInfo={'id':'',\
147                'name':'',\
148                'version':'',\
149                'package':'',\
150                'license':'',\
151                'summary':'',\
152                'description':'',\
153                'categories':[],\
154                'icon':'',\
155                'screenshot':'',\
156                'thumbnails':[],\
157                'video':'',\
158                'homepage':'',\
159                'installerUrl':'',\
160                'state':'',\
161                'depends':'',\
162                'kudos':'',\
163                'suggests':'',\
164                'extraInfo':'',\
165                'size':'',\
166                }
167                return(appInfo)
168        #def _init_appInfo
169
170#class infomanager
Note: See TracBrowser for help on using the repository browser.