コード例 #1
0
 def get_models(self):
     models = list()
     conn = unity_c37r.create_connection(self.cache_db, True)
     cmd = sql.SQLiteCommand(conn)
     cmd.CommandText = '''
         select * from WA_MFORENSICS_120100
     '''
     reader = cmd.ExecuteReader()
     a = IMEAccount()
     while reader.Read():
         am = Common.User()
         am.ID.Value = unity_c37r.c_sharp_get_string(reader, a.account)
         am.Name.Value = unity_c37r.c_sharp_get_string(reader, a.nick)
         photo = unity_c37r.c_sharp_get_string(reader, a.photo)
         photo = unity_c37r.get_c_sharp_uri(photo)
         am.PhotoUris.Add(photo)
         # reserved gender
         sex = unity_c37r.c_sharp_get_string(reader, a.gender_code)
         models.append(am)
     reader.Close()
     cmd.CommandText = '''
         select * from WA_MFORENSICS_120200
     '''
     reader = cmd.ExecuteReader()
     b = IMEKeyword()
     while reader.Read():
         kw = InputMethod.WordFrequency()
         kw.KeyWord.Value = unity_c37r.c_sharp_get_string(
             reader, b.key_word)
         kw.Count.Value = unity_c37r.c_sharp_get_long(reader, b.times)
         models.append(kw)
     reader.Close()
     cmd.Dispose()
     conn.Close()
     return models
コード例 #2
0
ファイル: model_eb.py プロジェクト: jeftom/pa_script
 def generate_deal_bcp(self):
     conn = unity_c37r.create_connection(self.cache_db + '.IM')
     cmds  = sql.SQLiteCommand(conn)
     cmds.CommandText = '''
         select * from deal
     '''
     reader = cmds.ExecuteReader()
     res = dict()
     while reader.Read():
         deal = DealInfo()
         deal.set_value_with_idx(deal.colltection_target_id, self.colltection_target_id)
         deal.set_value_with_idx(deal.app_code, self.app_code)
         deal.set_value_with_idx(deal.deal_id, unity_c37r.c_sharp_get_string(reader, 0))
         try:
             deal.set_value_with_idx(deal.money, unity_c37r.c_sharp_get_real(reader, 2))
         except:
             deal.set_value_with_idx(deal.money, 0)
         deal.set_value_with_idx(deal.description, unity_c37r.c_sharp_get_string(reader, 3))
         t = unity_c37r.c_sharp_get_long(reader, 6)
         if t != 0:
             deal.set_value_with_idx(deal.time, t)
         pass
         unity_c37r.execute_query(self.cmd, TBL_BCP_INSERT_DEAL, deal.get_values())
         # status... not supported right now
         # type ... not suppoted right now
     reader.Close()
     cmds.Dispose()
     conn.Close()
コード例 #3
0
ファイル: model_eb.py プロジェクト: jeftom/pa_script
 def generate_product_bcp(self):
     conn = unity_c37r.create_connection(self.cache_db)
     cmds = sql.SQLiteCommand(conn)
     cmds.CommandText = '''
         select * from tb_product
     '''
     reader = cmds.ExecuteReader()
     while reader.Read():
         pdt = ProductInfo()
         pdt.set_value_with_idx(pdt.app_code, self.app_code)
         pdt.set_value_with_idx(pdt.colltection_target_id, self.colltection_target_id)
         pdt.set_value_with_idx(pdt.account_id, unity_c37r.c_sharp_get_string(reader, 0))
         tp = unity_c37r.c_sharp_get_string(reader, 1)
         pdt.set_value_with_idx(pdt.source, '0%s' %tp)
         pdt.set_value_with_idx(pdt.product_id, unity_c37r.c_sharp_get_string(reader, 2))
         pdt.set_value_with_idx(pdt.product_name, unity_c37r.c_sharp_get_string(reader, 3))
         pdt.set_value_with_idx(pdt.price, unity_c37r.c_sharp_get_string(reader, 4))
         t = unity_c37r.c_sharp_get_long(reader, 5)
         if t is not 0:
             pdt.set_value_with_idx(pdt.create_time, t)
         pdt.set_value_with_idx(pdt.description, unity_c37r.c_sharp_get_string(reader, 6))
         pdt.set_value_with_idx(pdt.url, unity_c37r.c_sharp_get_string(reader, 7))
         pdt.set_value_with_idx(pdt.shop_id, unity_c37r.c_sharp_get_string(reader, 8))
         pdt.set_value_with_idx(pdt.delete_status, unity_c37r.c_sharp_get_long(reader, 9))
         unity_c37r.execute_query(self.cmd, TBL_BCP_INSERT_PRODUCT, pdt.get_values())
     reader.Close()
     cmds.Dispose()
     conn.Close()
コード例 #4
0
 def try_get_avfs_message_dict(self):
     avfs_dir_node = self.node.GetByPath('Documents/AVFSStorage')
     if avfs_dir_node is None:
         return
     avfs_path = avfs_dir_node.PathWithMountPoint
     pl = os.listdir(avfs_path)
     for f in pl:
         avfs_sqlite_node = self.node.GetByPath(
             'Documents/AVFSStorage/{}/avfs.sqlite'.format(f))
         if avfs_sqlite_node is None:
             continue
         conn = unity_c37r.create_connection_tentatively(avfs_sqlite_node)
         cmd = sql.SQLiteCommand(conn)
         cmd.CommandText = '''
             select tbl_name from sqlite_master where tbl_name = 'MPMProfileim_cc' and type = 'table'
         '''
         reader = cmd.ExecuteReader()
         if not reader.Read():
             reader.Close()
             cmd.Dispose()
             conn.Close()
             continue
         reader.Close()
         cmd.CommandText = '''
             select targetId from MPMProfileim_cc where name is not null
         '''
         reader = cmd.ExecuteReader()
         if reader.Read():
             uid = unity_c37r.c_sharp_get_string(reader, 0)
             self.avfs_message_dict[uid] = avfs_sqlite_node
         reader.Close()
         cmd.Dispose()
         conn.Close()
コード例 #5
0
 def parse_search(self, ac):
     db_node = self.node.GetByPath('Library/edge_compute.db')
     if db_node is None:
         return
     path = unity_c37r.check_sqlite_maturity(db_node, self.cache)
     conn = unity_c37r.create_connection(path)
     cmd = sql.SQLiteCommand(conn)
     cmd.CommandText = '''
         select args,create_time from usertrack where owner_id = {} and page_name = 'Page_SearchItemList'
     '''.format(ac.uid)
     reader = cmd.ExecuteReader()
     while reader.Read():
         if canceller.IsCancellationRequested:
             cmd.Dispose()
             conn.Close()
             self.im.db_close()
             raise IOError('E')
         s = model_im.Search()
         s.account_id = ac.uid
         m_str = unity_c37r.c_sharp_get_string(reader, 0)
         try:
             #s.key = re.search('keyword=(.*?),', m_str, re.I | re.M).group(1)
             match = re.search('keyword=(.*?),', m_str, re.I | re.M)
             if match is None:
                 continue
             s.key = match.group(1)
         except:
             self.log.m_err('error string:{}'.format(m_str))
             continue
         s.create_time = unity_c37r.c_sharp_get_long(reader, 1) / 1000
         self.im.db_insert_table_search(s)
     self.im.db_commit()
     cmd.Dispose()
     conn.Close()
コード例 #6
0
 def __generate_file_basic_model(self):
     self.cmd.CommandText = '''
         select * from tbl_filelist
     '''
     reader = self.cmd.ExecuteReader()
     f = NDFileList()
     models = []
     while reader.Read():
         fb = Cloud.FileBasic()
         fb.OwnerUserID.Value = unity_c37r.c_sharp_get_string(
             reader, f.account)
         fb.FileName.Value = unity_c37r.c_sharp_get_string(
             reader, f.file_name)
         fb.FileSize.Value = unity_c37r.c_sharp_get_long(
             reader, f.file_size)
         fb.HashCode.Value = unity_c37r.c_sharp_get_string(
             reader, f.file_hash)
         self.set_model_value(
             fb.FileSize, unity_c37r.c_sharp_get_long(reader, f.file_size))
         # self.set_model_value(fb.Url, unity_c37r.c_sharp_get_string(reader, f.url))
         m_str = unity_c37r.c_sharp_get_string(reader, f.url)
         self.set_model_value(fb.Url, unity_c37r.get_c_sharp_uri(m_str))
         self.set_model_value(
             fb.ServerPath,
             unity_c37r.c_sharp_get_string(reader, f.server_path))
         tp = unity_c37r.c_sharp_get_long(reader, f.file_type)
         if tp == 0:
             self.set_model_value(fb.Type, Cloud.FileBasicType.None)
         elif tp == 1:
             self.set_model_value(fb.Type, Cloud.FileBasicType.Txt)
         elif tp == 2:
             self.set_model_value(fb.Type, Cloud.FileBasicType.Image)
         elif tp == 3:
             self.set_model_value(fb.Type, Cloud.FileBasicType.Audio)
         elif tp == 4:
             self.set_model_value(fb.Type, Cloud.FileBasicType.Video)
         elif tp == 5:
             self.set_model_value(fb.Type, Cloud.FileBasicType.Document)
         else:
             self.set_model_value(fb.Type, Cloud.FileBasicType.Other)
         models.append(fb)
     reader.Close()
     return models
コード例 #7
0
ファイル: model_eb.py プロジェクト: jeftom/pa_script
 def __get_trading_models(self):
     self.__prepare_contact()
     self.ccmd.CommandText = '''
         select * from tb_deal
     '''
     reader = self.ccmd.ExecuteReader()
     models = []
     while reader.Read():
         t = EC.Trading()
         if unity_c37r.c_sharp_get_string(reader, 0) is not '':
             t.OwnerUserID.Value = unity_c37r.c_sharp_get_string(reader, 0)
         if unity_c37r.c_sharp_get_string(reader, 1) is not '':
             uid = unity_c37r.c_sharp_get_string(reader, 1)
             usr = Common.UserIntro()
             usr.ID.Value = uid
             if not self.contact.__contains__(uid):
                 usr.Name.Value = u'未知联系人'
             else:
                 usr.Name.Value = self.contact[uid].nick
                 usr.Photo.Value = unity_c37r.get_c_sharp_uri(self.contact[uid].photo)
             t.Party.Value = usr
         if unity_c37r.c_sharp_get_long(reader, 2) is not None:
             tp = unity_c37r.c_sharp_get_long(reader, 2)
             if tp == EBDEAL_TYPE_REC:
                 t.Type.Value = EC.TradingType.Conllection
             elif tp == EBDEAL_TYPE_SEND:
                 t.Type.Value = EC.TradingType.Payment
             elif tp == EBDEAL_TYPE_OTHER:
                 t.Type.Value = EC.TradingType.None
         if unity_c37r.c_sharp_get_real(reader, 3) is not 0.0:
             t.Money.Value = str(unity_c37r.c_sharp_get_real(reader, 3))
         if unity_c37r.c_sharp_get_long(reader, 4) is not None:
             tp = unity_c37r.c_sharp_get_long(reader, 4)
             if tp == TRADE_STATUS_CLOSE:
                 t.Status.Value = EC.TradingStatus.Close
             elif tp == TRADE_STATUS_FINISHED:
                 t.Status.Value = EC.TradingStatus.Finish
             elif tp == TRADE_STATUS_PROCESSING:
                 t.Status.Value = EC.TradingStatus.Unfinish
             elif tp == TRADE_STATUS_UNKWON:
                 t.Status.Value = EC.TradingStatus.None
         if unity_c37r.c_sharp_get_long(reader, 5) is not 0:
             t.StartTime.Value = unity_c37r.get_c_sharp_ts(unity_c37r.c_sharp_get_long(reader, 5))
         if unity_c37r.c_sharp_get_long(reader, 6) is not 0:
             t.EndTime.Value = unity_c37r.get_c_sharp_ts(unity_c37r.c_sharp_get_long(reader, 6))
         if unity_c37r.c_sharp_get_string(reader, 8) is not '':
             t.Description.Value = unity_c37r.c_sharp_get_string(reader, 8)
         if unity_c37r.c_sharp_get_string(reader, 9):
             t.Content.Value = unity_c37r.c_sharp_get_string(reader, 9)
         models.append(t)
     reader.Close()
     #self.ccmd.Dispose()
     return models
コード例 #8
0
ファイル: model_eb.py プロジェクト: jeftom/pa_script
 def __get_log_models(self):
     self.ccmd.CommandText = '''
         select * from tb_log
     '''
     reader = self.ccmd.ExecuteReader()
     models = []
     while reader.Read():
         log = EC.ECLog()
         log.ID.Value = random.randint(0, 0xfffffff)
         if unity_c37r.c_sharp_get_string(reader, 1) is not '':
             log.Description.Value = unity_c37r.c_sharp_get_string(reader, 1)
         if unity_c37r.c_sharp_get_string(reader, 2) is not '':
             log.Content.Value = unity_c37r.c_sharp_get_string(reader, 2)
         if unity_c37r.c_sharp_get_long(reader, 3) is not None:
             log.Result.Value = unity_c37r.c_sharp_get_long(reader, 3)
         if unity_c37r.c_sharp_get_long(reader, 4) is not 0:
             log.Timestamp.Value = unity_c37r.get_c_sharp_ts(unity_c37r.c_sharp_get_long(reader, 4))
         models.append(log)
     reader.Close()
     #self.ccmd.Dispose()
     return models
コード例 #9
0
ファイル: model_eb.py プロジェクト: jeftom/pa_script
 def __prepare_contact(self):
     im_conn = unity_c37r.create_connection(self.cache + '.IM')
     cmd = sql.SQLiteCommand(im_conn)
     cmd.CommandText = '''
         select account_id, nickname, photo from account
     '''
     reader = cmd.ExecuteReader()
     while reader.Read():
         o = O()
         o.uid = unity_c37r.c_sharp_get_string(reader, 0)
         o.nick = unity_c37r.c_sharp_get_string(reader, 1)
         o.photo = unity_c37r.c_sharp_get_string(reader, 2)
         self.contact[o.uid] = o
     reader.Close()
     #cmd.Dispose()
     cmd.CommandText = '''
         select friend_id, nickname, photo from friend
     '''
     reader = cmd.ExecuteReader()
     while reader.Read():
         o = O()
         o.uid = unity_c37r.c_sharp_get_string(reader, 0)
         o.nick = unity_c37r.c_sharp_get_string(reader, 1)
         o.photo = unity_c37r.c_sharp_get_string(reader, 2)
         if self.contact.__contains__(o.uid):
             continue
         self.contact[o.uid] = o
     reader.Close()
     cmd.Dispose()
     im_conn.Close()
コード例 #10
0
 def __generate_transfer(self):
     connection = unity_c37r.create_connection(self.cache_db)
     cmd = sql.SQLiteCommand(connection)
     cmd.CommandText = '''
         select * from tb_transfer
     '''
     fts = NDFileTransfer()
     reader = cmd.ExecuteReader()
     while reader.Read():
         t = NDBCPTRANSFER()
         t.set_value_with_idx(
             t.account_id,
             unity_c37r.c_sharp_get_string(reader, fts.account))
         t.set_value_with_idx(
             t.file_name,
             unity_c37r.c_sharp_get_string(reader, fts.file_name))
         t.set_value_with_idx(
             t.file_size,
             unity_c37r.c_sharp_get_long(reader, fts.file_size))
         t.set_value_with_idx(
             t.hash, unity_c37r.c_sharp_get_string(reader, fts.hash_code))
         t.set_value_with_idx(
             t.server_path,
             unity_c37r.c_sharp_get_string(reader, fts.server_path))
         t.set_value_with_idx(
             t.file_path,
             unity_c37r.c_sharp_get_string(reader, fts.local_path))
         t.set_value_with_idx(
             t.url, unity_c37r.c_sharp_get_string(reader, fts.url))
         t.set_value_with_idx(
             t.torrent,
             unity_c37r.c_sharp_get_string(reader, fts.torrent_name))
         t.set_value_with_idx(
             t.status, unity_c37r.c_sharp_get_long(reader, fts.status))
         t.set_value_with_idx(
             t.action_type,
             unity_c37r.c_sharp_get_long(reader, fts.is_download))
         t.set_value_with_idx(
             t.begin_time,
             unity_c37r.c_sharp_get_long(reader, fts.begin_time))
         t.set_value_with_idx(
             t.end_time, unity_c37r.c_sharp_get_long(reader, fts.end_time))
         t.set_value_with_idx(
             t.cached_size,
             unity_c37r.c_sharp_get_long(reader, fts.cached_size))
         t.set_value_with_idx(
             t.delete_status,
             unity_c37r.c_sharp_get_long(reader, fts.deleted))
         t.set_value_with_idx(t.collect_id, self.cid)
         t.set_value_with_idx(t.app_type, self.app_type)
         self.db_insert_transfer(t)
     self.db_commit()
     reader.Close()
     cmd.Dispose()
     connection.Close()
コード例 #11
0
 def __generate_file_transfer_model(self):
     self.cmd.CommandText = '''
         select * from tb_transfer
     '''
     reader = self.cmd.ExecuteReader()
     ft = NDFileTransfer()
     models = []
     while reader.Read():
         fts = Cloud.FileTransfer()
         self.set_model_value(
             fts.OwnerUserID,
             unity_c37r.c_sharp_get_string(reader, ft.account))
         self.set_model_value(
             fts.FileName,
             unity_c37r.c_sharp_get_string(reader, ft.file_name))
         self.set_model_value(
             fts.FileSize,
             unity_c37r.c_sharp_get_long(reader, ft.file_size))
         self.set_model_value(
             fts.HashCode,
             unity_c37r.c_sharp_get_string(reader, ft.hash_code))
         # self.set_model_value(fts.Url, unity_c37r.c_sharp_get_string(reader, ft.url))
         uri = unity_c37r.c_sharp_get_string(reader, ft.url)
         uri = unity_c37r.get_c_sharp_uri(uri)
         self.set_model_value(fts.Url, uri)
         self.set_model_value(
             fts.LocalPath,
             unity_c37r.c_sharp_get_string(reader, ft.local_path))
         self.set_model_value(
             fts.TorrentName,
             unity_c37r.c_sharp_get_string(reader, ft.torrent_name))
         st = unity_c37r.c_sharp_get_long(reader, ft.status)
         if st == NDFileProcessing:
             self.set_model_value(fts.Status,
                                  Cloud.FileTransferStatus.UnFinished)
         elif st == NDFileDone:
             self.set_model_value(fts.Status,
                                  Cloud.FileTransferStatus.Finish)
         else:
             self.set_model_value(fts.Status, Cloud.FileTransferStatus.None)
         isd = unity_c37r.c_sharp_get_long(reader, ft.is_download)
         if isd == 1:
             self.set_model_value(fts.IsDownload, True)
         else:
             self.set_model_value(fts.IsDownload, False)
         self.set_model_value(
             fts.BeginTime,
             unity_c37r.get_c_sharp_ts(
                 unity_c37r.c_sharp_try_get_time(reader, ft.begin_time)))
         self.set_model_value(
             fts.EndTime,
             unity_c37r.get_c_sharp_ts(
                 unity_c37r.c_sharp_try_get_time(reader, ft.end_time)))
         self.set_model_value(
             fts.CachedSize,
             unity_c37r.c_sharp_get_long(reader, ft.cached_size))
         models.append(fts)
     reader.Close()
     return models
コード例 #12
0
ファイル: android_momo.py プロジェクト: jeftom/pa_script
 def parse_feed(self, account_id):
     db_node = self.node.GetByPath('feed60_{}'.format(account_id))
     if db_node is None:
         return
     conn = unity_c37r.create_connection_tentatively(db_node, True)
     cmd = SQLiteCommand(conn)
     # 以下列类型全部为numeric类型,但是插入的各种类型都有
     # fid, time, content, location(name), sender id
     # sqlite 在数据管理方面是动态类型的,使用了更普遍的动态类型系统,sqlite中,值的类型和值本身是有关系的,与容器无关
     # 大型数据库则使用更为刚性和静态的类型语言
     cmd.CommandText = '''
         select _id, field3, field55, field59, field10 from commonfeed
     '''
     reader = cmd.ExecuteReader()
     while reader.Read():
         feed = model_im.Feed()
         feed.account_id = account_id
         feed.deleted = 0
         feed.source = db_node.AbsolutePath
         content = json.loads(unity_c37r.c_sharp_get_string(reader, 2))
         feed.content = content.get('text')
         feed.send_time = unity_c37r.c_sharp_try_get_time(reader, 1) / 1000
         feed.sender_id = unity_c37r.c_sharp_get_long(reader, 4)
         feed.deleted = 0
         feed.insert_db(self.im)
     self.im.db_commit()
     reader.Close()
     cmd.Dispose()
     conn.Close()
     #recovery
     db = SQLiteParser.Database.FromNode(db_node)
     ts = SQLiteParser.TableSignature('commonfeed')
     SQLiteParser.Tools.AddSignatureToTable(ts, "field55", SQLiteParser.FieldType.Text, SQLiteParser.FieldConstraints.NotNull)
     for rec in db.ReadTableDeletedRecords(ts, False):
         feed = model_im.Feed()
         feed.account_id = account_id
         feed.deleted = 1
         content = unity_c37r.try_get_rec_value(rec, "field55", "")
         try:
             js = json.loads(content)
             feed.content = js.get('text')
         except:
             feed.content = content
         feed.send_time = unity_c37r.try_get_rec_value(rec, "field3", 0) / 1000
         feed.sender_id = unity_c37r.try_get_rec_value(rec, "field10", 0)
         feed.insert_db(self.im)
     self.im.db_commit()
コード例 #13
0
ファイル: apple_ml.py プロジェクト: jeftom/pa_script
 def __handle_location(self, aid, f_k):
     f_sql_node = self.root_node.GetByPath(
         'Documents/{}/account/{}_Attachment.sqlite'.format(aid, aid))
     if f_sql_node is None:
         return None
     #db = sqlite3.connect(f_sql_node.PathWithMountPoint)
     db = unity_c37r.create_connection(f_sql_node.PathWithMountPoint)
     cmd = sql.SQLiteCommand(db)
     cmd.CommandText = '''
         select ZEXTENSION from ZATTACHMENTOBJECT where ZATT_ID = '{}'
     '''.format(f_k)
     reader = cmd.ExecuteReader()
     res = ''
     if reader.Read():
         res = unity_c37r.c_sharp_get_string(reader, 0)
     cmd.Dispose()
     db.Close()
     return res
コード例 #14
0
ファイル: apple_ml.py プロジェクト: jeftom/pa_script
 def __find_file(self, aid, f_k):
     f_sql_node = self.root_node.GetByPath(
         'Documents/{}/account/{}_ks3Resource.sqlite'.format(aid, aid))
     if f_sql_node is None:
         return ''
     db = unity_c37r.create_connection(f_sql_node.PathWithMountPoint)
     cmd = sql.SQLiteCommand(db)
     cmd.CommandText = '''
         select localPath from MLKS3ResourceObject where objectKey = '{}' 
     '''.format(f_k)
     reader = cmd.ExecuteReader()
     res = ''
     if reader.Read():
         res = os.path.join(
             self.root_node.AbsolutePath, 'Documents/{}/{}'.format(
                 aid, unity_c37r.c_sharp_get_string(reader, 0)))
     cmd.Dispose()
     db.Close()
     return res
コード例 #15
0
ファイル: model_eb.py プロジェクト: jeftom/pa_script
 def generate_shop_bcp(self):
     conn = unity_c37r.create_connection(self.cache_db)
     cmds = sql.SQLiteCommand(conn)
     cmds.CommandText = '''
         select * from tb_shop
     '''
     reader = cmds.ExecuteReader()
     while reader.Read():
         s = ShopInfo()
         s.set_value_with_idx(s.colltection_target_id, self.colltection_target_id)
         s.set_value_with_idx(s.app_code, self.app_code)
         s.set_value_with_idx(s.account_id, unity_c37r.c_sharp_get_string(reader, 0))
         s.set_value_with_idx(s.shop_id, unity_c37r.c_sharp_get_string(reader, 1))
         s.set_value_with_idx(s.shop_name, unity_c37r.c_sharp_get_string(reader, 2))
         s.set_value_with_idx(s.boss_id, unity_c37r.c_sharp_get_string(reader, 3))
         s.set_value_with_idx(s.boss_account, unity_c37r.c_sharp_get_string(reader, 4))
         s.set_value_with_idx(s.boss_nick, unity_c37r.c_sharp_get_string(reader, 5))
         s.set_value_with_idx(s.delete_status, unity_c37r.c_sharp_get_long(reader, 6))
         unity_c37r.execute_query(self.cmd, TBL_BCP_INSERT_SHOP, s.get_values())
     reader.Close()
     cmds.Dispose()
     conn.Close()
コード例 #16
0
 def __generate_file_share_model(self):
     self.cmd.CommandText = '''
         select * from tb_shared
     '''
     models = []
     ft = NDFileShared()
     reader = self.cmd.ExecuteReader()
     while reader.Read():
         fts = Cloud.FileShare()
         self.set_model_value(
             fts.OwnerUserID,
             unity_c37r.c_sharp_get_string(reader, ft.account))
         self.set_model_value(
             fts.FileName,
             unity_c37r.c_sharp_get_string(reader, ft.file_name))
         self.set_model_value(
             fts.ServerPath,
             unity_c37r.c_sharp_get_string(reader, ft.server_path))
         uri = unity_c37r.c_sharp_get_string(reader, ft.url)
         uri = unity_c37r.get_c_sharp_uri(uri)
         self.set_model_value(fts.Url, uri)
         ctime = unity_c37r.c_sharp_try_get_time(reader, ft.create_time)
         utime = unity_c37r.c_sharp_try_get_time(reader, ft.update_time)
         stime = unity_c37r.c_sharp_try_get_time(reader, ft.send_time)
         self.set_model_value(fts.CreateTime,
                              unity_c37r.get_c_sharp_ts(ctime))
         self.set_model_value(fts.UpdateTime,
                              unity_c37r.get_c_sharp_ts(utime))
         self.set_model_value(fts.ShareTime,
                              unity_c37r.get_c_sharp_ts(stime))
         sid = unity_c37r.c_sharp_get_string(reader, ft.sender_id)
         sname = unity_c37r.c_sharp_get_string(reader, ft.sender_name)
         fts.Sender.Value = unity_c37r.create_user_intro(sid, sname, "")
         models.append(fts)
     reader.Close()
     return models
コード例 #17
0
ファイル: apple_ml.py プロジェクト: jeftom/pa_script
 def __parse_message(self, a_node, aid):
     f_message_node = a_node.GetByPath('/{}_Message.sqlite'.format(aid))
     db = unity_c37r.create_connection(f_message_node.PathWithMountPoint)
     cmd = sql.SQLiteCommand(db)
     cmd.CommandText = '''
         select ZLOCAL_ID, ZBODY_TYPE, ZTIMESTAMP, ZBODY, ZEXT_ID, ZMSG_SENDER, ZMSG_TO, ZMSG_XML from ZMESSAGEV5OBJECT
     '''
     try:
         reader = None
         reader = cmd.ExecuteReader()
     except:  #因为此处会出现错误,故暂时在出异常时,把文件移到Cache里面(Md5)
         if reader is not None:
             reader.Close()
         cmd.Dispose()
         db.Close()
         dst_file = self.cache + "/" + unity_c37r.md5(
             f_message_node.PathWithMountPoint)
         unity_c37r.mapping_file_with_copy(
             f_message_node.PathWithMountPoint, dst_file)
         db = unity_c37r.create_connection(dst_file)
         cmd = sql.SQLiteCommand(db)
         cmd.CommandText = '''
             select ZLOCAL_ID, ZBODY_TYPE, ZTIMESTAMP, ZBODY, ZEXT_ID, ZMSG_SENDER, ZMSG_TO, ZMSG_XML from ZMESSAGEV5OBJECT
         '''
         reader = cmd.ExecuteReader()  # 如果再出错误,这个案例就有问题了
     while reader.Read():
         if canceller.IsCancellationRequested:
             self.im.db_close()
             raise IOError("E")
         m = model_im.Message()
         m.talker_type = model_im.CHAT_TYPE_FRIEND
         m.account_id = aid
         target_id = unity_c37r.c_sharp_get_string(reader, 5)
         m.is_sender = 1 if str(target_id) == aid else 0
         m.deleted = 0
         m.msg_id = unity_c37r.c_sharp_get_long(reader, 0)
         m.send_time = int(
             unity_c37r.c_sharp_get_real(reader, 2) * 1000) / 1000
         m.source = f_message_node.AbsolutePath
         m.sender_id = unity_c37r.c_sharp_get_string(reader, 5)
         if m.is_sender == 1:
             tid = unity_c37r.c_sharp_get_string(reader, 6)
             m.talker_id = tid.split('@')[0]
         else:
             m.talker_id = unity_c37r.c_sharp_get_string(reader, 5)
         #def __process_message(self, content, xml, aid, m_type, ext_id):
         p1 = unity_c37r.c_sharp_get_string(reader, 3)
         p2 = unity_c37r.c_sharp_get_string(reader, 7)
         tp = unity_c37r.c_sharp_get_long(reader, 1)
         p3 = unity_c37r.c_sharp_get_string(reader, 4)
         s_msg = self.__process_message(p1, p2, aid, tp, p3)
         m.content = s_msg.content
         m.media_path = s_msg.media_path
         m.type = s_msg.media_type
         try:
             self.im.db_insert_table_message(m)
         except:
             print('f****d!')
     cmd.Dispose()
     db.Close()
     self.im.db_commit()
     g_message_node = self.root_node.GetByPath(
         'Documents/{}/account/{}_MUC.sqlite'.format(aid, aid))
     if g_message_node is None:
         reader = None
     else:
         db = unity_c37r.create_connection(
             g_message_node.PathWithMountPoint)
         cmd = sql.SQLiteCommand(db)
         cmd.CommandText = '''
             select ZBODY_TYPE, ZMSG_ID, ZSEND_TIME, ZBODY, ZSENDER_ID, ZMSG_TO, ZMSG_XML, ZEXT_ID from ZMUCMESSAGEOBJECT
         '''
         reader = cmd.ExecuteReader()
     while reader is not None and reader.Read():
         if canceller.IsCancellationRequested:
             self.im.db_close()
             raise IOError("E")
         m = model_im.Message()
         m.talker_type = model_im.CHAT_TYPE_GROUP
         m.msg_id = unity_c37r.c_sharp_get_string(reader, 1)
         m.account_id = aid
         sender_id = unity_c37r.c_sharp_get_string(reader, 4)
         m.sender_id = sender_id if sender_id is not 0 or unity_c37r.c_sharp_get_string(
             reader, 4) != '' else -1000  # -1000 means system...
         m.is_sender = 1 if str(m.sender_id) == aid else 0
         m.send_time = unity_c37r.c_sharp_get_long(reader, 2) / 1000
         m.source = g_message_node.AbsolutePath
         m.deleted = 0
         tp = unity_c37r.c_sharp_get_long(reader, 0)
         xml = unity_c37r.c_sharp_get_string(reader, 6)
         ext_id = unity_c37r.c_sharp_get_string(reader, 7)
         if tp == 0 or tp == 3:
             m.content = unity_c37r.c_sharp_get_string(reader, 3)
             m.type = model_im.MESSAGE_CONTENT_TYPE_TEXT if m.sender_id != -1000 else model_im.MESSAGE_CONTENT_TYPE_SYSTEM
         elif xml is not None and ext_id is None:
             if tp == 1:
                 r = os.path.exists(
                     os.path.join(self.root_node.PathWithMountPoint,
                                  'Documents/image/%s' % ext_id))
                 if r:
                     m.media_path = os.path.join(
                         self.root_node.AbsolutePath,
                         'Documents/image/%s' % ext_id)
                     m.type = model_im.MESSAGE_CONTENT_TYPE_IMAGE
                 elif os.path.exists(
                         os.path.join(self.root_node.PathWithMountPoint,
                                      'Documents/image/th_%s' % ext_id)):
                     m.media_path = os.path.join(
                         self.root_node.AbsolutePath,
                         'Documents/image/th_%s' % ext_id)
                     m.type = model_im.MESSAGE_CONTENT_TYPE_IMAGE
                 else:
                     m.content = 'image message not cached'
                     m.type = model_im.MESSAGE_CONTENT_TYPE_TEXT
             elif tp == 6:
                 r = self.__handle_location(aid, ext_id)
                 if r == '':
                     m.content = 'location message not cached'
                     m.type = model_im.MESSAGE_CONTENT_TYPE_TEXT
                 r = r.split(';')
                 m.location_name = r[0]
                 m.location_lat = r[1]
                 m.location_lng = r[2]
                 m.type = model_im.MESSAGE_CONTENT_TYPE_LOCATION
         else:
             p1 = unity_c37r.c_sharp_get_string(reader, 3)
             p2 = unity_c37r.c_sharp_get_string(reader, 6)
             ext_id = unity_c37r.c_sharp_get_string(reader, 7)
             s_msg = self.__process_message(p1, p2, aid, tp, ext_id)
             m.media_path = s_msg.media_path
             m.type = s_msg.media_type
         self.im.db_insert_table_message(m)
     if reader is not None:
         cmd.Dispose()
         db.Close()
     self.im.db_commit()
コード例 #18
0
ファイル: apple_ml.py プロジェクト: jeftom/pa_script
    def analyse_account(self, aid):
        account_node = self.root_node.GetByPath(
            '/Documents/{}/account'.format(aid))
        ##########################Friends#####################################
        f_sql_node = account_node.GetByPath('/{}_Relation2.sqlite'.format(aid))
        db = unity_c37r.create_connection(f_sql_node.PathWithMountPoint)
        cmd = sql.SQLiteCommand(db)
        friends = list()
        cmd.CommandText = '''
            select miliaoid, name, comments, icon, type, timestamp from MLRelation2Object 
        '''
        reader = cmd.ExecuteReader()
        while reader.Read():
            if canceller.IsCancellationRequested:
                self.im.db_close()
                raise IOError("E")
            f = model_im.Friend()
            f.account_id = aid
            f.friend_id = unity_c37r.c_sharp_get_string(reader, 0)
            f.deleted = 0
            f.nickname = unity_c37r.c_sharp_get_string(reader, 1)
            f.remark = unity_c37r.c_sharp_get_string(reader, 2)
            pic = unity_c37r.c_sharp_get_string(reader, 3)
            f.icon = self.__get_media_path(pic, -1)
            f.source = f_sql_node.AbsolutePath
            f.type = model_im.FRIEND_TYPE_FRIEND
            friends.append(f)
        cmd.Dispose()
        db.Close()

        f_info_node = account_node.GetByPath(
            '/{}_PersonalInfo2.sqlite'.format(aid))
        db = unity_c37r.create_connection(f_info_node.PathWithMountPoint)
        cmd = sql.SQLiteCommand(db)
        for f in friends:
            cmd.CommandText = '''
                select info from MLPersonalInfo2Object where miliaoid = '{}'
            '''.format(f.friend_id)
            reader = cmd.ExecuteReader()
            if not reader.Read():
                cmd.Dispose()
                continue
            jstring = unity_c37r.c_sharp_get_string(reader, 0)
            r = json.loads(jstring, encoding='utf-8')
            f.address = r.get('city')
            if r.get('sex') == u'男':
                f.gender = 0
            elif r.get('sex') == u'女':
                f.gender = 1
            else:
                f.gender = 9
            f.photo = self.__get_media_path(r.get('icon'), -1)
            f.signature = r.get('signature')
            self.im.db_insert_table_friend(f)
            cmd.Dispose()
        self.im.db_commit()
        cmd.CommandText = '''
            select info from MLPersonalInfo2Object where miliaoid = {} 
        '''.format(aid)
        reader = cmd.ExecuteReader()
        if not reader.Read():
            module_print('no account record in the db, skipped', 1)
        else:
            a = model_im.Account()
            a.account_id = aid
            jstring = unity_c37r.c_sharp_get_string(reader, 0)
            r = json.loads(jstring)
            a.nickname = r.get('nickname')
            a.address = r.get('city')
            a.birthdat = r.get('birthday')
            a.source = f_info_node.PathWithMountPoint
            a.signature = r.get('signature')
            icon_url = r.get('icon')
            a.photo = self.__get_media_path(icon_url, -1)
            a.source = f_info_node.AbsolutePath
            self.im.db_insert_table_account(a)
        ##########################Groups#####################################
        cmd.Dispose()
        db.Close()

        grp_sql_node = account_node.GetByPath('/{}_MUC2.sqlite'.format(aid))
        if grp_sql_node is not None:
            db = unity_c37r.create_connection(grp_sql_node.PathWithMountPoint)
            cmd = sql.SQLiteCommand(db)
            cmd.CommandText = '''
            select creator_id, creator_name, group_id, group_name, create_time, group_member_limit, group_icon
            from MLMUC2Object
            '''
            reader = cmd.ExecuteReader()
        else:
            reader = None
        grp = dict()
        while reader is not None and reader.Read():
            if canceller.IsCancellationRequested:
                self.im.db_close()
                raise IOError("E")
            g = model_im.Chatroom()
            g.account_id = aid
            g.chatroom_id = unity_c37r.c_sharp_get_string(reader, 2)
            g.creator_id = unity_c37r.c_sharp_get_string(reader, 0)
            g.create_time = unity_c37r.c_sharp_get_long(reader, 4)
            g.owner_id = g.creator_id
            g.name = unity_c37r.c_sharp_get_string(reader, 3)
            g.max_member_count = unity_c37r.c_sharp_get_long(reader, 5)
            g.deleted = 0
            g.source = grp_sql_node.AbsolutePath
            g.member_count = 0
            pic = unity_c37r.c_sharp_get_string(reader, 6)
            if pic is None:
                pic = ""
            res = re.search('\\[(.*)\\]', pic, re.I | re.M)
            if res is not None:
                g.photo = self.__get_media_path(
                    json.loads(res.group(1)).get('url'),
                    -1) if res.group(1) is not "" else None
            grp[g.chatroom_id] = g
        if reader is not None:
            cmd.Dispose()
            db.Close()
        grp_mem_node = account_node.GetByPath(
            '/{}_mucMember2.sqlite'.format(aid))
        if grp_mem_node is not None:
            #db = sqlite3.connect(grp_mem_node.PathWithMountPoint)
            db = unity_c37r.create_connection(grp_mem_node.PathWithMountPoint)
            #cur = db.cursor()
            cmd = sql.SQLiteCommand(db)
            cmd.CommandText = '''
                select group_id, member_gender, member_icon, member_id, member_nick, join_time, last_send_msg, member_uptodate
                from MLMUCMember2Object           
            '''
            reader = cmd.ExecuteReader()
        else:
            reader = None
        while reader is not None and reader.Read():
            if canceller.IsCancellationRequested:
                self.im.db_close()
                raise IOError("E")
            gid = unity_c37r.c_sharp_get_string(reader, 0)
            if grp.__contains__(gid):
                grp[gid].member_count += 1
            m = model_im.ChatroomMember()
            m.account_id = aid
            m.member_id = unity_c37r.c_sharp_get_string(reader, 3)
            m.display_name = unity_c37r.c_sharp_get_string(reader, 4)
            # fix it later
            #m.photo = md5()
            pic = unity_c37r.c_sharp_get_string(reader, 2)
            m.photo = self.__get_media_path(pic, -1) if pic is not "" else None
            m.source = grp_mem_node.AbsolutePath
            m.chatroom_id = unity_c37r.c_sharp_get_string(reader, 0)
            #m.gender =  # fix it later...
            m.gender = 9
            m.deleted = 0
            self.im.db_insert_table_chatroom_member(m)
        if reader is not None:
            cmd.Dispose()
            db.Close()
        for k in grp:
            self.im.db_insert_table_chatroom(grp[k])
        self.im.db_commit()
        self.__parse_message(account_node, aid)
コード例 #19
0
ファイル: model_eb.py プロジェクト: jeftom/pa_script
 def generate_bcp_account(self):
     conn = unity_c37r.create_connection(self.cache_db + '.IM')
     cmds = sql.SQLiteCommand(conn)
     cmds.CommandText = '''
         select * from account
     '''
     reader = cmds.ExecuteReader()
     while reader.Read():
         a = AccountInfo()
         #a.colltection_target_id = self.colltection_target_id
         a.set_value_with_idx(a.colltection_target_id, self.colltection_target_id)
         a.set_value_with_idx(a.app_code, self.app_code)
         a.set_value_with_idx(a.account_id, unity_c37r.c_sharp_get_string(reader, 0))
         a.set_value_with_idx(a.nick, unity_c37r.c_sharp_get_string(reader, 1))
         a.set_value_with_idx(a.account, unity_c37r.c_sharp_get_string(reader, 2))
         a.set_value_with_idx(a.password, unity_c37r.c_sharp_get_string(reader, 3))
         pic = unity_c37r.c_sharp_get_string(reader, 4)
         pic = os.path.join(self.mnt, pic)
         if os.path.exists(pic):
             #a.set_value_with_idx(os.path.join(self.app_code, ))
             ppath,pname = os.path.split(pic)
             a.set_value_with_idx(a.photo, self.app_code + '/' + pname)
             pass # copy file...
         a.set_value_with_idx(a.telephone, unity_c37r.c_sharp_get_string(reader, 5))
         gender = unity_c37r.c_sharp_get_long(reader, 6)
         rg = '0'
         if gender == 0:
             rg = '0'
         elif gender == 1:
             rg = '1'
         elif gender == 2:
             rg = '2'
         elif gender == 9:
             rg = '9'
         a.set_value_with_idx(a.sex_code, rg)
         a.set_value_with_idx(a.age, unity_c37r.c_sharp_get_long(reader, 7))
         #a.set_value_with_idx(a.country_code, unity_c37r.c_sharp_get_string(reader, 8)) # NOT SUPPORT RIGHT NOW!!!!
         a.set_value_with_idx(a.city, unity_c37r.c_sharp_get_string(reader, 9))
         #a.set_value_with_idx(a.signature, unity_c37r.c_sharp_get_string(reader, ))
         a.set_value_with_idx(a.address, unity_c37r.c_sharp_get_string(reader, 12))
         a.set_value_with_idx(a.birth, unity_c37r.c_sharp_get_string(reader, 13))
         a.set_value_with_idx(a.signature, unity_c37r.c_sharp_get_string(reader, 14))
         d = unity_c37r.c_sharp_get_string(reader, 15)
         a.set_value_with_idx(a.signature, d)
         # not support delete time
         unity_c37r.execute_query(self.cmd, TBL_BCP_INSERT_ACCOUNT, a.get_values())
     self.db_commit()
     reader.Close()
     cmds.Dispose()
     conn.Close()
コード例 #20
0
 def parse_avfs(self, ac):
     #ac = TbAccount()
     db_node = self.avfs_message_dict.get(str(ac.uid))
     if db_node is None:
         return
     path = unity_c37r.check_sqlite_maturity(db_node, self.cache)
     conn = unity_c37r.create_connection_tentatively(path)
     cmd = sql.SQLiteCommand(conn)
     if ac.is_from_avfs:
         cmd.CommandText = '''
             select name, extInfo, deleteStatus, signature, avatarURL, displayName, targetId from MPMProfileim_cc where targetId = {}
         '''.format(ac.uid)
         reader = cmd.ExecuteReader()
         if reader.Read():
             a = model_im.Account()
             a.account_id = unity_c37r.c_sharp_get_string(reader, 6)
             a.nickname = unity_c37r.c_sharp_get_string(reader, 0)
             a.username = a.nickname
             a.signature = unity_c37r.c_sharp_get_string(reader, 3)
             a.photo = unity_c37r.c_sharp_get_string(reader, 4)
             self.im.db_insert_table_account(a)
         reader.Close()
     cmd.CommandText = '''
         select name, extInfo, deleteStatus, signature, avatarURL, displayName, targetId from MPMProfileim_cc where targetId != {}
     '''.format(ac.uid)
     reader = cmd.ExecuteReader()
     f_dict = dict()
     while reader.Read():
         f = model_im.Friend()
         f.nickname = unity_c37r.c_sharp_get_string(reader, 0)
         f.account_id = ac.uid
         f.friend_id = unity_c37r.c_sharp_get_string(reader, 6)
         f.signature = unity_c37r.c_sharp_get_string(reader, 3)
         f.remark = f.nickname
         f.deleted = unity_c37r.c_sharp_get_long(reader, 2)
         f.photo = unity_c37r.c_sharp_get_string(reader, 4)
         f_dict[f.friend_id] = f
         self.eb.im.db_insert_table_friend(f)
     reader.Close()
     cmd.CommandText = '''
         select name, displayName, targetId, avatarURL from MPMProfileim_bc where name != '{}'
     '''.format(ac.tb_id)
     reader = cmd.ExecuteReader()
     #TODO add pic/tb_id when parse avfs message dict
     while reader.Read():
         f = model_im.Friend()
         f.account_id = ac.uid
         f.nickname = unity_c37r.c_sharp_get_string(reader, 0)
         f.friend_id = unity_c37r.c_sharp_get_string(reader, 2)
         f.remark = unity_c37r.c_sharp_get_string(reader, 1)
         f.photo = unity_c37r.c_sharp_get_string(reader, 3)
         f_dict[f.friend_id] = f
         self.eb.im.db_insert_table_friend(f)
     reader.Close()
     #c2c messages
     cmd.CommandText = '''
         select  convTargetId, messageID, summary, senderId, receiverId, messageTime from MPMessageim_cc
     '''
     reader = cmd.ExecuteReader()
     while reader.Read():
         m = model_im.Message()
         m.account_id = ac.uid
         m.sender_id = unity_c37r.c_sharp_get_string(reader, 3)
         m.is_sender = 1 if unity_c37r.c_sharp_get_string(
             reader, 4) == m.sender_id else 0
         m.msg_id = unity_c37r.c_sharp_get_string(reader, 1)
         m.talker_id = unity_c37r.c_sharp_get_string(reader, 0)
         m.content = unity_c37r.c_sharp_get_string(reader, 2)
         m.send_time = unity_c37r.c_sharp_get_long(reader, 5) / 1000
         m.talker_name = f_dict[m.talker_id].nickname
         m.type = model_im.MESSAGE_CONTENT_TYPE_TEXT
         self.im.db_insert_table_message(m)
     reader.Close()
     #b2c messages
     cmd.CommandText = '''
         select convTargetId, messageID, summary, senderId, receiverId, messageTime from MPMessageim_bc
     '''
     reader = cmd.ExecuteReader()
     while reader.Read():
         m = model_im.Message()
         m.account_id = ac.uid
         m.sender_id = unity_c37r.c_sharp_get_string(reader, 3)
         m.talker_id = unity_c37r.c_sharp_get_string(reader, 0)
         m.is_sender = 0 if m.sender_id.__contains__(m.talker_id) else 1
         if m.is_sender == 1:
             m.sender_id = ac.uid  # 如果是自己发的,则替换对应的ID
         m.send_time = unity_c37r.c_sharp_get_long(reader, 5) / 1000
         m.talker_name = f_dict[m.talker_id].nickname
         m.content = unity_c37r.c_sharp_get_string(reader, 2)
         m.msg_id = unity_c37r.c_sharp_get_string(reader, 1)
         m.type = model_im.MESSAGE_CONTENT_TYPE_TEXT
         self.im.db_insert_table_message(m)
     reader.Close()
     cmd.Dispose()
     conn.Close()
     self.im.db_commit()
コード例 #21
0
    def parse(self, ac):
        #ac = TbAccount()
        self.parse_avfs(ac)
        db_node = self.node.GetByPath('Library/Caches/amps3_{}.db'.format(
            ac.uid))
        if db_node is None:
            self.log.m_print('get db node failed, parse exists!')
            return
        #path = db_node.PathWithMountPoint
        #update sqlite-checking.
        path = unity_c37r.check_sqlite_maturity(db_node, self.cache)
        conn = unity_c37r.create_connection(path)
        cmd = sql.SQLiteCommand(conn)
        cmd.CommandText = '''
            select ZDISPLAYNAME, ZHEADPIC, ZMOBILEPHONE, ZNICK from ZAMPUSER where ZTAOBAOID = {}
        '''.format(ac.uid)
        reader = cmd.ExecuteReader()
        image_cache_path = os.path.join(
            self.node.PathWithMountPoint,
            'Library/Caches/YWDiskCache/ImageCache')
        if reader.Read():
            a = model_im.Account()
            a.account_id = ac.uid
            a.nickname = unity_c37r.c_sharp_get_string(reader, 3)
            a.username = unity_c37r.c_sharp_get_string(reader, 0)
            ac.tb_id = a.username
            a.telephone = unity_c37r.c_sharp_get_string(reader, 2)
            pic = unity_c37r.c_sharp_get_string(reader, 1)
            hash_code = unity_c37r.md5(pic)
            if os.path.exists(os.path.join(image_cache_path, hash_code)):
                a.photo = 'Library/Cache/YWDiskCache/YWDiskCache/ImageCache/{}'.format(
                    hash_code)
            else:
                a.photo = pic
            self.im.db_insert_table_account(a)
        cmd.Dispose()
        cmd.CommandText = '''
           select ZDISPLAYNAME, ZHEADPIC, ZMOBILEPHONE, ZNICK, ZTAOBAOID, ZSIGNATURE from ZAMPUSER where ZTAOBAOID != {}
        '''.format(ac.uid)
        reader = cmd.ExecuteReader()
        f_dict = dict()
        while reader.Read():
            if canceller.IsCancellationRequested:
                cmd.Dispose()
                conn.Close()
                self.im.db_close()
                raise IOError('E')
            f = model_im.Friend()
            f.account_id = ac.uid  # Fix error
            try:
                f.friend_id = int(unity_c37r.c_sharp_get_string(reader, 4))
            except Exception as e:
                self.log.m_err('error account id: %s' %
                               unity_c37r.c_sharp_get_string(reader, 4))
                f.friend_id = random.randint(0, 0xffffffff)  # 产生假ID
            f.nickname = unity_c37r.c_sharp_get_string(reader, 3)
            f.remark = unity_c37r.c_sharp_get_string(reader, 0)
            f.telephone = unity_c37r.c_sharp_get_string(reader, 2)
            f.signature = unity_c37r.c_sharp_get_string(reader, 5)
            pic = unity_c37r.c_sharp_get_string(reader, 1)
            hash_code = unity_c37r.md5(pic)
            if os.path.exists(os.path.join(image_cache_path, hash_code)):
                f.photo = 'Library/Cache/YWDiskCache/ImageCache/{}'.format(
                    hash_code)
            else:
                f.photo = pic
            f_dict[f.remark] = f
        cmd.Dispose()
        conn.Close()
        conn = None
        cmd = None
        # 用户行为分析 可以说很详细了
        if ac.tb_id is None:
            reader = None
        else:
            log_node = self.node.GetByPath(
                'Library/Caches/StructuredLogs/cntaobao{}.db'.format(ac.tb_id))
            if log_node is None:
                reader = None
            else:
                #update sqlite connection
                pth = unity_c37r.check_sqlite_maturity(log_node, self.cache)
                conn = unity_c37r.create_connection(pth)
                cmd = sql.SQLiteCommand(conn)
                cmd.CommandText = '''
                    select id, operation_id, record, logtime, result from Record
                '''
                reader = cmd.ExecuteReader()
        while reader is not None and reader.Read():
            if canceller.IsCancellationRequested:
                cmd.Dispose()
                conn.Close()
                raise IOError('E')
            try:
                logs = model_eb.EBLog()
                m_str = unity_c37r.c_sharp_get_string(reader, 1)
                m_sl = m_str.split('|')
                sender = m_sl[1]
                reciever = m_sl[2]
                if reciever == 'wwLogin':
                    sender = re.search(r'\(null\)(.*)', sender,
                                       re.I | re.M).group(1)
                    desc = '''{} try to login'''.format(sender)
                    logs.set_value_with_idx(logs.description, desc)
                else:
                    sender = re.search('cnhhupan(.*)', sender,
                                       re.I | re.M).group(1)
                    reciever = re.search('cnhhupan(.*)', reciever,
                                         re.I | re.M).group(1)
                    desc = '''{} try to send message to {}'''.format(
                        sender, reciever)
                    logs.set_value_with_idx(logs.description, desc)
                m_str = unity_c37r.c_sharp_get_string(reader, 2)
                js = json.loads(m_str)
                content = js.get('title')
                logs.set_value_with_idx(logs.content, content)
                log_time = unity_c37r.c_sharp_get_long(reader, 3) / 1000
                logs.set_value_with_idx(logs.time, log_time)
                result = unity_c37r.c_sharp_get_long(reader, 4)
                logs.set_value_with_idx(logs.result, result)
                self.eb.db_insert_table_log(logs.get_value())
            except Exception as e:
                traceback.print_exc()
                self.log.m_print(e)
                self.log.m_err('detect wrong string format: {}'.format(m_str))
        if conn is not None:
            cmd.Dispose()
            conn.Close()
            cmd = None
            conn = None
        #l = unity_c37r.search_for_certain(self.node, 'Library/Caches/YWDB/WXOPENIMSDKDB(.*)/message.db$')
        u = self.message_dict.get(ac.tb_id)
        if u is None:
            self.log.m_print('no %s chat info!' % ac.tb_id)
            return

        conn = unity_c37r.create_connection(u)
        cmd = sql.SQLiteCommand(conn)
        cmd.CommandText = '''
            select ZDISPLAYNAME, ZEMAIL, ZGENDER, ZTBNICK, ZPHONE_NUM from ZWWPERSON
        '''
        reader = cmd.ExecuteReader()
        while reader.Read():
            if canceller.IsCancellationRequested:
                cmd.Dispose()
                conn.Close()
                self.im.db_close()
                raise IOError('e')
            user_name = unity_c37r.c_sharp_get_string(reader, 0)
            if f_dict.__contains__(user_name):
                pass
            else:
                f = model_im.Friend()
                f.account_id = ac.uid
                f.nickname = unity_c37r.c_sharp_get_string(reader, 3)
                f.remark = unity_c37r.c_sharp_get_string(reader, 0)
                f.friend_id = random.randint(0, 0xffffffff)  # 产生假ID
                f_dict[f.remark] = f

        for k in f_dict:
            self.im.db_insert_table_friend(f_dict[k])

        cmd.Dispose()
        cmd.CommandText = '''
            select ZMESSAGEID, ZTYPE, ZTIME, ZCONTENT, ZRECEIVERID, ZSENDERID from ZWWMESSAGE
        '''
        reader = cmd.ExecuteReader()
        # 最好将talker_name之类的设置全面,因为淘宝的id管理比较混乱。
        # 原则上淘宝账号、支付宝账号、闲鱼账号、天猫账号、阿里巴巴账号等通用,但是实际上他们在进行管理时
        # 各自采用不同的ID管理方式。导致这边筛选很尴尬
        idx = 0
        while reader.Read():
            if canceller.IsCancellationRequested:
                cmd.Dispose()
                conn.Close()
                self.im.db_close()
                raise IOError('e')
            m = model_im.Message()
            m.account_id = ac.uid
            sender = unity_c37r.c_sharp_get_blob(reader, 5).decode(
                'utf-8'
            )  #struct.unpack('i', unity_c37r.c_sharp_get_blob(reader, 5))
            reciever = unity_c37r.c_sharp_get_blob(reader, 4).decode(
                'utf-8'
            )  #struct.unpack('i', unity_c37r.c_sharp_get_blob(reader, 4))
            try:
                sender = re.search("cnhhupan(.*)", sender,
                                   re.I | re.M).group(1)
                reciever = re.search("cnhhupan(.*)", reciever,
                                     re.I | re.M).group(1)
            except:
                try:
                    if sender.__contains__('alichn'):
                        sender = re.search('cnalichn(.*)', sender,
                                           re.I | re.M).group(1)
                    else:
                        reciever = re.search('cnalichn(.*)', reciever,
                                             re.I | re.M).group(1)
                except:
                    self.log.m_print("sender:{} rec:{}".format(
                        sender, reciever))
            if sender.__contains__(':'):
                sender = sender.split(':')[0]
            if reciever.__contains__(':'):
                reciever = reciever.split(':')[0]
            if sender == ac.tb_id:
                m.is_sender = 1
                if not f_dict.__contains__(reciever):
                    self.log.m_print("no such reciever friend:%s" % reciever)
                    continue
                m.talker_id = f_dict[reciever].friend_id
                m.sender_id = ac.uid
            elif f_dict.__contains__(sender):
                m.is_sender = 0
                m.talker_id = f_dict[sender].friend_id
                m.sender_id = f_dict[sender].friend_id
            elif f_dict.__contains__(sender):  #类似于hqxuelang:服务助手 这种有时候就不在表中
                m.is_sender = 0
                m.talker_id = f_dict[sender].friend_id
                m.sender_id = f_dict[sender].friend_id
            else:
                self.log.m_print('find unchecked friend:%s' % sender)
                f = self.create_fake_friend(ac, sender)
                f_dict[sender] = f
                m.talker_id = f_dict[sender].friend_id
                m.sender_id = f_dict[sender].friend_id
            m.msg_id = unity_c37r.c_sharp_get_long(reader, 0)
            tp = unity_c37r.c_sharp_get_long(reader, 1)
            tm = unity_c37r.c_sharp_try_get_time(reader, 2)
            m.send_time = unity_c37r.format_mac_timestamp(tm)
            m_str = unity_c37r.c_sharp_get_blob(reader, 3)
            if m_str is not None:
                m_str = m_str.decode('utf-8')
            else:
                self.log.m_print('find useless data, skipped!')
                m_str = ''
            if tp == 0 or tp == 5:
                m.content = m_str
                m.type = model_im.MESSAGE_CONTENT_TYPE_TEXT
            elif tp == 1:
                m.content = m_str
                m.media_path = m_str
                m.type = model_im.MESSAGE_CONTENT_TYPE_IMAGE
            elif tp == 2:
                m.content = m_str
                m.media_path = m_str
                m.type = model_im.MESSAGE_CONTENT_TYPE_VOICE
            elif tp == 8:
                m.content = 'empty message'
                m.type = model_im.MESSAGE_CONTENT_TYPE_TEXT
            elif tp == 65:
                try:
                    js = json.loads(m_str)
                    # 这里有子类型号
                    # 实际上是属于千牛发送的自动排列的消息内容
                    sub_tp = js.get('template').get('id')
                    sub_string = js.get('template').get('data').get('text')
                    # f = open('D:/webs/{}.xml'.format(random.randint(0, 0xffffffff)), 'w+')
                    # if sub_string is not None:
                    #     f.write(sub_string)
                    # f.close()
                    if sub_tp == 20002:
                        m.type = model_im.MESSAGE_CONTENT_TYPE_ATTACHMENT
                        deal = model_im.Deal()
                        trade = model_eb.EBDeal()
                        alter_string = js.get('header').get('degrade').get(
                            'alternative')
                        if alter_string.__contains__(':'):
                            deal.deal_id = alter_string.split(':')[1]
                        m.extra_id = deal.deal_id
                        deal.description = '''title:{}\ncontent:{}'''.format(
                            js.get('header').get('title'),
                            js.get('header').get('degrade').get('alternative'))
                        trade.set_value_with_idx(trade.desc, deal.description)
                        deal.type = model_im.DEAL_TYPE_RECEIPT  # may fix it later
                        trade.set_value_with_idx(trade.deal_type,
                                                 model_eb.TRADE_PAY)
                        #trade.set_value_with_idx(trade.status, model_eb.EBDEAL)
                        self.im.db_insert_table_deal(deal)
                        self.eb.db_insert_table_deal(trade.get_value())
                    elif sub_tp == 20013:  # 快速入口
                        m.type = model_im.MESSAGE_CONTENT_TYPE_TEXT
                        label_list = js.get('template').get('data').get(
                            'alist')
                        content = ''
                        for l in label_list:
                            content += '%s\n' % l.get('label')
                        m.content = content
                    elif sub_tp is None:
                        m.type = model_im.MESSAGE_CONTENT_TYPE_TEXT
                        m.content = '''title:{}\ncontent:{}'''.format(
                            js.get('header').get('title'),
                            js.get('degrade').get('alternative'))
                except Exception as e:
                    self.log.m_err(
                        'detect wrong message content:{}\nidx:{}'.format(
                            m_str, idx))
                    m.type = model_im.MESSAGE_CONTENT_TYPE_TEXT
                    m.content = u'解析失败,原始内容:' + m_str
            elif tp == 112:
                js = json.loads(m_str)
                m.type = model_im.MESSAGE_CONTENT_TYPE_TEXT
                m.content = js.get('title')
            elif tp == 113:
                js = json.loads(m_str)
                m.type = model_im.MESSAGE_CONTENT_TYPE_TEXT
                m.content = '''file message name:{}, size:{}'''.format(
                    js.get('nodeName'), js.get('nodeSize'))
            elif tp == 241:
                js = json.loads(m_str)
                js = json.loads(js.get('datas'))
                m.type = model_im.MESSAGE_CONTENT_TYPE_TEXT
                m.content = '''[product info]name:{}\nprice:{}\nsales:{}\npic:{}'''.format(
                    js.get('name'), js.get('priceAsString'),
                    js.get('salesCount'), js.get('picUrl'))
            else:
                self.log.m_print('detect unspport type:{}, index:{}'.format(
                    tp, idx))
                self.log.m_print('raw string: %s' % m_str)
                m.type = model_im.MESSAGE_CONTENT_TYPE_TEXT
                m.content = '''[unsupport type message] raw string:%s''' % m_str
            self.im.db_insert_table_message(m)
            idx += 1
        self.im.db_commit()
コード例 #22
0
ファイル: model_eb.py プロジェクト: jeftom/pa_script
 def __get_product_models(self):
     self.ccmd.CommandText = '''
         select * from tb_product
     '''
     models = []    
     reader = self.ccmd.ExecuteReader()
     while reader.Read():
         p = EC.Product()
         if unity_c37r.c_sharp_get_string(reader, 0) is not '':
             p.OwnerUserID.Value = unity_c37r.c_sharp_get_string(reader, 0)
         if unity_c37r.c_sharp_get_string(reader, 1) is not "":
             tp = unity_c37r.c_sharp_get_string(reader, 1)
             if tp == EB_PRODUCT_UNKWON:
                 p.From.Value = u'未知来源'
             elif tp == EB_PRODCUT_BUIED:
                 p.From.Value = u'已购买的商品'
             elif tp == EB_PRODUCT_BROWSE:
                 p.From.Value = u'浏览或系统推荐的商品'
             elif tp == EB_PRODUCT_FAVORITE:
                 p.From.Value = u'收藏夹'
             elif tp == EB_PRODUCT_SHOPCART:
                 p.From.Value = u'购物车'
             elif tp == EB_PRODUCT_OTHER:
                 p.From.Value = u'未知来源'
         if unity_c37r.c_sharp_get_string(reader, 2) is not '':
             p.ProductId.Value = unity_c37r.c_sharp_get_string(reader, 2)
         if unity_c37r.c_sharp_get_string(reader, 3):
             p.ProductName.Value = unity_c37r.c_sharp_get_string(reader, 3)
         if unity_c37r.c_sharp_get_string(reader, 4) is not "":
             p.Price.Value = str(unity_c37r.c_sharp_get_string(reader, 4))
         else:
             p.Price.Value = u"价格未知"
         if unity_c37r.c_sharp_get_long(reader, 5) is not 0:
             p.Timestamp.Value = unity_c37r.get_c_sharp_ts(unity_c37r.c_sharp_get_long(reader, 5))
         if unity_c37r.c_sharp_get_string(reader, 6):
             p.Description.Value = unity_c37r.c_sharp_get_string(reader, 6)
         if unity_c37r.c_sharp_get_string(reader, 7):
             p.Url.Value = unity_c37r.get_c_sharp_uri(unity_c37r.c_sharp_get_string(reader, 7))
         if unity_c37r.c_sharp_get_string(reader, 8):
             p.ShopId.Value = unity_c37r.c_sharp_get_string(reader, 8)
         models.append(p)
     reader.Close()
     #self.ccmd.Dispose()
     return models
コード例 #23
0
 def __generate_file_list(self):
     connection = unity_c37r.create_connection(self.cache_db)
     cmd = sql.SQLiteCommand(connection)
     cmd.CommandText = '''
         select * from tbl_filelist
     '''
     ftl = NDFileList()
     reader = cmd.ExecuteReader()
     while reader.Read():
         fl = NDBCPFILELIST()
         fl.set_value_with_idx(
             fl.account_id,
             unity_c37r.c_sharp_get_string(reader, ftl.account))
         fl.set_value_with_idx(fl.app_type, self.app_type)
         fl.set_value_with_idx(fl.collect_id, self.cid)
         fl.set_value_with_idx(
             fl.file_name,
             unity_c37r.c_sharp_get_string(reader, ftl.file_name))
         fl.set_value_with_idx(
             fl.hash, unity_c37r.c_sharp_get_string(reader, ftl.file_hash))
         fl.set_value_with_idx(
             fl.file_size,
             unity_c37r.c_sharp_get_long(reader, ftl.file_size))
         fl.set_value_with_idx(
             fl.server_path,
             unity_c37r.c_sharp_get_string(reader, ftl.server_path))
         fl.set_value_with_idx(
             fl.create_time,
             unity_c37r.c_sharp_get_long(reader, ftl.create_time))
         fl.set_value_with_idx(
             fl.update_time,
             unity_c37r.c_sharp_get_long(reader, ftl.update_time))
         fl.set_value_with_idx(
             fl.cached_time,
             unity_c37r.c_sharp_get_long(reader, ftl.cache_time))
         fl.set_value_with_idx(
             fl.delete_status,
             unity_c37r.c_sharp_get_long(reader, ftl.deleted))
         self.db_insert_file_list(fl)
     ftl = NDFileShared()
     reader.Close()
     cmd.CommandText = '''
         select * from tb_shared
     '''
     reader = cmd.ExecuteReader()
     while reader.Read():
         fl = NDBCPFILELIST()
         fl.set_value_with_idx(fl.app_type, self.app_type)
         fl.set_value_with_idx(fl.collect_id, self.cid)
         fl.set_value_with_idx(
             fl.account_id,
             unity_c37r.c_sharp_get_string(reader, ftl.account))
         fl.set_value_with_idx(
             fl.file_name,
             unity_c37r.c_sharp_get_string(reader, ftl.file_name))
         fl.set_value_with_idx(
             fl.file_size,
             unity_c37r.c_sharp_get_long(reader, ftl.file_size))
         fl.set_value_with_idx(
             fl.url, unity_c37r.c_sharp_get_string(reader, ftl.url))
         fl.set_value_with_idx(
             fl.create_time,
             unity_c37r.c_sharp_get_long(reader, ftl.create_time))
         fl.set_value_with_idx(
             fl.update_time,
             unity_c37r.c_sharp_get_long(reader, ftl.update_time))
         fl.set_value_with_idx(
             fl.cached_time,
             unity_c37r.c_sharp_get_long(reader, ftl.send_time))
         fl.set_value_with_idx(
             fl.server_path,
             unity_c37r.c_sharp_get_string(reader, ftl.server_path))
         self.db_insert_file_list(fl)
     self.db_commit()
     reader.Close()
     cmd.Dispose()
     connection.Close()
コード例 #24
0
 def parse_shop_cart(self):
     node = self.node.GetByPath('Documents/AVFSStorage/carts/avfs.sqlite')
     if node is None:
         self.log.m_print('no shop carts item cached...')
         return
     path = unity_c37r.check_sqlite_maturity(node, self.cache)
     conn = unity_c37r.create_connection(path)
     cmd = sql.SQLiteCommand(conn)
     cmd.CommandText = '''
         select filename from AVFS_FIlE_INDEX_TABLE
     '''
     reader = cmd.ExecuteReader()
     r = list()
     while reader.Read():
         r.append(unity_c37r.c_sharp_get_string(reader, 0))
     cmd.Dispose()
     reader.Close()
     conn.Close()
     for f in r:
         f_node = self.node.GetByPath(
             'Documents/AVFSStorage/carts/files/%s' % f)
         abs_path = f_node.AbsolutePath
         if f_node is None:
             continue
         try:
             m_node = BPReader.GetTree(f_node)
             m_str = unity_c37r.get_btree_node_str(m_node, "body", '')
             js = json.loads(m_str)
             obj = js.get('data').get('data')
             for k in obj.keys():
                 grp = re.search('itemv2_', k, re.I | re.M)
                 if grp is not None:
                     itm = obj.get(k)
                     p = model_eb.EBProduct()
                     itm = itm.get('fields')
                     p.set_value_with_idx(p.account_id, self.master_account)
                     p.set_value_with_idx(p.url, itm.get('pic'))
                     p.set_value_with_idx(p.product_id, itm.get('itemId'))
                     p.set_value_with_idx(p.product_name, itm.get('title'))
                     p.set_value_with_idx(p.shop_id, itm.get('shopId'))
                     p.set_value_with_idx(p.source,
                                          model_eb.EB_PRODUCT_SHOPCART)
                     p.set_value_with_idx(p.source_file, abs_path)
                     its = itm.get('pay')
                     if its is None:
                         continue
                     money_str = itm.get('pay').get('nowTitle')
                     grp = re.search(u'¥(.*)', money_str, re.I | re.M)
                     p.set_value_with_idx(p.price, float(grp.group(1)))
                     self.eb.db_insert_table_product(p.get_value())
                     continue
                 grp = re.search('shopv2_', k, re.I | re.M)
                 if grp is not None:
                     shop = model_eb.EBShop()
                     itm = obj.get(k)
                     shop.set_value_with_idx(shop.account_id,
                                             self.master_account)
                     shop.set_value_with_idx(shop.shop_id, itm.get('id'))
                     shop.set_value_with_idx(shop.shop_name,
                                             itm.get('fields').get('title'))
                     shop.set_value_with_idx(
                         shop.boss_id,
                         itm.get('fields').get('sellerId'))
                     shop.set_value_with_idx(
                         shop.boss_nick,
                         itm.get('fields').get('seller'))
                     shop.set_value_with_idx(shop.source_file, abs_path)
                     self.eb.db_insert_table_shop(shop.get_value())
                     continue
         except:
             # f = open('D:/webs/{}.txt'.format(random.randint(0, 0xffffffff)),'w+')
             # f.write(m_str)
             # f.close()
             traceback.print_exc()
             continue
     self.eb.db_commit()
コード例 #25
0
ファイル: apple_bdy.py プロジェクト: jeftom/pa_script
 def parse(self, account_folder):
     f_node = self.node.GetByPath('Documents/{}/netdisk.sqlite'.format(account_folder))
     if f_node is None:
         return
     conn = unity_c37r.create_connection_tentatively(f_node)
     cmd = sql.SQLiteCommand(conn)
     cmd.CommandText = '''
         select uk, user_name, avatar_url from feed_userlist
     '''
     reader = cmd.ExecuteReader()
     current_account = None
     if reader.Read():
         a = model_im.Account()
         a.account_id = unity_c37r.c_sharp_get_string(reader, 0)
         current_account = a.account_id
         a.username = unity_c37r.c_sharp_get_string(reader, 1)
         a.nickname = a.username
         a.photo = unity_c37r.c_sharp_get_string(reader, 2)
         self.nd.im.db_insert_table_account(a)
     else:
         raise IOError('[BAIDU NETDISK] E: NO ACCOUNT INFORMATION!')
     reader.Close()
     cmd.CommandText = '''
         select fid, server_full_path, file_name, file_size, file_md5, ctime, mtime, atime from cachefilelist
     '''
     reader = cmd.ExecuteReader()
     while reader.Read():
         f = model_nd.NDFileList()
         f.set_value_with_idx(f.account, current_account)
         f.set_value_with_idx(f.file_name, unity_c37r.c_sharp_get_string(reader, 2))
         f.set_value_with_idx(f.server_path, unity_c37r.c_sharp_get_string(reader, 1))
         f.set_value_with_idx(f.create_time, unity_c37r.c_sharp_try_get_time(reader, 5))
         f.set_value_with_idx(f.update_time, unity_c37r.c_sharp_try_get_time(reader, 6))
         f.set_value_with_idx(f.cache_time, unity_c37r.c_sharp_try_get_time(reader, 7))
         f.set_value_with_idx(f.file_hash, unity_c37r.c_sharp_get_string(reader, 4))
         f.set_value_with_idx(f.file_size, unity_c37r.c_sharp_get_long(reader, 3))
         self.nd.db_insert_filelist(f.get_values())
     reader.Close()
     self.nd.db_commit()
     cmd.CommandText = '''
         select file_name, server_full_path, file_size, blocklistmd5, trans_type, trans_status, ctime, mtime, atime, downloadlink, thumburl from transfilelist
     '''
     reader = cmd.ExecuteReader()
     while reader.Read():
         f = model_nd.NDFileTransfer()
         f.set_value_with_idx(f.account, current_account)
         f.set_value_with_idx(f.file_name, unity_c37r.c_sharp_get_string(reader, 0))
         f.set_value_with_idx(f.server_path, unity_c37r.c_sharp_get_string(reader, 1))
         f.set_value_with_idx(f.file_size, unity_c37r.c_sharp_get_long(reader, 2))
         f.set_value_with_idx(f.hash_code, unity_c37r.c_sharp_get_string(reader, 3))
         f.set_value_with_idx(f.is_download, 1)
         st = unity_c37r.c_sharp_get_long(reader, 5)
         if st == 1:
             f.set_value_with_idx(f.status, model_nd.NDFileDone)
         else:
             f.set_value_with_idx(f.status, model_nd.NDFileProcessing)
         f.set_value_with_idx(f.url, unity_c37r.c_sharp_get_string(reader, 9))
         f.set_value_with_idx(f.begin_time, unity_c37r.c_sharp_try_get_time(reader, 8))
         f_name = f.get_value_with_idx(f.file_name)
         paddern = os.path.splitext(f_name)
         if len(paddern) > 1:
             paddern = paddern[1]
         else:
             paddern = ""
         r_fname = 'Documents/{0}/Cache/{1}{2}'.format(account_folder, f.get_value_with_idx(f.hash_code), paddern)
         s_node = self.node.GetByPath(r_fname)
         if s_node is not None:
             f.set_value_with_idx(f.local_path, s_node.AbsolutePath)
         self.nd.db_insert_transfer(f.get_values())
     reader.Close()
     cmd.CommandText = '''
         select server_full_path, file_md5, file_size, ctime, mtime from image_filelist
     '''
     reader = cmd.ExecuteReader()
     while reader.Read():
         f = model_nd.NDFileList()
         f.set_value_with_idx(f.account, current_account)
         f.set_value_with_idx(f.file_name, unity_c37r.c_sharp_get_string(reader, 0))
         f.set_value_with_idx(f.server_path, f.get_value_with_idx(f.file_name))
         f.set_value_with_idx(f.create_time, unity_c37r.c_sharp_try_get_time(reader, 3))
         f.set_value_with_idx(f.update_time, unity_c37r.c_sharp_try_get_time(reader, 4))
         f.set_value_with_idx(f.file_hash, unity_c37r.c_sharp_get_string(reader, 1))
         self.nd.db_insert_filelist(f.get_values())
     self.nd.db_commit()
     reader.Close()
     cmd.CommandText = '''
         select from_uk, server_fullpath, server_filename, size, server_mtime, server_ctime, dlink, uname, msg_time from Mbox_groupfile_share
     '''
     reader = cmd.ExecuteReader()
     while reader.Read():
         s = model_nd.NDFileShared()
         s.set_value_with_idx(s.account, current_account)
         s.set_value_with_idx(s.file_name, unity_c37r.c_sharp_get_string(reader, 2))
         s.set_value_with_idx(s.server_path, unity_c37r.c_sharp_get_string(reader, 1))
         s.set_value_with_idx(s.file_size, unity_c37r.c_sharp_get_long(reader, 3) )
         s.set_value_with_idx(s.sender_id, unity_c37r.c_sharp_get_string(reader, 0))
         s.set_value_with_idx(s.update_time, unity_c37r.c_sharp_try_get_time(reader, 4))
         s.set_value_with_idx(s.create_time, unity_c37r.c_sharp_try_get_time(reader, 5))
         s.set_value_with_idx(s.url, unity_c37r.c_sharp_get_string(reader, 6))
         s.set_value_with_idx(s.sender_name, unity_c37r.c_sharp_get_string(reader, 7))
         s.set_value_with_idx(s.send_time, unity_c37r.c_sharp_try_get_time(reader, 8))
         self.nd.db_insert_shared(s.get_values())
     reader.Close()
     self.nd.db_commit()
     cmd.CommandText = '''
         select gid, name, uname, uk, avatarurl, ctime from Mbox_group
     '''
     reader = cmd.ExecuteReader()
     grp_dict = dict()
     while reader.Read():
         grp = model_im.Chatroom()
         grp.account_id = current_account
         grp.chatroom_id = unity_c37r.c_sharp_get_string(reader, 0)
         grp.name = unity_c37r.c_sharp_get_string(reader, 1)
         grp.owner_id = unity_c37r.c_sharp_get_string(reader, 3)
         grp.photo = unity_c37r.c_sharp_get_string(reader, 4)
         grp.create_time = unity_c37r.c_sharp_try_get_time(reader, 5)
         grp_dict[grp.chatroom_id] = grp
         self.nd.im.db_insert_table_chatroom(grp)
     self.nd.im.db_commit()
     reader.Close()
     cmd.CommandText = '''
         select gid, ctime, uk, uname, nick_name, avatar_url from Mbox_group_member
     '''
     reader = cmd.ExecuteReader()
     while reader.Read():
         gm = model_im.ChatroomMember()
         gm.account_id = current_account
         gm.chatroom_id = unity_c37r.c_sharp_get_string(reader, 0)
         gm.member_id = unity_c37r.c_sharp_get_string(reader, 2)
         gm.display_name = unity_c37r.c_sharp_get_string(reader, 3)
         gm.photo = unity_c37r.c_sharp_get_string(reader, 5)
         self.nd.im.db_insert_table_chatroom_member(gm)
     # add system message
     gm = model_im.ChatroomMember()
     gm.account_id = current_account
     gm.member_id = 0
     gm.display_name = u'系统消息'
     self.nd.im.db_insert_table_chatroom_member(gm)
     self.nd.im.db_commit()
     reader.Close()
     # group messages
     cmd.CommandText = '''
         select gid, msgid, msguk, time, content, username from mbox_groupmsg
     '''
     reader = cmd.ExecuteReader()
     while reader.Read():
         m = model_im.Message()
         m.talker_id = unity_c37r.c_sharp_get_string(reader, 0)
         if grp_dict.__contains__(m.talker_id):
             m.talker_name = grp_dict[m.talker_id].name
         m.msg_id = unity_c37r.c_sharp_get_string(reader, 1)
         m.sender_id = unity_c37r.c_sharp_get_string(reader, 2)
         m.send_time = unity_c37r.c_sharp_try_get_time(reader, 3)
         m.content = unity_c37r.c_sharp_get_string(reader, 4)
         m.is_sender = 1 if current_account == m.sender_id else 0
         m.account_id = current_account
         m.type = model_im.MESSAGE_CONTENT_TYPE_TEXT
         self.nd.im.db_insert_table_message(m)
     self.nd.im.db_commit()
     reader.Close()
     cmd.CommandText = '''
         select uk, uname, avatarurl from mbox_newfriendunreadlist
     '''
     reader = cmd.ExecuteReader()
     while reader.Read():
         f = model_im.Friend()
         f.account_id = current_account
         f.friend_id = unity_c37r.c_sharp_get_string(reader, 0)
         f.photo = unity_c37r.c_sharp_get_string(reader, 2)
         f.nickname = unity_c37r.c_sharp_get_string(reader, 1)
         self.nd.im.db_insert_table_friend(f)
     self.nd.im.db_commit()
     reader.Close()
     cmd.CommandText = '''
         select msgid, msguk, is_receive, time, content, username from mbox_msg
     '''
     reader = cmd.ExecuteReader()
     while reader.Read():
         m = model_im.Message()
         m.is_sender = unity_c37r.c_sharp_get_long(reader, 2)
         m.msg_id = unity_c37r.c_sharp_get_string(reader, 0)
         m.talker_id = unity_c37r.c_sharp_get_string(reader, 1)
         if m.is_sender == 0:
             m.sender_id = m.talker_id
         else:
             m.sender_id = current_account
         m.account_id = current_account
         m.content = unity_c37r.c_sharp_get_string(reader, 4)
         m.send_time = unity_c37r.c_sharp_try_get_time(reader, 3)
         m.talker_name = unity_c37r.c_sharp_get_string(reader, 5)
         m.type = model_im.MESSAGE_CONTENT_TYPE_TEXT
         self.nd.im.db_insert_table_message(m)
     self.nd.im.db_commit()
     reader.Close()
コード例 #26
0
ファイル: android_twr.py プロジェクト: jeftom/pa_script
 def parse(self, aid):
     db_node = self.node.GetByPath('databases/{}'.format(
         self.account_dbs[aid]))
     if db_node is None:
         return
     conn = unity_c37r.create_connection_tentatively(db_node)
     cmd = sql.SQLiteCommand(conn)
     f_dict = dict()
     cmd.CommandText = '''
         select user_id, username, name, description, web_url, image_url from users where user_id = {}
     '''.format(aid)
     reader = cmd.ExecuteReader()
     if reader.Read():
         a = model_im.Account()
         a.account_id = unity_c37r.c_sharp_get_long(reader, 0)
         a.nickname = unity_c37r.c_sharp_get_string(reader, 2)
         a.username = unity_c37r.c_sharp_get_string(reader, 1)
         a.signature = parse_description(
             unity_c37r.c_sharp_get_blob(reader, 3))
         a.photo = unity_c37r.c_sharp_get_string(reader, 5)
         f_dict[a.account_id] = a
         self.im.db_insert_table_account(a)
     reader.Close()
     cmd.CommandText = '''
         select user_id, username, name, description, web_url, image_url from users where user_id != {}
     '''.format(aid)
     reader = cmd.ExecuteReader()
     while reader.Read():
         f = model_im.Friend()
         f.account_id = aid
         f.friend_id = unity_c37r.c_sharp_get_long(reader, 0)
         f.nickname = unity_c37r.c_sharp_get_string(reader, 2)
         f.remark = unity_c37r.c_sharp_get_string(reader, 1)
         f.signature = parse_description(
             unity_c37r.c_sharp_get_blob(reader, 3))
         f.photo = unity_c37r.c_sharp_get_string(reader, 5)
         f_dict[f.account_id] = f
         self.im.db_insert_table_friend(f)
     reader.Close()
     cmd.CommandText = '''
         select status_id, author_id, content, created, favorite_count, retweet_count from statuses
     '''
     reader = cmd.ExecuteReader()
     while reader.Read():
         feed = model_im.Feed()
         feed.account_id = aid
         feed.likecount = unity_c37r.c_sharp_get_long(reader, 4)
         feed.rtcount = unity_c37r.c_sharp_get_long(reader, 5)
         feed.content = parse_statuses(
             unity_c37r.c_sharp_get_blob(reader, 2))
         feed.sender_id = unity_c37r.c_sharp_get_long(reader, 1)
         feed.send_time = unity_c37r.c_sharp_get_long(reader, 3) / 1000
         self.im.db_insert_table_feed(feed)
     reader.Close()
     cmd.CommandText = '''
         select  user_id, created, data, conversation_id from conversation_entries
     '''
     reader = cmd.ExecuteReader()
     while reader.Read():
         cid = unity_c37r.c_sharp_get_string(reader, 3)
         uids = cid.split('-')
         obj_id = None
         if uids[0] == str(aid):
             obj_id = uids[1]
         else:
             obj_id = uids[0]
         m = model_im.Message()
         m.account_id = aid
         m.send_time = unity_c37r.c_sharp_get_long(reader, 1) / 1000
         m.content = parse_messages(unity_c37r.c_sharp_get_blob(reader, 2))
         m.talker_id = obj_id
         m.send_id = unity_c37r.c_sharp_get_long(reader, 0)
         if f_dict.__contains__(int(obj_id)):
             m.talker_name = f_dict[int(obj_id)].nickname
         self.im.db_insert_table_message(m)
     self.im.db_commit()
     self.parse_recovery(aid)
コード例 #27
0
ファイル: android_momo.py プロジェクト: jeftom/pa_script
 def parse(self, account_id):
     db_node = self.node.GetByPath('databases/momo_{}'.format(account_id))
     if db_node is None:
         return
     conn = unity_c37r.create_connection_tentatively(db_node)
     cmd = sql.SQLiteCommand(conn)
     cmd.CommandText = '''
         select NAME, SIGNATURE, PHONE_NUMBER, PHOTOS from user where MOMOID = {}
     '''.format(account_id)
     reader = cmd.ExecuteReader()
     if reader.Read():
         a = model_im.Account()
         a.account_id = account_id
         a.nickname = unity_c37r.c_sharp_get_string(reader, 0)
         a.signature = unity_c37r.c_sharp_get_string(reader, 1)
         a.photo = unity_c37r.c_sharp_get_string(reader, 3)
         a.telephone = unity_c37r.c_sharp_get_string(reader, 2)
         self.im.db_insert_table_account(a)
     reader.Close()
     cmd.CommandText = '''
         select MOMOID, NAME, SIGNATURE, PHONE_NUMBER, PHOTOS from user where MOMOID != {}
     '''.format(account_id)
     reader = cmd.ExecuteReader()
     while reader.Read():
         f = model_im.Friend()
         f.account_id = account_id
         f.friend_id = unity_c37r.c_sharp_get_string(reader, 0)
         f.nickname = unity_c37r.c_sharp_get_string(reader, 1)
         f.signature = unity_c37r.c_sharp_get_string(reader, 2)
         f.telephone = unity_c37r.c_sharp_get_string(reader, 3)
         f.photo = unity_c37r.c_sharp_get_string(reader, 4)
         f.type = model_im.FRIEND_TYPE_FRIEND
         self.im.db_insert_table_friend(f)
         self.f_dict[f.friend_id] = f
     reader.Close()
     self.im.db_commit()
     cmd.CommandText = '''
         select GID, NAME, CREATE_TIME, OWNER, SIGN, LOC_LAT, LOC_LNG, SITE_NAME, PHOTOS from 'group'
     '''
     reader = cmd.ExecuteReader()
     grp_dict = dict()
     while reader.Read():
         grp = model_im.Chatroom()
         grp.account_id = account_id
         grp.chatroom_id = unity_c37r.c_sharp_get_string(reader, 0)
         grp.name = unity_c37r.c_sharp_get_string(reader, 1)
         grp.create_time = unity_c37r.c_sharp_try_get_time(reader, 2) / 1000
         grp.owner_id = unity_c37r.c_sharp_get_string(reader, 3)
         grp.description = unity_c37r.c_sharp_get_string(reader, 4)
         grp.photo = unity_c37r.c_sharp_get_string(reader, 8)
         self.im.db_insert_table_chatroom(grp)
         grp_dict[grp.chatroom_id] = grp
     self.im.db_commit()
     reader.Close()
     cmd.Dispose()
     conn.Close()
     chat_list = list()
     db_node = self.node.GetByPath('databases/{}'.format(account_id))
     if db_node is None:
         pass
     conn = unity_c37r.create_connection_tentatively(db_node)
     cmd = sql.SQLiteCommand(conn)
     cmd.CommandText = '''
         select tbl_name from sqlite_master where tbl_name like 'Chat_%' and type = 'table'
     '''
     reader = cmd.ExecuteReader()
     while reader.Read():
         c = unity_c37r.c_sharp_get_string(reader, 0)
         chat_list.append(c)
     reader.Close()
     idx = 0
     chat_dict = dict()
     while idx < len(chat_list):
         v = chat_list[idx].split('_')[1]
         v = processHexBytes(v)
         v = processBytesAndString(v, "jarekTan")
         #say hi 消息,之后再解析
         if v.__contains__('momo'):
             idx += 1
             continue
         v = v.split('_')[1]
         chat_dict[v] = chat_list[idx]
         idx += 1
     for c in chat_dict:
         tbl_name = chat_dict[c]
         is_grp = grp_dict.__contains__(c) # 是否是GRP群组
         if not is_grp:
             cmd.CommandText = '''
                 select m_msgid, m_msginfo, m_time, m_receive, m_type from {}
             '''.format(tbl_name)
         else:
             cmd.CommandText = '''
                 select m_msgid, m_msginfo, m_time, m_receive, m_type, m_remoteid from {}
             '''.format(tbl_name)
         reader = cmd.ExecuteReader()
         while reader.Read():
             m = model_im.Message()
             m.account_id = account_id
             m.msg_id = unity_c37r.c_sharp_get_string(reader, 0)
             m.is_sender =  0 if unity_c37r.c_sharp_get_string(reader, 3) == '1' else 1
             m.talker_id = c
             tp = unity_c37r.c_sharp_get_long(reader, 4)
             if not is_grp:
                 m.talker_name = self.f_dict[c].nickname
             else:
                 m.talker_name = grp_dict[c].name
             m.talker_type = model_im.CHAT_TYPE_FRIEND if not is_grp else model_im.CHAT_TYPE_GROUP
             if m.is_sender:
                 m.sender_id = account_id
             elif not is_grp:
                 m.sender_id = c
                 m.sender_name = m.talker_name
             else: # 如果是群组
                 m.sender_id = unity_c37r.c_sharp_get_string(reader, 5)
             m.send_time = int(unity_c37r.c_sharp_get_string(reader, 2))
             content = unity_c37r.c_sharp_get_string(reader, 1)
             js = json.loads(content)
             #如果是群组
             if is_grp:
                 m.sender_name = js.get('usertitle')
             # 0 正常消息 5 撤回消息 7 入群通知
             if tp == 0 or tp == 5 or tp == 7:
                 m.content = js.get('content')
                 m.type = model_im.MESSAGE_CONTENT_TYPE_TEXT
             #暂时不知道怎么解析
             elif tp == 1:
                 m.content = "暂不支持的内容"
                 m.type = model_im.MESSAGE_CONTENT_TYPE_TEXT
             #???没内容
             elif tp == 2:
                 m.content = "暂不支持的内容"
                 m.type = model_im.MESSAGE_CONTENT_TYPE_TEXT
             #暂未分析
             elif tp == 6:
                 m.content = "暂不支持的内容"
                 m.type = model_im.MESSAGE_CONTENT_TYPE_TEXT
             #群成员的动态,没有feed连接,只有图片
             #拆分成两条消息
             elif tp == 20:
                 m.content = js.get('t17').get('title') + '\n' + js.get('t17').get('desc')
                 m.type = model_im.MESSAGE_CONTENT_TYPE_TEXT
                 self.im.db_insert_table_message(m)
                 m.media_path = js.get('t17').get('pic')
                 m.type = model_im.MESSAGE_CONTENT_TYPE_IMAGE
             #分享
             elif tp == 12:
                 m.content = js.get('content')
                 m.type = model_im.MESSAGE_CONTENT_TYPE_TEXT
             else:
                 m.content = content
                 m.type = model_im.MESSAGE_CONTENT_TYPE_TEXT
             self.im.db_insert_table_message(m)
         reader.Close()   
     cmd.Dispose()
     conn.Close()
     self.im.db_commit()
     self.parse_relation_recovery(self.node.GetByPath('databases/momo_{}'.format(account_id)), account_id)
     self.parse_chat_recovery(self.node.GetByPath('databases/{}'.format(account_id)),account_id, chat_dict, self.f_dict, grp_dict)
     self.parse_feed(account_id)
コード例 #28
0
ファイル: model_eb.py プロジェクト: jeftom/pa_script
 def __get_shop_models(self):
     self.ccmd.CommandText = '''
         select * from tb_shop
     '''
     reader = self.ccmd.ExecuteReader()
     models = []
     while reader.Read():
         sp = EC.Shop()
         if unity_c37r.c_sharp_get_string(reader, 0) is not '':
             sp.OwnerUserID.Value = unity_c37r.c_sharp_get_string(reader, 0)
         if unity_c37r.c_sharp_get_string(reader, 1) is not '':
             sp.ShopId.Value = unity_c37r.c_sharp_get_string(reader, 1)
         if unity_c37r.c_sharp_get_string(reader, 2) is not '':
             sp.ShopName.Value = unity_c37r.c_sharp_get_string(reader, 2)
         if unity_c37r.c_sharp_get_string(reader, 3) is not '':
             sp.BossId.Value = unity_c37r.c_sharp_get_string(reader, 3)
         if unity_c37r.c_sharp_get_string(reader, 4) is not '':
             sp.BossUserNmae.Value = unity_c37r.c_sharp_get_string(reader, 4)
         if unity_c37r.c_sharp_get_string(reader, 5) is not '':
             sp.BossNickName.Value = unity_c37r.c_sharp_get_string(reader, 5)
         if unity_c37r.c_sharp_get_string(reader, 6):
             sp.BossFullName.Value = unity_c37r.c_sharp_get_string(reader, 6)
         models.append(sp)
     reader.Close()
     #self.ccmd.Dispose()
     return models
コード例 #29
0
 def parse(self):
     app_node = self.node.GetByPath('Library/Caches/__xstore_app.db')
     if app_node is None:
         print('f****d')
         return
     conn = unity_c37r.create_connection(app_node.PathWithMountPoint)
     cmd = sql.SQLiteCommand(conn)
     cmd.CommandText = '''
         select nick, logo, gender from PUserInfo where userId = {}
     '''.format(self.account)
     reader = cmd.ExecuteReader()
     if reader.Read():
         a = model_im.Account()
         a.account_id = self.account
         a.nickname = unity_c37r.c_sharp_get_string(reader, 0)
         a.photo = unity_c37r.c_sharp_get_string(reader, 1)
         self.im.db_insert_table_account(a)
     cmd.Dispose()
     cmd.CommandText = '''
         select userId, nick, logo, gender from PUserInfo where userId != {}
     '''.format(self.account)
     reader = cmd.ExecuteReader()
     while reader.Read():
         if canceller.IsCancellationRequested:
             cmd.Dispose()
             conn.Close()
             self.im.db_close()
             raise IOError('e')
         f = model_im.Friend()
         f.account_id = self.account
         f.friend_id = unity_c37r.c_sharp_get_long(reader, 0)
         f.nickname = unity_c37r.c_sharp_get_string(reader, 1)
         f.photo = unity_c37r.c_sharp_get_string(reader, 2)
         self.im.db_insert_table_friend(f)
     cmd.Dispose()
     cmd.CommandText = '''
         select pondId, adminUserId, pondName, pondLogo from PPondInfo
     '''
     reader = cmd.ExecuteReader()
     while reader.Read():
         if canceller.IsCancellationRequested:
             cmd.Dispose()
             conn.Close()
             self.im.db_close()
             raise IOError('e')
         g = model_im.Chatroom()
         g.account_id = self.account
         g.chatroom_id = unity_c37r.c_sharp_get_long(reader, 0)
         g.name = unity_c37r.c_sharp_get_string(reader, 2)
         g.owner_id = unity_c37r.c_sharp_get_long(reader, 1)
         g.photo = unity_c37r.c_sharp_get_string(reader, 3)
         self.im.db_insert_table_chatroom(g)
     cmd.Dispose()
     cmd.CommandText = '''
         select * from PItemInfo
     '''
     reader = cmd.ExecuteReader()
     while reader.Read():
         if canceller.IsCancellationRequested:
             cmd.Dispose()
             conn.Close()
             self.im.db_close()
             raise IOError('e')
         feed = model_im.Feed()
         feed.account_id = self.account
         feed.attachment_link = unity_c37r.c_sharp_get_string(reader, 1)
         feed.attachment_title = unity_c37r.c_sharp_get_string(reader, 4)
         #feed.attachment_desc
         feed.attachment_desc = '''price:{}\norigPrice:\n'''.format(unity_c37r.c_sharp_get_string(reader, 2), unity_c37r.c_sharp_get_string(reader, 3))
         seller_id = unity_c37r.c_sharp_get_long(reader, 5)
         seller_info = unity_c37r.c_sharp_get_long(reader, 6)
         feed.sender_id = seller_id if seller_id != 0 else seller_info
         self.im.db_insert_table_feed(feed)
     cmd.Dispose()
     conn.Close()
     db_node = self.node.GetByPath('Library/Caches/__xstore_user_{}.db'.format(self.account))
     if db_node is None:
         print('f****d')
         return
     conn = unity_c37r.create_connection(db_node.PathWithMountPoint)
     cmd = sql.SQLiteCommand(conn)
     cmd.CommandText = '''
         select Sid, Uid, content, extJson, timeStamp from PMessage
     '''
     reader = cmd.ExecuteReader()
     while reader.Read():
         if canceller.IsCancellationRequested:
             cmd.Dispose()
             conn.Close()
             self.im.db_close()
             raise IOError('e')
         m = model_im.Message()
         m.account_id = self.account
         m.sender_id = unity_c37r.c_sharp_get_long(reader, 1)
         m.talker_id = unity_c37r.c_sharp_get_long(reader, 0)
         m.send_time = unity_c37r.c_sharp_get_long(reader, 4) / 1000
         try:
             string = unity_c37r.c_sharp_get_string(reader, 2)
             js = json.loads(string)
             tp = js.get('contentType')
             if tp == 1:
                 m.content = js.get('text').get('text')
                 m.type = model_im.MESSAGE_CONTENT_TYPE_TEXT
             elif tp == 17: # trade...
                 #m.content = js.get('content')
                 m.content = js.get('title')
                 deal = model_im.Deal()
                 m.type = model_im.MESSAGE_CONTENT_TYPE_RECEIPT
                 m.extra_id = deal.deal_id
                 deal.money = js.get('content')
                 deal.description = js.get('title')
                 self.im.db_insert_table_deal(deal)
             elif tp == 10:
                 m.type = model_im.MESSAGE_CONTENT_TYPE_TEXT
                 js = js.get('actionCard')
                 m.content = '''title:{}\ncontent:{}'''.format(js.get('memo'), js.get('title'))
             elif tp == 2: # image
                 m.type = model_im.MESSAGE_CONTENT_TYPE_IMAGE
                 m.media_path = js.get('image').get('pics')[0].get('url')
             elif tp == 8:
                 m.type = model_im.MESSAGE_CONTENT_TYPE_TEXT
                 m.content = '''title:{}\ncontent:{}'''.format(js.get('imageCard').get('title'), js.get('imageCard').get('content'))
             elif tp == 6:
                 m.type = model_im.MESSAGE_CONTENT_TYPE_TEXT
                 #m.content = '''title:{}\ncontent:{}\nstring:{}'''.format(js.get('textCard').get('title'), js.get('textCard').get('memo'), string)
                 js = js.get('textCard')
                 title = js.get('title')
                 # if title is None:
                 #     m.content = '''content:{}'''.format(js.get('content'))
                 # else:
                 #     m.content = '''title:{}\ncontent:{}\nstring:{}'''.format(js.get('title'), js.get('memo'), string)
                 content = js.get('content')
                 memo = js.get('memo')
                 m.content = '''title:{}\ncontent:{}\nmemo:{}'''.format(title, content, memo)
             elif tp == 16:
                 m.type = model_im.MESSAGE_CONTENT_TYPE_ATTACHMENT
                 m.content = js.get('itemCard').get('title')
                 deal = model_im.Deal()
                 js = js.get('itemCard').get('item')
                 deal.deal_id = js.get('itemId')
                 m.extra_id = deal.deal_id
                 m.media_path = js.get('mainPic')
                 deal.description = js.get('title')
                 deal.money = js.get('price')
                 self.im.db_insert_table_deal(deal)
             elif tp == 11: # 留言
                 m.type = model_im.MESSAGE_CONTENT_TYPE_TEXT
                 m.content = '''title:{}\ncontent:{}'''.format(js.get('reply').get('title'), js.get('reply').get('content'))
                 # url is lost... waiting for support.
             elif tp == 20:
                 m.type = model_im.MESSAGE_CONTENT_TYPE_TEXT
                 m.content = js.get('text')
             elif tp == 7:
                 m.type = model_im.MESSAGE_CONTENT_TYPE_TEXT
                 m.content = js.get('itemCard').get('title')
             elif tp == 14:
                 m.type = model_im.MESSAGE_CONTENT_TYPE_TEXT
                 m.content = js.get('tip').get('tips')
             else:
                 print('detect unsupported type:%d' % tp)
                 m.type = model_im.MESSAGE_CONTENT_TYPE_TEXT
                 m.content = string
             self.im.db_insert_table_message(m)
         except Exception as e:
             print 'find error string:{}'.format(string)
             logging.error(e)
     self.im.db_commit()
     cmd.Dispose()
     cmd.CommandText = '''
         select XSummary, Session$$$$sessionId , ts, Sender from XMessageCenterItem
     '''
     reader = cmd.ExecuteReader()
     while reader.Read():
         if canceller.IsCancellationRequested:
             cmd.Dispose()
             conn.Close()
             self.im.db_close()
             raise IOError('e')
         m = model_im.Message()
         m.type = model_im.MESSAGE_CONTENT_TYPE_TEXT
         m.content = unity_c37r.c_sharp_get_string(reader, 0)
         m.talker_id = unity_c37r.c_sharp_get_long(reader, 1)
         m.sender_id = unity_c37r.c_sharp_get_long(reader, 3)
         m.send_time = unity_c37r.c_sharp_get_long(reader, 2) / 1000
         self.im.db_insert_table_message(m)
     self.im.db_commit()
     cmd.Dispose()
     conn.Close()
コード例 #30
0
 def __generate_account(self):
     connection = unity_c37r.create_connection(self.cache_db + ".IM", True)
     command = sql.SQLiteCommand(connection)
     command.CommandText = '''
         select * from account
     '''
     reader = command.ExecuteReader()
     while reader.Read():
         a = NDBCPACCOUNT()
         a.set_value_with_idx(a.account_id,
                              unity_c37r.c_sharp_get_string(reader, 0))
         a.set_value_with_idx(a.account, a.get_value_with_idx(a.account_id))
         a.set_value_with_idx(a.nick,
                              unity_c37r.c_sharp_get_string(reader, 1))
         a.set_value_with_idx(a.password,
                              unity_c37r.c_sharp_get_string(reader, 3))
         photo = unity_c37r.c_sharp_get_string(reader, 4)
         photo = os.path.join(self.mnt, photo)
         if os.path.exists(photo):
             pass  # ===>copy file fix that
         else:
             a.set_value_with_idx(a.photo, photo)
         a.set_value_with_idx(a.telephone,
                              unity_c37r.c_sharp_get_string(reader, 5))
         a.set_value_with_idx(a.email,
                              unity_c37r.c_sharp_get_string(reader, 6))
         gender = unity_c37r.c_sharp_get_long(reader, 7)
         gender = '0%d' % gender
         a.set_value_with_idx(a.gender, gender)
         a.set_value_with_idx(a.age, unity_c37r.c_sharp_get_long(reader, 8))
         a.set_value_with_idx(a.city,
                              unity_c37r.c_sharp_get_string(reader, 11))
         a.set_value_with_idx(a.address,
                              unity_c37r.c_sharp_get_string(reader, 12))
         a.set_value_with_idx(a.birthday,
                              unity_c37r.c_sharp_get_string(reader, 13))
         a.set_value_with_idx(a.signature,
                              unity_c37r.c_sharp_get_string(reader, 14))
         a.set_value_with_idx(a.delete_status,
                              unity_c37r.c_sharp_get_string(reader, 15))
         a.set_value_with_idx(a.collect_id, self.cid)
         a.set_value_with_idx(a.app_type, self.app_type)
         self.db_insert_account(a)
     self.db_commit()
     reader.Close()
     command.Dispose()
     connection.Close()