def get(self, version):
        form = CommunityAccountListForm().validate_for_api()  # 验证表单
        page = int(form.page.data)
        limit = int(form.limit.data)

        account = form.account.data
        contributor = form.contributor.data
        tip = form.tip.data
        status = form.status.data

        start = (page - 1) * limit
        end = start + limit

        # 条件查询

        account_data = []

        community_account_obj = TCommunityWechatAccount.query

        account_search = community_account_obj.filter(
            and_(
                TCommunityWechatAccount.account_name.like("%" + account + "%"),
                TCommunityWechatAccount.founder.like("%" + contributor + "%"),
                TCommunityWechatAccount.tag.like("%" + tip + "%"),
                TCommunityWechatAccount.status.like(
                    "%" + status + "%"))).order_by(
                        TCommunityWechatAccount.create_time.desc())

        community_accounts = account_search.slice(start, end)
        total = account_search.count()
        if total != 0:
            # 查询所有的数据做成字典
            for i in community_accounts:
                accounts = {}
                accounts['id'] = i.id
                accounts['account_name'] = i.account_name
                accounts['account_id'] = i.account_id
                accounts['account_link'] = i.account_link
                accounts['tag_name'] = i.Ctags.tag_name
                accounts['founder'] = i.founder
                accounts['create_time'] = str(i.create_time)
                accounts['status'] = i.status
                account_data.append(accounts)

            return response_code.LayuiSuccess(message='查询成功!',
                                              data=account_data,
                                              count=total)
        return response_code.LayuiSuccess(message='未查到相关信息', count=0)
예제 #2
0
    def post(self, version):
        form = SettingEmailForm().validate_for_api()  # 验证表单

        smtp_server = form.smtp_server.data
        smtp_port = form.smtp_port.data
        smtp_username = form.smtp_username.data
        smtp_password = form.smtp_password.data
        smtp_sender = form.smtp_sender.data

        setting_email_obj = System_Settings.query.order_by(
            System_Settings.create_time.desc()).first()

        if setting_email_obj:
            setting_email_obj.smtp_server = smtp_server
            setting_email_obj.smtp_port = smtp_port
            setting_email_obj.smtp_username = smtp_username
            setting_email_obj.smtp_password = smtp_password
            setting_email_obj.smtp_sender = smtp_sender

            db.session.commit()
            # 重新加载mail实例化的配置
            return response_code.LayuiSuccess(message='修改成功!')
        else:
            setting = System_Settings(smtp_server=smtp_server,
                                      smtp_port=smtp_port,
                                      smtp_username=smtp_username,
                                      smtp_password=smtp_password,
                                      smtp_sender=smtp_sender)
            db.session.add(setting)
            db.session.commit()
            return response_code.ParameterException(message='修改失败!')
예제 #3
0
    def get(self, version):
        form = HotSearchListForm().validate_for_api()  # 验证表单
        page = int(form.page.data)
        limit = int(form.limit.data)
        print(tools.get_day_zero_time(datetime.datetime.now().date()))
        start = (page - 1) * limit
        end = start + limit
        keyword_data = []
        hot_search = db.session.query(HotSearch.search, func.count(
            HotSearch.id), func.count(HotSearch.visitor_id)).group_by(
                HotSearch.search).filter(
                    HotSearch.create_time > tools.get_day_zero_time(
                        datetime.datetime.now().date()), ).order_by(
                            desc(func.count(HotSearch.id)))
        print(hot_search)
        keywords = hot_search.slice(start, end).all()
        total = hot_search.count()
        print(keywords)
        for i in keywords:
            data_dict = {}
            data_dict['keywords'] = i[0]
            data_dict['frequency'] = i[1]
            data_dict['userNums'] = i[2]
            keyword_data.append(data_dict)

        return response_code.LayuiSuccess(message='查询成功!',
                                          data=keyword_data,
                                          count=total)
예제 #4
0
    def get(self, version):
        form = ArticleListForm().validate_for_api()  # 验证表单
        page = int(form.page.data)
        limit = int(form.limit.data)
        print(tools.get_day_zero_time(datetime.datetime.now().date()))
        start = (page - 1) * limit
        end = start + limit
        article_data = []
        article_obj = WechatArticle.query
        article_search = article_obj.filter(
            WechatArticle.publish_time > tools.get_day_zero_time(
                datetime.datetime.now().date()), ).order_by(
                    WechatArticle.publish_time.desc())

        articles = article_search.slice(start, end).all()
        total = article_search.count()

        for i in articles:
            data_dict = {}
            data_dict['id'] = i.id
            data_dict['author'] = i.author
            data_dict['title'] = i.title
            data_dict['account_name'] = i.account
            data_dict['url'] = i.url
            data_dict['digest'] = i.digest
            data_dict['publish_time'] = str(i.publish_time)
            article_data.append(data_dict)

        return response_code.LayuiSuccess(message='查询成功!',
                                          data=article_data,
                                          count=total)
예제 #5
0
    def get(self, version):
        today = datetime.date.today()
        uv_num = [
            User_Logs.query.with_entities(User_Logs.visitor_id).filter(
                and_(
                    extract('year',
                            User_Logs.create_time) == str(today).split('-')[0],
                    extract('month',
                            User_Logs.create_time) == str(today).split('-')[1],
                    extract('day',
                            User_Logs.create_time) == str(today).split('-')[2],
                    extract('hour', User_Logs.create_time) == str(i),
                )).distinct().count() for i in range(25)
        ]
        pv_num = [
            User_Logs.query.filter(
                and_(
                    extract('year',
                            User_Logs.create_time) == str(today).split('-')[0],
                    extract('month',
                            User_Logs.create_time) == str(today).split('-')[1],
                    extract('day',
                            User_Logs.create_time) == str(today).split('-')[2],
                    extract('hour', User_Logs.create_time) == str(i),
                )).count() for i in range(25)
        ]
        x_date_list = ['{}:00'.format(i) for i in range(25)]

        data = {"x_data": x_date_list, "pv_num": pv_num, "uv_num": uv_num}
        return response_code.LayuiSuccess(message='查询成功!', data=data, count=0)
    def get(self, version):
        form = EmailUserListForm().validate_for_api()  # 验证表单
        page = int(form.page.data)
        limit = int(form.limit.data)

        email = form.email.data

        start = (page - 1) * limit
        end = start + limit
        email_data = []
        # 条件查询

        emails_obj = EmailUser.query
        emails_search = emails_obj.filter(
            and_(EmailUser.email.like("%" + email + "%"), )).order_by(
                EmailUser.create_time.desc())
        emails = emails_search.slice(start, end)
        total = emails_search.count()
        # 查询所有正在处于监听队列的数据做成字典
        for i in emails:
            email = {}
            email['id'] = i.id
            email['email'] = i.email
            email['create_time'] = str(i.create_time)
            email_data.append(email)
        return response_code.LayuiSuccess(message='查询成功!',
                                          data=email_data,
                                          count=total)
예제 #7
0
 def post(self, version):
     form = LoginForm().validate_for_api()  # 验证表单
     identity = models.Admin.verify(form.username.data,
                                    form.password.data)  # 验证数据库数据
     expiration = current_app.config['TOKEN_EXPIRATION']  # token存活周期
     access_token = generate_auth_token(identity['uid'], expiration).decode(
         'ascii')  # 生成token
     return response_code.LayuiSuccess(data={'access_token': access_token},
                                       message='Login success')
예제 #8
0
 def get(self, version):
     cpu_percent = psutil.cpu_percent()
     memory = psutil.virtual_memory()
     context = {
         "cpu": cpu_percent,
         "memory": memory.percent,
     }
     return response_code.LayuiSuccess(message='查询成功!',
                                       data=context,
                                       count=0)
예제 #9
0
    def get(self, version):
        data_dict = {}
        data_dict['smtp_server'] = ''
        data_dict['smtp_port'] = ''
        data_dict['smtp_sender'] = ''
        data_dict['smtp_username'] = ''
        data_dict['smtp_password'] = ''
        setting_email_obj = System_Settings.query.order_by(
            System_Settings.create_time.desc()).first()
        if setting_email_obj:
            data_dict = {}
            data_dict['smtp_server'] = setting_email_obj.smtp_server
            data_dict['smtp_port'] = setting_email_obj.smtp_port
            data_dict['smtp_sender'] = setting_email_obj.smtp_sender
            data_dict['smtp_username'] = setting_email_obj.smtp_username
            data_dict['smtp_password'] = setting_email_obj.smtp_password

            return response_code.LayuiSuccess(message='查询成功!', data=data_dict)
        else:
            return response_code.LayuiSuccess(message='查询成功!', data=data_dict)
    def get(self, version):
        form = AccountTaskListForm().validate_for_api()  # 验证表单
        page = int(form.page.data)
        limit = int(form.limit.data)

        account_name = form.account_name.data
        account_id = form.account_id.data
        tip = form.tip.data
        status = form.status.data

        start = (page - 1) * limit
        end = start + limit

        # 条件查询

        account_task_data = []
        account_task_obj = TWechatAccount.query
        account_task_search = account_task_obj.filter(
            and_(TWechatAccount.account_name.like("%" + account_name + "%"),
                 TWechatAccount.account_id.like("%" + account_id + "%"),
                 TWechatAccount.tag.like("%" + tip + "%"),
                 TWechatAccount.status.like("%" + status + "%"))).order_by(
                     TWechatAccount.create_time.desc())

        account_tasks = account_task_search.slice(start, end)
        total = account_task_search.count()
        # 查询所有正在处于监听队列的数据做成字典
        for i in account_tasks:
            wat = WechatAccountTask.query.filter_by(__biz=i.account_id).first()
            last_publish_time = ''
            last_spider_time = ''
            is_zombie = '未知'
            if wat:
                last_publish_time = str(wat.last_publish_time)
                last_spider_time = str(wat.last_spider_time)
                is_zombie = wat.is_zombie
            task = {}
            task['id'] = i.id
            task['account_name'] = i.account_name
            task['account_id'] = i.account_id
            task['tag_name'] = i.tags.tag_name
            task['founder'] = 'admin'
            task['create_time'] = str(i.create_time)
            task['last_publish_time'] = last_publish_time
            task['last_spider_time'] = last_spider_time
            task['is_zombie'] = is_zombie
            task['status'] = i.status

            account_task_data.append(task)

        return response_code.LayuiSuccess(message='查询成功!',
                                          data=account_task_data,
                                          count=total)
예제 #11
0
    def post(self, version):
        form = ArticleFlagForm().validate_for_api()  # 验证表单
        id = form.id.data
        flag = form.flag.data

        wechat_article = WechatArticle.query.get(id)
        if wechat_article:
            if wechat_article.flag != flag:
                wechat_article.flag = flag
                db.session.commit()
                return response_code.LayuiSuccess(message='文章:“{}”修改成功!'.format(wechat_article.title))

            return response_code.ParameterException(message='已经被被人修改,刷新看看!!')
        return response_code.ParameterException(message='修改失败!')
예제 #12
0
    def get(self, version):
        form = HostSearchListForm().validate_for_api()  # 验证表单
        page = int(form.page.data)
        limit = int(form.limit.data)

        ID = form.ID.data
        date_end = form.date_end.data
        date_start = form.date_start.data
        flag = form.flag.data

        start = (page - 1) * limit
        end = start + limit
        logs_data = []
        # 条件查询

        keyword_data = []

        hot_search_obj = HotSearch.query

        if date_end:
            hot_search_obj = hot_search_obj.filter(
                HotSearch.create_time < date_end)
        if date_start:
            hot_search_obj = hot_search_obj.filter(
                HotSearch.create_time > date_start)
        if flag:
            print(flag)
        hot_search = hot_search_obj.filter(
            and_(HotSearch.visitor_id.like("%" + ID + "%"), )).order_by(
                HotSearch.create_time.desc())

        keywords = hot_search.slice(start, end)
        total = hot_search.count()

        for i in keywords:
            data_dict = {}
            data_dict['id'] = i.id
            data_dict['visitor_id'] = i.visitor_id
            data_dict['search'] = i.search
            data_dict['create_time'] = str(i.create_time)
            data_dict['page'] = str(i.page)
            data_dict['count'] = str(i.count)
            keyword_data.append(data_dict)

        return response_code.LayuiSuccess(message='查询成功!',
                                          data=keyword_data,
                                          count=total)
예제 #13
0
    def get(self, version):
        form = UserLogListForm().validate_for_api()  # 验证表单
        page = int(form.page.data)
        limit = int(form.limit.data)

        ID = form.ID.data
        ip = form.ip.data
        area = form.area.data

        start = (page - 1) * limit
        end = start + limit
        logs_data = []
        # 条件查询

        logs_obj = User_Logs.query

        logs_search = logs_obj.filter(
            and_(User_Logs.visitor_id.like("%" + ID + "%"),
                 User_Logs.ip.like("%" + ip + "%"),
                 User_Logs.area.like("%" + area + "%"),
                 )).order_by(
            User_Logs.create_time.desc())

        logs = logs_search.slice(start, end)
        total = logs_search.count()
        # 查询所有正在处于监听队列的数据做成字典
        for i in logs:
            log = {}
            log['id'] = i.id
            log['visitor_id'] = i.visitor_id
            log['user_agent'] = i.user_agent
            log['path'] = i.path
            log['url'] = i.url
            log['referrer'] = i.referrer
            log['ip'] = i.ip
            log['area'] = i.area
            log['create_time'] = str(i.create_time)
            UA = tools.get_user_driver(i.user_agent)
            log['device'] = str(UA)
            log['device_logo'] = tools.get_driver_logo(UA)
            logs_data.append(log)

        return response_code.LayuiSuccess(message='查询成功!', data=logs_data, count=total)
예제 #14
0
    def get(self, version):
        form = AccountListForm().validate_for_api()  # 验证表单
        page = int(form.page.data)
        limit = int(form.limit.data)

        account_name =form.account_name.data

        start = (page - 1) * limit
        end = start + limit

        # 条件查询


        account_data = []

        account_obj = WechatAccount.query
        if account_name:
            account_search = account_obj.filter(
                and_(WechatAccount.account.like("%" + account_name + "%"),
                     )).order_by(
                WechatAccount.spider_time.desc())
        else:
            account_search = account_obj.order_by(WechatAccount.spider_time.desc())
        accounts = account_search.slice(start, end)
        total = account_search.count()
        # 查询所有正在处于监听队列的数据做成字典
        for i in accounts:
            account = {}
            account['id'] = i.id
            account['account_name'] = i.account
            account['account_id'] = getattr(i,'__biz')
            account['head_url'] = i.head_url
            account['summary'] = i.summary
            account['qr_code'] = i.qr_code
            account['verify'] = i.verify
            account['spider_time'] = str(i.spider_time)

            account_data.append(account)

        return response_code.LayuiSuccess(message='查询成功!', data=account_data, count=total)
예제 #15
0
    def get(self, version):
        form = BolckIPForm().validate_for_api()  # 验证表单
        page = int(form.page.data)
        limit = int(form.limit.data)

        ip = form.ip.data

        start = (page - 1) * limit
        end = start + limit

        # 条件查询
        ips_data = []

        block_ip_obj = BlockIP.query
        block_ip_search = block_ip_obj.filter(
            and_(BlockIP.ip.like("%" + ip + "%"), )).order_by(
                BlockIP.create_time.desc())

        # 查询的时间为大于  现在的时间-黑名单周期时间(只显示现在还在黑名单的数据)
        # live_time = (datetime.datetime.now()+datetime.timedelta(seconds=-config.base_config.BLOCK_IP_TIMEOUT)).strftime("%Y-%m-%d %H:%M:%S")
        # block_ips = block_ip_search.filter(BlockIP.create_time>live_time).slice(start, end)
        block_ips = block_ip_search.slice(start, end)
        total = block_ip_search.count()

        for i in block_ips:
            data_dict = {}
            data_dict['id'] = i.id
            data_dict['ip'] = i.ip
            data_dict['notes'] = i.notes
            data_dict['create_time'] = str(i.create_time)
            data_dict['end_time'] = str(i.end_time)
            data_dict['time'] = int(
                time.mktime(time.strptime(str(i.end_time),
                                          "%Y-%m-%d %H:%M:%S"))) * 1000
            print(data_dict['time'])
            ips_data.append(data_dict)

        return response_code.LayuiSuccess(message='查询成功!',
                                          data=ips_data,
                                          count=total)
예제 #16
0
    def get(self, version):
        form = TagListForm().validate_for_api()  # 验证表单
        page = int(form.page.data)
        limit = int(form.limit.data)
        start = (page - 1) * limit
        end = start + limit
        tag_data = []

        tag_obj = WechatTag.query
        tags = tag_obj.slice(start, end)
        total = tag_obj.count()

        for i in tags:
            tag = {}
            tag['id'] = i.id
            tag['tag_name'] = i.tag_name
            tag['tag_en'] = i.tag_en
            tag['tag_summary'] = i.tag_summary
            tag['create_time'] = i.create_time
            tag_data.append(tag)

        return response_code.LayuiSuccess(message='查询成功!',
                                          data=tag_data,
                                          count=total)
예제 #17
0
 def get(self, version):
     print(g.user)
     user_id = g.user.uid
     user = Admin.query.get(user_id)
     data = {'username': user.username, 'sex': '男', 'role': '1'}
     return response_code.LayuiSuccess(data=data)
예제 #18
0
    def get(self, version):
        today = datetime.date.today()
        try:  # 当初始化的时候,后台不存在迁移的数据库。
            # if 1==1:
            wechat_article_num = WechatArticle.query.count()  # 文章数量
            tag_num = WechatTag.query.count()  # 分类数量
            account_num = WechatAccount.query.count()  # 微信数量
            comment_num = WechatArticleComment.query.count()  # 微信评论总数量
            article_task_num = WechatArticleTask.query.count()  # 公众号文章爬取任务数量
            to_grab_task_num = WechatArticleTask.query.filter_by(
                state=0).count()  # 待抓取公众号任务数量
            grabbed_task_num = WechatArticleTask.query.filter_by(
                state=1).count()  # 抓取完毕任务数量
            grabbing_task_num = WechatArticleTask.query.filter_by(
                state=2).count()  # 抓取中的任务数量
            contribution_num = TCommunityWechatAccount.query.with_entities(
                TCommunityWechatAccount.founder).distinct().count(
                ) - 1  # 贡献者人数总数量 -1位空白的人员
            grabbed_account_task = WechatAccountTask.query.filter(
                and_(
                    extract('year', WechatAccountTask.last_spider_time) == str(
                        today).split('-')[0],
                    extract('month', WechatAccountTask.last_spider_time) ==
                    str(today).split('-')[1],
                    extract('day', WechatAccountTask.last_spider_time) == str(
                        today).split('-')[2]), WechatAccountTask.is_zombie ==
                0).count()  # 今日已经采集过的公众号的数量(最后采集日期等于今日)
            account_task = WechatAccountTask.query.filter_by(
                is_zombie=0).count()  # 非僵尸号的数量
            account_is_zombie = WechatAccountTask.query.filter_by(
                is_zombie=1).count()  # 僵尸号的数量
        except Exception as e:
            print(e)
            wechat_article_num = 0
            tag_num = 0
            account_num = 0
            comment_num = 0
            article_task_num = 0
            to_grab_task_num = 0
            grabbing_task_num = 0
            grabbed_task_num = 0
            contribution_num = 0
            account_task = 0
            grabbed_account_task = 0
            account_is_zombie = 0

        b = account_task if account_task != 0 else 1
        loading = "%.2f%%" % (grabbed_account_task / b * 100)
        t_announcement = Announcement.query.filter(
            Announcement.flag == 1).order_by(
                Announcement.time.desc()).first()  # 公告信息
        t_account_num = TWechatAccount.query.count()  # 添加微信数量
        t_community_account_num = TCommunityWechatAccount.query.count(
        )  # 社区提交公众号数量
        t_community_account = TCommunityWechatAccount.query.filter(
            TCommunityWechatAccount.status == '0').count()  # 社区提交公众号未审核
        t_account_start_num = TWechatAccount.query.filter_by(
            status='start').count()  # 监控微信数量
        git_commit_num = GitCommit.query.count()  # github同步次数
        context = {
            # 'announcement': t_announcement,  # 公告展示
            'wechat_article_num': wechat_article_num,  # 微信文章数量
            'article_task_num': article_task_num,  # 公众号文章爬取总任务数量
            'to_grab_task_num': to_grab_task_num,  # 待抓取文章任务数量
            'grabbing_task_num': grabbing_task_num,  # 抓取中的任务数量
            'grabbed_task_num': grabbed_task_num,  # 抓取完毕任务数量
            't_community_account_num': t_community_account_num,  # 社区提交公众号数量
            't_account_num': t_account_num,  # 收录公众号数量
            'account_num': account_num,  # 有效公众号
            't_account_start_num': t_account_start_num,  # 当前监控微信数量
            'account_is_zombie': account_is_zombie,  # 异常公众号
            't_community_account': t_community_account,  # 社区提交公众号未审核
            'tag_num': tag_num,  # 分类数量
            'git_commit_num': git_commit_num,  # git同步次数
            'contribution_num': contribution_num,  # 参与贡献者的人数数量
            'loading': loading,
            'comment_num': comment_num,  # 评论数量
        }
        return response_code.LayuiSuccess(message='查询成功!',
                                          data=context,
                                          count=0)
예제 #19
0
    def get(self, version):
        form = ArticleListForm().validate_for_api()  # 验证表单
        page = int(form.page.data)
        limit = int(form.limit.data)
        date_end = form.date_end.data
        date_start = form.date_start.data
        flag = form.flag.data
        account_name = form.account_name.data
        title = form.title.data

        start = (page - 1) * limit
        end = start + limit

        article_data = []
        article_obj = WechatArticle.query
        # 条件查询
        if date_end:
            article_obj = article_obj.filter(
                WechatArticle.publish_time <= date_end)
        if date_start:
            article_obj = article_obj.filter(
                WechatArticle.publish_time >= date_start)
        if flag:
            article_obj = article_obj.filter(WechatArticle.flag == int(flag))
        if account_name or title:
            article_obj = article_obj.filter(
                and_(
                    WechatArticle.account.like("%" + account_name + "%"),
                    WechatArticle.title.like("%" + title + "%"),
                ))

        article_search = article_obj.order_by(
            WechatArticle.publish_time.desc())
        articles = article_search.slice(start, end)
        total = article_search.count()
        # 查询所有正在处于监听队列的数据做成字典
        for i in articles:
            # 查询是否原创:时间上可能会比较慢,看下线上情况
            wal = WechatArticleList.query.filter(
                WechatArticleList.sn == i.sn).first()
            if wal:
                if wal.copyright_stat == 11:
                    copyright_stat = '原创'
                elif wal.copyright_stat == 100:
                    copyright_stat = '未声明'
                elif wal.copyright_stat == 201 or wal.copyright_stat == 101:
                    copyright_stat = '转载'
                else:
                    copyright_stat = wal.copyright_stat
                del_flag = wal.copyright_stat
            else:
                copyright_stat = '未知'
                del_flag = '未知'

            article = {}
            article['id'] = i.id
            article['account'] = i.account
            article['title'] = i.title
            article['url'] = i.url
            article['author'] = i.author
            article['digest'] = i.digest
            article['cover'] = config.base_config.IMG_CDN + i.cover
            # article['content_html'] = filter_html(i.content_html)  # 做处理
            article['copyright_stat'] = copyright_stat
            article['del_flag'] = del_flag
            article['source_url'] = i.source_url
            article['comment_id'] = i.comment_id
            article['publish_time'] = str(i.publish_time)
            article['spider_time'] = str(i.spider_time)
            article['flag'] = i.flag
            article_data.append(article)

        return response_code.LayuiSuccess(message='查询成功!',
                                          data=article_data,
                                          count=total)