NolanGit / PersonalHomepage

使用Vue.js、Element UI作为前端,Python、Flask提供后端接口的一个前后端分离的导航页。Keywords:导航|主页|天气|书签|便签|翻译|苹果商店|App Store|价格监控|黄金|股票|基金|必应壁纸|热门新闻聚合|爬虫|网盘|图床|权限管理|短链接生成|异步脚本运行
Mozilla Public License 2.0
286 stars 64 forks source link
element-ui flask flask-api flask-application flask-web python python3 vue vuejs

一个导航页🗺

功能

screenshot

特性

部署

代码结构

目录 内容
/backend 后端代码
/backend/run.py 后端入口文件
/frontend 前端代码
/dist 前端编译的产物
/upload 存储用户上传的文件
/wallpapers 存储爬取的必应壁纸

可以点击这里来使用vscode临时查阅代码


介绍

搜索

入口:主页

功能:输入内容后跳转到搜索网址,进入页面焦点自动置于搜索框内,输入文字可以带出提示(需要在数据表search_engines中配置相应引擎的回调函数,增减引擎的话同样是在数据库中增加数据)

image

控制台

入口:登陆后左上角hover用户名-控制台

功能:提供在console表中注册的前端组件入口,方便日后权限控制或进行排序等操作,如需增加前端模块,除了编写前端业务外,还需要在console表中增加一条记录

image

控制台-脚本运行平台

入口: 登陆后左上角hover用户名-控制台-脚本运行平台。

功能: 用于后台程序的统一驱动。前端表单均由配置产生,无需接触前端代码,通过填写配置生成的表单来提交脚本至后端运行脚本,并展示运行结果,而且具有定时运行脚本、对以前运行的任务进行回放、记录运行耗时、记录运行日志、定制运行记录表格等人性化功能

注意:

  1. 为了使作为html展示的运行结果正确展示空格数量,输出的所有空格都会被替换为"\ ",如果需要在输出中真正输出空格,则脚本输出的空格必须使用"# "来代替空格,如:自己组装html标签并增加样式的时候,标签中就必须有空格,所以需要使用"\<table# border="1">"代替"\<table border="1">"
  2. 定时任务需要配置"\backend\app\script\schedule_monitor.sh"为定时运行,因为系统默认可以配置的最短的定时运行间隔为五分钟,所以此定时任务的运行步长最好设置为五分钟

模块:

image

image

image

控制台-账户和权限

入口:登陆后左上角hover用户名-控制台-账户和权限

功能:使用"用户-角色-权限"模型编写的接口层级的权限控制系统,接口使用一个装饰器即可以对权限进行控制。默认用户请求接口时,请求IP必须与登录时使用的IP一致,这是一种较为严格的策略,在"/backend/app/privilege/privilege_control.py:24"可以关闭

模块:

image

控制台-小组件编辑器

入口:登陆后左上角hover用户名-控制台-修改主页组件

功能: 拖拽来修改主页显示的方式。组件的父级定义为"组件集",当有且只有一个组件集的时候,页面不展示组件集标题,仅展示它所包含的组件,当有两个及两个以上的组件集时,展示组件集及其所包含的组件

按钮:使用左右拖拽的方式来编辑组件集的顺序,使用组件集右侧圆形加号按钮来添加组件集,使用每个组件集内部的编辑按钮来修改组件集的名称,使用每个组件集内部的删除按钮来删除组件集;组件集内的组件使用上下拖拽的方式来编辑顺序,使用每个组件集内的方形加号按钮来添加组件,使用组件右侧的删除按钮来删除组件。组件详情不支持修改,可以手动改库(widget)来对其进行修改

image

网盘&图床

入口:登陆后左上角hover用户名-网盘/图床

网盘:

图床:

image

小组件-天气

如不登录则展示IP所在地的天气信息(受限于第三方API,IP位置为国外时,支持不好),登录后可以进行自定义,展示范围为IP+自定义位置的信息。此外,当请求数据时,为了保障速度,首先会使用缓存,缓存数据有效期为3小时(在\backend\app\weather\weather_function.py:16修改),如果没有有效缓存,则会请求外部API以获取数据并存为缓存

按钮:新增-登录后新增城市;排序-可拖动对自定义的城市进行排序或删除;推送-推送有三种异常天气可选,分别为雨雪天气、温度骤升/骤降、空气质量,且需要推送到位置和展示的位置是独立的,可以分别设置

image

小组件-书签

登陆后可以自定义,不登录时展示的书签是在数据库中修改(bookmarks.user_id==0)

按钮:新增-登陆后新增书签;设置-登陆后拖动排序、删除或修改书签的图标

image

小组件-App Store应用价格监控

查找苹果软件商店的应用并监控其价格,当小于设定的阈值时,提醒用户。

image

小组件-便签

记录便签,并可以定时推送便签内容到微信/邮件。由于不想把功能做的太复杂,提交的推送是不允许撤销的,但可以多次设置,即:设置的推送可以随意加但不能减。此外,便签还可以通过"时间机器"回滚至之前的版本,适用于误删等情况。

按钮:鼠标hover省略号,可以弹出三个按钮:编辑和删除-对选中的便签进行编辑或删除,提交后将所有便签保存为一个新版本;提醒-点击后弹出编辑提醒对话框,可以通过微信/邮件的方式提醒便签内容,最小颗粒度为五分钟。下方的圆形按钮分别为新增按钮和时间机器按钮,功能不再赘述

image

小组件-翻译

使用translators实现,使用的是阿里的服务,当在左侧输入区输入文字后,一段间隔后,会根据上方选择的语言进行翻译。

image

小组件-必应每日壁纸

系统使用「脚本运行平台」驱动脚本来每天爬取一张必应壁纸,小组件上则滚动展示7天内的壁纸,点击图片可以下载原图。

image

小组件-黄金价格

监控黄金价格,并且可以设定阈值,当价格超过阈值时发送提醒。需要在"脚本运行平台"中配置定时任务,爬虫在爬取数据的时候会跳过国内黄金不开盘的时间。

image

小组件-股票

爬取沪深股市、港股、美股股票数据,并可以设置超过阈值后提醒功能。

image

小组件-基金

爬取基金数据,并可以设置超过阈值后提醒功能。

image

小组件-新闻

聚合20几个网站的信息,通过定时任务每小时采集一次,并可以通过点击标题来进行手动刷新,部分内容截图如下。

image

注意:截至2020年11月,百度微博煎蛋搜狗明确禁止个人用户爬取任何信息,请在运行项目时严格删除相关代码。

由于网站规则可能变动,请在运行项目时依次检查本项目使用的数据源,当robots协议禁止个人用户爬取时,删除相关代码!

遵守robots协议,遵守爬虫道德,建立更好的互联网环境。

致谢

💖本项目的开发依赖的大量的优秀开源项目以及网站服务:

使用缓存数据和限制频次等方法对代码进行了优化,以避免爬取数据对网站造成较大的压力。

所获得数据仅供学习参考使用,如有侵权,请立即联系删除。

联系方式

📧邮箱:shr1213@live.com

捐赠

🥳如果本项目对你有启发或帮助,不妨支持一下开发者

支付宝红包 支付宝 微信

License

MPL-2.0