Example #1
0
def split_case_info(case):
    title = case['title']
    content = json.loads(case['content'])
    title_list = list(jieba.cut_for_search(title))
    content_list = list(jieba.cut_for_search(content))

    case_list = title_list + content_list
    case_word_list = list(set(case_list))

    # print(case_list)
    for word in case_word_list:
        if word not in strip_word_list:
            word_md5 = common.get_md5(word)
            res = Data.find('case_search_index',
                            [('case_id', '=', case['id']),
                             ('keyword_md5', '=', word_md5)])
            if res != None:
                # print('已经存在')
                continue
            params = {
                'case_id': case['id'],
                'keyword': json.dumps(word),
                'keyword_md5': word_md5
            }
            Data.insert('case_search_index', params)
            continue
        else:
            continue
Example #2
0
    def insert(self,table,content):
        Data.insert(table,content)
        if table in self.data_all:
            self.append_lines(table)
        else:
            self.refresh_one_table(table)

        return
Example #3
0
    def truncate(self,table):
        if table in self.data_all:
            self.data_all[table] = []

        else:
            self.data_all[table] = []

        Data.truncate(table)

        return
Example #4
0
    def refresh_db(self):

        time_now = time_to_str(int(time.time())).split()[1].split(':')[:2]
        if ':'.join(time_now) == refresh_time:
            for table in self.data_all:
                Data.delete(table,[])
                Data.insert(table,self.data_all[table])
            time.sleep(60)
        else:
            pass
        return
Example #5
0
    def write_event_post_item(self, data, res):
        for item in data['post_items']:
            item_url = self.get_post_item(item)
            params = {
                'case_id': res['id'],
                'post_item': item_url,
                'ctime': int(time.time()),
                'raw_url': item,
            }

            Data.insert('case_post_item', params)
Example #6
0
def get_all_data():
    start_time = time.time()

    table_list = Data.get_tables()
    data_strct = {}
    for table in table_list:
        ctime = time.time()
        print('reading',table,'...')
        data_strct[table] = Data.select(table,[])
        print('read',table,'done! spend',time.time()-ctime,'seconds')

    print('read database done!')
    print('spend',time.time()-start_time,'seconds')

    return data_strct
Example #7
0
 def append_lines(self,table):
     last_id = self.data_all[table][-1]['id']
     res = Data.select(table,[('id','>',last_id)])
     if res != None:
         if len(res) != 0:
             self.data_all[table] = self.data_all[table]+res
     return 
Example #8
0
    def get(self):
        data = self.get_data()
        pw_md5 = common.get_md5(data['pw'])
        condition = [('user_name', '=', data['username']),
                     ('passwd', '=', pw_md5)]

        res = Data.find('user', condition)
        if res == None:
            self.send_faild('LOGIN_PSW_ERROR')
            return
        else:
            token = self.get_token(res)
            result = {'token': token}
            Data.update('user', condition, result)

            self.send_ok(result)
            return
    def get_post_items(self, case_id):
        # 获取案子相关附件
        result = []
        res = Data.select('case_post_item', [('case_id', '=', case_id)])
        if res != None:
            for line in res:
                result.append(line['post_item'])

        return result
Example #10
0
    def post(self):
        data = self.get_post_data()
        user_base = self.get_user_base()

        content = json.dumps(data['content'])
        # content = content.replace('\\','\\\\') # 不确定是否需要
        content_md5 = common.get_md5(content)

        user_id = user_base['id']
        ctime = int(time.time())
        event_time = common.str_to_time(data['event_time'] + ' 00:00:00')
        title = data['title']

        # Data.find('case_info',[('content_md5','=',content_md5)])

        params = {
            'user_id': user_id,
            'ctime': ctime,
            'content': content,
            'content_md5': content_md5,
            'event_time': event_time,
            'title': title,
        }

        Data.insert('case_info', params)
        # self.write_event_post_item()

        cond = [('user_id', '=', user_id), ('ctime', '=', ctime),
                ('content_md5', '=', content_md5)]

        res = Data.find('case_info', cond)
        self.split_case_info(res)
        # 创建关键词索引

        # self.write_event_post_item(data,res)

        if res != None:
            self.send_ok({})
            self.write_event_post_item(data, res)
            print('download_done!')
            return
        else:
            self.send_faild({'INSERT_FAIL'})
            return
Example #11
0
    def get(self):
        data = self.get_data()

        if data['pw1'] != data['pw2']:
            self.send_faild('PW_NOT_SAME')
            return

        if data['invite_token'] == '':
            self.send_faild('NO_TOKEN')
            return
        # 需要传入邀请者token作为参数

        res = Data.find('user', [('user_name', '=', data['username'])])
        if res != None:
            self.send_faild('ACCOUNT_HAD')
            return

        inviter = Data.find('user', [('token', '=', data['invite_token'])])
        if inviter == None:
            self.send_faild('NO_TOKEN')
            return

        params = {
            'user_name': data['username'],
            'passwd': common.get_md5(data['pw2']),
            'join_time': int(time.time()),
            'uuid': self.create_uuid(),
            'invite_id': inviter['id'],
            'nickname': json.dumps(data['nickname'])
        }

        Data.insert('user', params)
        Data.update('user', [('id', '=', inviter['id'])], {'token': ''})
        # 插入新的数据,为了安全,更新一次token

        conditions = [('user_name', '=', data['username']),
                      ('passwd', '=', common.get_md5(data['pw2']))]

        res = Data.find('user', conditions)
        token = self.get_token(res)

        result = {'token': token}

        Data.update('user', conditions, result)
        # 插入token

        self.send_ok(result)
        return
Example #12
0
    def delete(self,table,conditions):
        if table in self.data_all:
            table_content = self.data_all[table]

            del_line = []

            for line in table_content:
                if judge(line,conditions) == True:
                    del_line.append(line)

            for i in del_line:
                table_content.remove(i)

            Data.delete(table,conditions)

        else:
            Data.delete(table,conditions)
            self.data_all[table] = Data.select(table,[])

        return
Example #13
0
def write_main_info():
    title = '南昌红谷滩杀人'

    content = '''32岁南昌男子从背后袭击,当街将24岁女子捅杀】24日下午5时18分许,南昌市红谷滩发生一起杀人案。27日记者从南昌公安局了解到,犯罪嫌疑人万某弟(男,32岁,南昌人)已被控制,作案动机仍在调查。监控视频显示,行凶者当时冲向并排行走的三人,持刀向其中一名女子砍去。女子倒地后,行凶者仍不依不饶。另据@北京时间 报道,凶手曾想杀“个子高”女子,后发现另一女子“更白更漂亮”。'''

    content = json.dumps(content)  #.replace('\\','\\\\')
    content_md5 = common.get_md5(content)

    event_time = '2019-05-28 00:00:00'
    event_time = common.str_to_time(event_time)

    params = {
        'user_id': 2,
        'ctime': int(time.time()),
        'content': content,
        'content_md5': content_md5,
        'event_time': event_time,
        'title': title
    }
    # Data.update('case_info',[('content_md5','=',content_md5)],params)
    Data.insert('case_info', params)
Example #14
0
    def get(self):
        data = self.get_data()
        keyword_list = data['keyword_list']

        if keyword_list == []:
            self.send_faild('NEED_WORD')
            return

        case_id_list = []

        for keyword in keyword_list:
            keyword_md5 = common.get_md5(keyword)
            res = Data.select('case_search_index',
                              [('keyword_md5', '=', keyword_md5)])
            if res == None:
                continue
            else:
                for case in res:
                    case_id_list.append(case['case_id'])
                continue

        case_id_list = list(set(case_id_list))
        print(case_id_list)

        title_list = []

        for case_id in case_id_list:
            res = Data.find('case_info', [('id', '=', case_id)])
            if res == None:
                continue
            else:
                case_info = {'case_id': res['id'], 'title': res['title']}
                title_list.append(case_info)
                continue

        result = {'keyword_list': keyword_list, 'result': title_list}
        # 关键词搜索

        self.send_ok(result)
        return
    def get_user_base(self):
        '''
        获取用户基本信息
        :return:
        '''
        token = self.get_argument('token')
        print(token)
        conditions = []
        conditions.append(('token', '=', token))

        user_data = Data.find(Data.USER, conditions)

        return user_data
Example #16
0
    def get_user_base(self):
        '''
        获取用户基本信息
        :return:
        '''
        token = self.get_argument('token')
        # print(token)
        conditions = []
        if token == '':
            # 如果不存在token
            return None

        conditions.append(('token', '=', token))

        user_data = Data.find('user', conditions)

        return user_data
Example #17
0
    def create_uuid(self):
        # 生成一个uuid
        uuid_list = []
        all_number = []
        for i in range(100000, 999999):
            all_number.append(i)

        res = Data.select('user', [('id', '!=', 0)])
        if res == None:
            pass
        else:
            for i in res:
                uuid_list.append(i['uuid'])

        for uuid in uuid_list:
            all_number.remove(uuid)

        return all_number[0]
Example #18
0
    def get(self):
        data = self.get_data()
        search_time = data['limit_year_time']
        if search_time != '':
            search_time_stamp_start = common.str_to_time(str(search_time)+'-01-01 00:00:00')
            search_time_stamp_end = common.str_to_time(str(search_time)+'-12-31 23:59:59')
        else:
            search_time_stamp_start = 0
            search_time_stamp_end = 999999999


        condition = [
            ('event_time','>',search_time_stamp_start),
            ('event_time','<',search_time_stamp_end),
            ('is_show','=',1),
        ]

        res = Data.select('case_info',condition)
        result_list = []

        if res == None:
            self.send_faild('NO_RECORD')
            return


        for line in res:
            info_line = {
                'ctime':common.time_to_str(line['ctime']).split()[0],
                'title':line['title'],
                'case_id':line['id']
            }
            result_list.append(info_line)

        result = {
            'result_list':result_list
        }

        # print(result)

        self.send_ok(result)
        return
    def get(self):
        data = self.get_data()
        case_id = data['case_id']
        line = Data.find('case_info', [('id', '=', case_id),
                                       ('is_show', '=', 1)])
        if line == None:
            self.send_faild('NO_RECORD')
            return

        info_line = {
            'case_id': line['id'],
            'content': json.loads(line['content']),
            'ctime': common.time_to_str(line['ctime']).split()[0],
            'title': line['title'],
            'uploader_info': self.get_uploader_info(line['user_id']),
            'post_items': self.get_post_items(line['id']),
        }

        result = info_line

        # print(result)

        self.send_ok(result)
        return
Example #20
0
    def update(self,table,conditions,params):
        if table in self.data_all:
            table_content = self.data_all[table]

            table_id_list = []
            tmp = []
            if conditions == []:
                for line in table_content:
                    table_id_list.append(line['id'])
                    tmp.append(line)

            else:
                for line in table_content:
                    if judge(line,conditions) == True:
                        table_id_list.append(line['id'])
                        tmp.append(line)

            Data.update(table,conditions,params)

            for line in tmp:
                self.data_all[table].remove(line)

            for i in table_id_list:
                res = Data.find(table,[('id','=',i)])
                for line in table_content:
                    if line['id'] > res['id']:
                        line_index = table_content.index(line)
                        if line_index == 0:
                            tail = [res]+table_content
                        else:
                            tail = table_content[:line_index] + [res] + table_content[line_index:]
                        break
                table_content = tail

            self.data_all[table] = table_content


        else:
            Data.update(table,conditions,params)
            self.data_all[table] = Data.select(table,[])

        return
Example #21
0
def update_post_items():
    res = Data.select('case_post_item', [('id', '!=', 0)])
    for line in res:
        Data.update('case_post_item', [('id', '=', line['id'])],
                    {'raw_url': line['post_item']})
    return
Example #22
0
    case_word_list = list(set(case_list))

    # print(case_list)
    for word in case_word_list:
        if word not in strip_word_list:
            word_md5 = common.get_md5(word)
            res = Data.find('case_search_index',
                            [('case_id', '=', case['id']),
                             ('keyword_md5', '=', word_md5)])
            if res != None:
                # print('已经存在')
                continue
            params = {
                'case_id': case['id'],
                'keyword': json.dumps(word),
                'keyword_md5': word_md5
            }
            Data.insert('case_search_index', params)
            continue
        else:
            continue

    # for i in case_list:


# def
all_case = Data.select('case_info', [('id', '!=', 0)])

for case in all_case:
    split_case_info(case)
Example #23
0
 def refresh_one_table(self,table):
     # self.data_all.pop(table)
     print('importing..',table)
     self.data_all[table] = Data.select(table,[])
     print('importing..',table,'done!')
     return
Example #24
0
 def get(self):
     res = Data.find('test', [('id', '!=', 0)])
     self.send_ok(res)
 def get_uploader_info(self, user_id):
     # 获取上传者信息
     res = Data.find('user', [('id', '=', user_id)])
     result = {'nickname': json.loads(res['nickname']), 'uuid': res['uuid']}
     return result