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)
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='修改失败!')
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)
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)
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)
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')
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)
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)
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='修改失败!')
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)
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)
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)
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)
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)
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)
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)
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)