def test_app_title_and_flags(): d = pd.DataFrame({ 'appId': ['core.framework', 'com.android.system', 'LEM.TrackMe', 'com.spy2mobile.light'] }) ret = app_title_and_flag(d, ['core.framework', 'com.android.system']) assert len(ret) == len(ret.appId) # assert ret.flags == ret.to_csv(index=None) == """appId,title,flags
def find_spyapps(self, serialno): """Finds the apps in the phone and add flags to them based on @blacklist.py Return the sorted dataframe """ installed_apps = self.get_apps(serialno) if len(installed_apps) <= 0: return pd.DataFrame( [], columns=['title', 'flags', 'score', 'class_', 'html_flags']) r = blacklist.app_title_and_flag( pd.DataFrame({'appId': installed_apps}), offstore_apps=self.get_offstore_apps(serialno), system_apps=self.get_system_apps(serialno)) r['title'] = r.title.fillna('') if self.device_type == 'android': td = pd.read_sql( 'select appid as appId, title from apps where appid in (?{})'. format(', ?' * (len(installed_apps) - 1)), self.app_info_conn, params=(installed_apps)).set_index('appId') td.index.rename('appId', inplace=True) elif self.device_type == 'ios': td = self.get_app_titles(serialno) r.set_index('appId', inplace=True) print("td=", td) r.loc[td.index, 'title'] = td.get('title', '') r.reset_index(inplace=True) r['class_'] = r.flags.apply(blacklist.assign_class) r['score'] = r.flags.apply(blacklist.score) r['title'] = r.title.str.encode('ascii', errors='ignore')\ .str.decode('ascii') r['title'] = r.title.fillna('') r['html_flags'] = r.flags.apply(blacklist.flag_str) r.sort_values(by=['score', 'appId'], ascending=[False, True], inplace=True, na_position='last') r.set_index('appId', inplace=True) return r[['title', 'flags', 'score', 'class_', 'html_flags']]
def find_spyapps(self, serialno): """Finds the apps in the phone and add flags to them based on @blacklist.py Return the sorted dataframe """ installed_apps = self.get_apps(serialno) # r = pd.read_sql('select appid, title from apps where appid in (?{})'.format( # ', ?'*(len(installed_apps)-1) # ), self.app_info_conn, params=(installed_apps,)) # r.rename({'appid': 'appId'}, axis='columns', copy=False, inplace=True) r = blacklist.app_title_and_flag( pd.DataFrame({'appId': installed_apps}), offstore_apps=self.get_offstore_apps(serialno), system_apps=self.get_system_apps(serialno) ) r['class_'] = r.flags.apply(blacklist.assign_class) r['score'] = r.flags.apply(blacklist.score) r['title'] = r.title.str.encode('ascii', errors='ignore').str.decode('ascii') r['html_flags'] = r.flags.apply(blacklist.flag_str) r.sort_values(by=['score', 'appId'], ascending=[False, True], inplace=True, na_position='last') r.set_index('appId', inplace=True) return r[['title', 'flags', 'score', 'class_', 'html_flags']]