Exemple #1
0
def parse_ding(root, extract_deleted, extract_source):
    try:
        root = judge_node(root)
        if root is None:
            raise IOError('e')
        d = Ding(root, extract_deleted, extract_source)
        if d.need_parse:
            d.search_account()
            d.parse()
            d.im.db_insert_table_version(model_im.VERSION_KEY_APP, APP_V)
            d.im.db_insert_table_version(model_im.VERSION_KEY_DB,
                                         model_im.VERSION_VALUE_DB)
            d.im.db_commit()
        models = model_im.GenerateModel(d.cache_res,
                                        root.MountPoint).get_models()
        mlm = ModelListMerger()
        pr = ParserResults()
        pr.Categories = DescripCategories.QQ
        pr.Models.AddRange(list(mlm.GetUnique(models)))
        nameValues.SafeAddValue('1030162', d.cache_res)
        pr.Build('钉钉')
    except Exception as e:
        traceback.print_exc()
        pr = ParserResults()
    return pr
    def parse(self):
        """解析的主函数"""
        if self.has_data is False:
            return

        for account in self._generate_account_table():
            self.cloud_p2p_col, self.file_list_col = self.__fetch_cols(account)
            self.c_recover_helper, self.f_recover_helper = self.__fetch_recover_helper(account)

            self._generate_friend_table()
            self._generate_message_table()
            self._generate_chatroom_table()
            self._generate_chatroom_member_table()
            self._generate_file_list_table()
            self._generate_download_task_table()
            self._generate_share_file_table()

            self.decode_recover_chatroom()
            self.decode_recover_chatroom_member()
            self.decode_recover_groups_messages()
            self.decode_recover_people_messages()
            self.decode_recover_file_list()
            self.decode_recover_download_task()
            self.decode_recover_share_file()

        generate = model_nd.NDModel(self.cache_db)
        nd_results = generate.generate_models()

        generate = model_im.GenerateModel(self.cache_db + ".IM")
        im_results = generate.get_models()

        return nd_results + im_results
Exemple #3
0
    def parse(self):
        if not os.path.exists(self.root.PathWithMountPoint +
                              "/databases/msgstore.db"):
            return
        db_path = md5(self.cache, self.root.AbsolutePath)
        if self.whatsapp.need_parse(db_path, VERSION_APP_VALUE):
            self.whatsapp.db_create(db_path)
            self.get_account()
            self.get_friends()
            self.get_groups()
            self.get_group_member()
            self.get_friend_messages()
            self.get_group_messages()
            self.get_feeds()
            self.whatsapp.db_close()

            if not canceller.IsCancellationRequested:
                self.whatsapp.db_insert_table_version(
                    model_im.VERSION_KEY_DB, model_im.VERSION_VALUE_DB)
                self.whatsapp.db_insert_table_version(model_im.VERSION_KEY_APP,
                                                      VERSION_APP_VALUE)

        tmp_dir = ds.OpenCachePath("tmp")
        PA_runtime.save_cache_path(bcp_im.CONTACT_ACCOUNT_TYPE_IM_WHATSAPP,
                                   db_path, tmp_dir)
        generate = model_im.GenerateModel(db_path)
        results = generate.get_models()

        return results
Exemple #4
0
def analyse_twitter(root, extract_deleted, extract_source):
    node = judge_node(root)
    try:
        if node is None:
            raise IOError('E')
        t = TIphone(node, extract_deleted, extract_source)
        if t.need_parse:
            t.parse_account()
            t.parse_recovery()
            t.im.db_insert_table_version(model_im.VERSION_KEY_DB,
                                         model_im.VERSION_VALUE_DB)
            t.im.db_insert_table_version(model_im.VERSION_KEY_APP,
                                         VERSION_APP_VALUE)
            t.im.db_commit()
            t.im.db_close()
        nameValues.SafeAddValue('1330005', t.cache + "/{}".format(t.hash))
        models = model_im.GenerateModel(t.cache +
                                        "/{}".format(t.hash)).get_models()
        mlm = ModelListMerger()
        pr = ParserResults()
        pr.Categories = DescripCategories.QQ
        pr.Models.AddRange(list(mlm.GetUnique(models)))
        pr.Build('Twitter')
    except:
        traceback.print_exc()
        pr = ParserResults()
    return pr
Exemple #5
0
def parse_mm(root, extract_source, extract_deleted):
    try:
        node = judge_node(root)
        if node is None:
            raise IOError('E')
        m = momo(node, extract_deleted, extract_source)
        if m.need_parse:
            m.search()
            for id in m.accounts:
                m.parse(id)
            m.im.db_insert_table_version(model_im.VERSION_KEY_DB, model_im.VERSION_VALUE_DB)
            m.im.db_insert_table_version(model_im.VERSION_KEY_APP, MM_PARSER_VERSION)
            m.im.db_commit()
            m.im.db_close()
        pr = ParserResults()
        models = model_im.GenerateModel(m.cache_db).get_models()
        mlm = ModelListMerger()
        pr = ParserResults()
        pr.Categories = DescripCategories.QQ
        pr.Models.AddRange(list(mlm.GetUnique(models)))
        pr.Build('陌陌')
    except:
        traceback.print_exc()
        pr = ParserResults()
    return pr
Exemple #6
0
    def _generate_nd_models(self):
        """网盘类应用 => 从中间数据库返回models给C#那边"""
        generate = model_nd.NDModel(self.cache_db)
        nd_results = generate.generate_models()

        generate = model_im.GenerateModel(self.cache_db + ".IM")
        im_results = generate.get_models()

        return nd_results + im_results
Exemple #7
0
 def get_models(self):
     models = []
     models.extend(self.__get_product_models())
     models.extend(self.__get_log_models())
     models.extend(self.__get_shop_models())
     models.extend(self.__get_trading_models())
     models.extend(model_im.GenerateModel(self.im_cache).get_models())
     self.ccmd.Dispose()
     self.ebc.Close() #====>释放对数据库的占用
     return models
Exemple #8
0
 def parse(self):
     if DEBUG or self.csm.need_parse(self.cache_db, self.app_version):
         self.csm.db_create(self.cache_db)
         self._main()
         if not canceller.IsCancellationRequested:
             self.csm.db_insert_table_version(model_ticketing.VERSION_KEY_DB, model_ticketing.VERSION_VALUE_DB)
             self.csm.db_insert_table_version(model_ticketing.VERSION_KEY_APP, self.app_version)
             self.csm.db_commit()
         self.csm.db_close()
     models = model_im.GenerateModel(self.cache_db).get_models() + model_map.Genetate(self.cache_db).get_models()
     return models
Exemple #9
0
    def parse(self):
        db_path = model_map.md5(self.cache, self.root.AbsolutePath)
        self.blued.db_create(db_path)
        self.main()
        self.blued.db_close()

        im_models = model_im.GenerateModel(db_path).get_models()
        # map_models = model_map.Genetate(db_path).get_models()
        results = []
        results.extend(im_models)
        # results.extend(map_models)
        return results
Exemple #10
0
    def parse(self):
        """程序入口"""
        if DEBUG or self.model_nd_col.need_parse:
            self._main()
            self._db_update_finished_info()

        generate = model_nd.NDModel(self.cache_db)
        nd_results = generate.generate_models()

        generate = model_im.GenerateModel(self.cache_db + ".IM")
        im_results = generate.get_models()

        return nd_results + im_results
Exemple #11
0
    def parse(self):
        db_path = model_map.md5(self.cache, self.root.AbsolutePath)
        self.qunar_db.db_create(db_path)
        self.main()
        self.qunar_db.db_close()

        tmp_dir = ds.OpenCachePath("tmp")
        PA_runtime.save_cache_path("05005", db_path, tmp_dir)
        im_models = model_im.GenerateModel(db_path).get_models()
        map_models = model_map.Genetate(db_path).get_models()
        results = []
        results.extend(im_models)
        results.extend(map_models)
        return results
Exemple #12
0
def parse_xy(root, extract_deleted, extract_source):
    try:
        node = judge_node(root)
        if node is None:
            raise IOError('E')
        x = xianyu(node, extract_deleted, extract_deleted)
        x.search()
        x.parse()
        models = model_im.GenerateModel(x.cache + '/{}'.format(x.hash)).get_models()
        mlm = ModelListMerger()
        pr = ParserResults()
        pr.Categories = DescripCategories.QQ
        pr.Models.AddRange(list(mlm.GetUnique(models)))
        pr.Build('闲鱼')
    except:
        return ParserResults()
    return pr
Exemple #13
0
    def parse(self):
        """解析的主函数"""

        # 获取缓存数据
        self._get_account_table()
        self._get_friend_table()
        self._get_message_table()
        self._get_chatroom_table()
        self._get_chatroom_member_table()
        self.decode_recover_friend()
        self.decode_recover_message()
        self.decode_recover_chatroom()

        generate = model_im.GenerateModel(self.cache_db)
        results = generate.get_models()
        PA_runtime.save_cache_path(bcp_im.CONTACT_ACCOUNT_TYPE_IM_ICQ, self.cache_db, ds.OpenCachePath("tmp"))
        return results
Exemple #14
0
    def parse(self):
        if DEBUG or self.im.need_parse(self.cache_db, VERSION_APP_VALUE):
            self.im.db_create(self.cache_db)
            self.parse_main()
            if not canceller.IsCancellationRequested:
                self.im.db_insert_table_version(model_im.VERSION_KEY_DB,
                                                model_im.VERSION_VALUE_DB)
                self.im.db_insert_table_version(model_im.VERSION_KEY_APP,
                                                VERSION_APP_VALUE)
                self.im.db_commit()
            self.im.db_close()

        tmp_dir = ds.OpenCachePath('tmp')
        save_cache_path(bcp_im.CONTACT_ACCOUNT_TYPE_IM_LINE, self.cache_db,
                        tmp_dir)
        models = model_im.GenerateModel(self.cache_db).get_models()
        return models
Exemple #15
0
    def parse(self):

        db_path = model_map.md5(self.cache, self.root.AbsolutePath)
        self.bulletMessage.db_create(db_path)
        self.get_user_friends()
        self.get_messages()
        self.get_feeds()
        self.bulletMessage.db_close()

        tmp_dir = ds.OpenCachePath("tmp")
        # PA_runtime.save_cache_path("05005", db_path, tmp_dir)
        im_models = model_im.GenerateModel(db_path).get_models()
        # map_models = model_map.Genetate(db_path).get_models()
        results = []
        results.extend(im_models)
        # results.extend(map_models)
        return results
Exemple #16
0
def parse_potato(root, extract_deleted, extract_source):
    node = judge_node(root)
    container_node = node.Parent.Parent.Parent
    container_node = container_node.GetByPath('Data/Application')
    try:
        if container_node is None:
            print('lost container node')
            raise IOError('E')
        nodes = container_node.Search(
            'Library/Preferences/org.potatochat.PotatoEnterprise.plist$')
        if len(nodes) > 1:
            print('multi target hitted,parser exits')
            raise IOError('E')
        container_node = nodes[0].Parent.Parent.Parent
        if node is None:
            print('''can't find group node''')
            raise IOError('E')
        res = []
        try:
            t = apple_telegram.Telegram(node, container_node, False, False, 1)
            if t.need_parse:
                result = t.parse()
                t.im.db_insert_table_version(model_im.VERSION_KEY_DB,
                                             model_im.VERSION_VALUE_DB)
                t.im.db_insert_table_version(model_im.VERSION_KEY_APP, 1)
                t.im.db_commit()
                t.im.db_close()
            models = model_im.GenerateModel(
                t.cache + '/{}.C37R'.format(t.hash_code)).get_models()
            nameValues.SafeAddValue('1030063',
                                    t.cache + '/{}.C37R'.format(t.hash_code))
            res.extend(models)
        except:
            traceback.print_exc()
            if canceller.IsCancellationRequested:
                raise IOError('E')
        mlm = ModelListMerger()
        pr = ParserResults()
        pr.Categories = DescripCategories.Potato
        pr.Models.AddRange(list(mlm.GetUnique(res)))
        pr.Build('Potato')
    except Exception as e:
        print(e)
        pr = ParserResults()
    return pr
Exemple #17
0
 def parse(self):
     if self.need_parse(self.cachedb, VERSION_APP_VALUE):
         if os.path.exists(self.cachepath):
             shutil.rmtree(self.cachepath)
         os.mkdir(self.cachepath)
         self.db_create(self.cachedb)
         #self._copytocache(self.node.Parent.PathWithMountPoint)
         self.analyze_data()
         self.db_insert_table_version(model_im.VERSION_KEY_DB,
                                      model_im.VERSION_VALUE_DB)
         self.db_insert_table_version(model_im.VERSION_KEY_APP,
                                      VERSION_APP_VALUE)
         self.db_commit()
         self.db_close()
     models = []
     models_im = model_im.GenerateModel(self.cachedb).get_models()
     models.extend(models_im)
     return models
Exemple #18
0
 def parse(self):
     try:
         self.db_create(self.db_cache)
         cache_dir = self.dir + r'\Documents\RequestCache'
         db_dir = self.dir + r'\Library\Application Support\聚星众赢\AntHouseModel.sqlite'
         self.parse_db(db_dir)
         #设置一个未知好友作为不知道消息发送对象时的好友
         friend = model_im.Friend()
         friend.account_id = self.uid
         friend.friend_id = 2
         friend.nickname = '未知好友'
         friend.fullname = '未知好友'
         self.db_insert_table_friend(friend)
         self.parse_cache(cache_dir)
         models = model_im.GenerateModel(self.db_cache).get_models()
         return models
     except:
         traceback.print_exc()
Exemple #19
0
    def parse(self):
        """解析的主函数"""

        for _ in self.__change_db_config():
            # 因为查询的表的名字里面有版本号,所以做一些处理,挂载一个表名字的状态
            self.table_name = self.__query_table_names()

            self._generate_account_table()
            self._generate_friend_table()
            self._generate_message_table()
            chatroom_members = self._generate_chatroom_table()
            self._generate_chatroom_member_table(chatroom_members)
            self.decode_recover_friend()
            self.decode_recover_message()
            self.decode_recover_chatroom()

        generate = model_im.GenerateModel(self.cache_db)
        results = generate.get_models()
        PA_runtime.save_cache_path(bcp_im.CONTACT_ACCOUNT_TYPE_IM_SKYPE,  self.cache_db, ds.OpenCachePath("tmp"))
        return results
Exemple #20
0
 def parse(self):
     if self.need_parse(self.cachedb, VERSION_APP_VALUE):
         if os.path.exists(self.cachepath):
             shutil.rmtree(self.cachepath)
         os.mkdir(self.cachepath)
         self.db_create(self.cachedb)
         self.analyze_data()
         self.db_insert_table_version(model_im.VERSION_KEY_DB,
                                      model_im.VERSION_VALUE_DB)
         self.db_insert_table_version(model_im.VERSION_KEY_APP,
                                      VERSION_APP_VALUE)
         self.db_commit()
         self.db_close()
     models = []
     models_im = model_im.GenerateModel(self.cachedb).get_models()
     models.extend(models_im)
     print(len(models))
     models_record = model_callrecord.Generate(self.cachedb).get_models()
     models.extend(models_record)
     return models
Exemple #21
0
    def parse(self):
        """解析的主函数"""
        for _ in self.__change_account_config():
            account = self._get_account()
            if account:
                self._get_friends()
                self._get_messages()
                self._get_chatroom()
                self._get_chatroom_member()
                self.decode_recover_chatroom()
                self.decode_recover_chatroom_member()
                self.decode_recover_friends()
                self.decode_recover_messages()
        try:
            self._add_unknown_resource()
        except Exception as e:
            print("error happen", e)
        generate = model_im.GenerateModel(self.cache_db)
        results = generate.get_models()

        return results
Exemple #22
0
def parse_telegram(root, extract_deleted, extract_source):
    group_container_nodes = ds.GroupContainers.ToArray()
    r_nodes = try_to_get_telegram_group(group_container_nodes)
    root = root.Parent.Parent.Parent
    try:
        if len(r_nodes) is 0:
            print('''can't find group node''')
            raise IOError('E')
        res = []
        for r in r_nodes:
            try:
                t = Telegram(r, root, False, False)
                if t.need_parse:
                    result = t.parse()
                    if not result:
                        continue
                    t.im.db_insert_table_version(model_im.VERSION_KEY_DB, model_im.VERSION_VALUE_DB)
                    t.im.db_insert_table_version(model_im.VERSION_KEY_APP, 1)
                    t.im.db_commit()
                    t.im.db_close()
                models = model_im.GenerateModel(t.cache + '/{}.C37R'.format(t.hash_code)).get_models()
                nameValues.SafeAddValue('1030063', t.cache + '/{}.C37R'.format(t.hash_code))
                res.extend(models)
            except:
                traceback.print_exc()
                if canceller.IsCancellationRequested:
                    raise IOError('E')
                else:
                    continue
        mlm = ModelListMerger()
        pr = ParserResults()
        pr.Categories = DescripCategories.Telegram
        pr.Models.AddRange(list(mlm.GetUnique(res)))
        pr.Build('Telegram')
    except Exception as e:
        print(e)
        pr = ParserResults()
    return pr
    
Exemple #23
0
def parse_android_twr(node, es, ed):
    t = Twitter(node, es, ed)
    try:
        if t.need_parse:
            t.search()
            for aid in t.account_list:
                t.parse(aid)
            t.im.db_insert_table_version(model_im.VERSION_KEY_DB,
                                         model_im.VERSION_VALUE_DB)
            t.im.db_insert_table_version(model_im.VERSION_KEY_APP,
                                         AND_TWR_VERSION)
            t.im.db_commit()
            t.im.db_close()
        models = model_im.GenerateModel(t.cache_db).get_models()
        mlm = ModelListMerger()
        pr = ParserResults()
        pr.Categories = DescripCategories.Twitter
        pr.Models.AddRange(list(mlm.GetUnique(models)))
        pr.Build("Twitter")
    except:
        pr = ParserResults()
        return pr
Exemple #24
0
    def parse(self):
        """解析的主函数"""

        if not all(
            (self.account_info_path, self.user_info_path, self.icq_data_path)):
            return

        # 获取缓存数据
        self._get_account_table()
        self._get_friend_table()
        self._get_message_table()
        self._get_chatroom_table()
        self._get_search_table()
        self.decode_recover_friend()
        self.decode_recover_message()
        self.decode_recover_search()
        self.decode_recover_chatroom()

        generate = model_im.GenerateModel(self.cache_db)
        results = generate.get_models()
        PA_runtime.save_cache_path(bcp_im.CONTACT_ACCOUNT_TYPE_IM_ICQ,
                                   self.cache_db, ds.OpenCachePath("tmp"))
        return results
Exemple #25
0
    def parse(self):
        db_path = md5(self.cache, self.root.AbsolutePath)
        if self.facebook_db.need_parse(db_path, VERSION_APP_VALUE):
            self.facebook_db.db_create(db_path)
            self.get_account_id()
            self.get_friends()
            self.get_friends_chat()
            self.get_groups_chat()
            self.get_recover_friends_chat()
            self.get_recover_groups_chat()
            self.facebook_db.db_close()
            if not canceller.IsCancellationRequested:
                self.facebook_db.db_insert_table_version(
                    model_im.VERSION_KEY_DB, model_im.VERSION_VALUE_DB)
                self.facebook_db.db_insert_table_version(
                    model_im.VERSION_KEY_APP, VERSION_APP_VALUE)

        generate = model_im.GenerateModel(db_path)
        results = generate.get_models()
        tmp_dir = ds.OpenCachePath("tmp")
        PA_runtime.save_cache_path(bcp_im.CONTACT_ACCOUNT_TYPE_IM_FACEBOOK,
                                   db_path, tmp_dir)
        return results
Exemple #26
0
    def other_parse(self):
        db_path = model_map.md5(self.cache, self.root.AbsolutePath)
        self.blued.db_create(db_path)
        self.get_account(self.root)
        node_lists = self.root.Parent.Children
        if len(node_lists) == 0:
            return
        for node in node_lists:
            if node.Name.endswith("DB.sqlite"):
                account_id = node.Name.replace("DB.sqlite", "")
                self.get_groups_friends(node, account_id)
                self.get_messages(node, account_id)
        self.blued.db_close()

        tmp_dir = ds.OpenCachePath("tmp")
        PA_runtime.save_cache_path("05005", db_path, tmp_dir)
        im_models = model_im.GenerateModel(db_path).get_models()
        # map_models = model_map.Genetate(db_path).get_models()
        results = []
        if results:
            results.extend(im_models)
        # results.extend(map_models)
        return results
Exemple #27
0
def parse_miliao(root, extract_deleted, extract_source):
    try:
        ml = MiLiao(root, extract_deleted, extract_source)
        if ml.need_parse:
            ml.search_account()
            for aid in ml.account:
                ml.analyse_account(aid)
            ml.im.db_insert_table_version(model_im.VERSION_KEY_DB,
                                          model_im.VERSION_VALUE_DB)
            ml.im.db_insert_table_version(model_im.VERSION_KEY_APP,
                                          VERSION_APP_VALUE)
            ml.im.db_commit()
            ml.im.db_close()
        models = model_im.GenerateModel(ml.cache +
                                        '/{}'.format(ml.hash)).get_models()
        mlm = ModelListMerger()
        pr = ParserResults()
        pr.Categories = DescripCategories.MiLiao
        pr.Models.AddRange(list(mlm.GetUnique(models)))
        pr.Build('米聊')
    except Exception as e:
        traceback.print_exc()
        pr = ParserResults()
    return pr
Exemple #28
0
    def parse(self):

        db_path = self.md5(self.cache, self.root.AbsolutePath)
        self.ctrip.db_create(db_path)
        self.get_account()
        self.get_groups_member()
        self.get_groups()
        self.get_messages()
        self.get_order_ticket_method_two()
        self.get_order_data()
        self.get_order_ticket()
        self.get_pageview_cache()
        self.ctrip.db_close()

        tmp_dir = ds.OpenCachePath("tmp")
        PA_runtime.save_cache_path(bcp_gis.NETWORK_APP_TICKET_CTRIP, db_path,
                                   tmp_dir)

        models = []
        im_results = model_im.GenerateModel(db_path).get_models()
        ticket_results = model_map.Genetate(db_path).get_models()
        models.extend(im_results)
        models.extend(ticket_results)
        return models
Exemple #29
0
 def get_models_from_cache_db(self):
     models = model_im.GenerateModel(self.cache_db).get_models()
     return models
Exemple #30
0
 def _generate_im_models(self):
     generate = model_im.GenerateModel(self.cache_db)
     results = generate.get_models()
     return results